本文整理汇总了PHP中devildrey33类的典型用法代码示例。如果您正苦于以下问题:PHP devildrey33类的具体用法?PHP devildrey33怎么用?PHP devildrey33使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了devildrey33类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的PHP代码示例。
示例1: devildrey33
<?php
include "../Web/devildrey33.php";
$Base = new devildrey33();
$META = '<meta name="description" content="Resaltar sintaxis de un código fuente (C/C++, PHP, HTML, JavaScript, CSS) para PHP">' . Intro() . '<meta name="keywords" content="Resaltador de código, Resaltador de sintaxis, Dar formato código, Pintar código, Pintar código fuente, Resaltar código, Resaltar código fuente, Marcar código, Resaltar sintaxis">';
$Titulo = "Resaltar sintaxis de un código fuente";
$Base->InicioPlantilla(basename(__FILE__), $Titulo, $META);
$Base->InicioBlog(basename(__FILE__), $Titulo);
?>
<p>Uno de los primeros problemas que me encontré al empezar esta web en el 2009 fue la necesidad de mostrar código fuente de varios lenguajes resaltando su sintaxis.</p>
<p>Al investigar sobre el tema, me di cuenta que la mayoría de soluciones (por lo menos las mas aceptables) estaban hechas con JavaScript. Lo que al final con el tiempo me llevo a crearme mi propia herramienta para remarcar la sintaxis en php, ya que yo consideraba mejor hacer el parsing en php y guardarlo en archivos "cache", de forma que solo se realizaba el parsing si la fecha de modificación del archivo cache era inferior a la fecha de modificación del archivo de código.</p>
<p>Por el 2011 publique varias entradas en el blog sobre el tema de remarcar sintaxis en php, en las que explicaba como parsear determinados lenguajes y resaltar su sintaxis :
<a href='/Blog/ColorearCodigoPHP_XML'>Colorear código XML</a>,
<a href='/Blog/ColorearCodigoPHP_CSS'>Colorear código CSS</a>,
<a href='/Blog/ColorearCodigoPHP_JavaScript'>Colorear código JavaScript</a>,
<a href='/Blog/ColorearCodigoPHP_PHP'>Colorear código PHP</a>,
<a href='/Blog/ColorearCodigoPHP_CPP'>Colorear código C/C++</a>,
<a href='/Blog/ColorearCodigoPHP_HTML'>Colorear código HTML</a>.
Al final dichas entradas del blog acabaron fusionadas para formar el objeto devildrey33_PintarCodigo.
</p>
<p>Hace cosa de un par de meses se me metió en la cabeza que necesitaba poder resaltar ciertas líneas de código con enlaces parecidos a un link. Y esto me llevo a re-escribir prácticamente por completo el objeto devildrey33_PintarCodigo. El resultado, es que ahora se pueden resaltar <linea cid='HTML' l='4'>una</linea> o <linea cid='HTML' l='6,7,8,9,14,15,22,23,24'>varias</linea> líneas de código pasando por encima de los enlaces. Si la línea no está visible en la pantalla, al hacer click en el enlace <linea cid='HTML' l='38'>nos lleva hasta ella</linea>.</p>
<?php
/* -[INICIO devildrey33.HTML]-
<!DOCTYPE HTML>
开发者ID:devildrey33,项目名称:devildrey33,代码行数:31,代码来源:resaltar-sintaxis-codigo-fuente.php
示例2: devildrey33
<?php
/* include("devildrey33.php");
$Base = new devildrey33(devildrey33_TipoPlantilla::Articulo, basename(__FILE__));
$Base->InicioPlantilla("Devildrey33 Windows Library");*/
include "../Web/devildrey33.php";
$Base = new devildrey33();
$META = '<meta name="description" content="Devildrey33 Windows Library">
<meta name="keywords" content="DWL, Devildrey33 Windows Library">';
$Base->InicioPlantilla(basename(__FILE__), "Devildrey33 Windows Library", $META);
$Base->InicioBlog(basename(__FILE__), "Devildrey33 Windows Library");
?>
<!-- INTRODUCCION -->
<p>Esta librería es la base para la mayoría de aplicaciones desarrolladas por Josep Antoni Bover. Fue creada en el año 2002 ante la necesidad de tener controles fuera del look estandar de windows xp, y tambien para facilitarme la vida a la hora de crear aplicaciones bajo windows.</p>
<p>En los tiempos actuales en los que ya se va normalizando el uso de Windows 7 y windows xp va desapareciendo, esta libreria ha empezado a perder su utilidad. Pero de todas formas es un excelente ejemplo de como programar desde cero controles como el ListView, TreeView, PopupMenu, Button, etc... sin utilizar nada de los controles estandar de windows.</p>
<!-- FIN_INTRODUCCION -->
<p>Se podria decir que el estilo a la hora de controlar eventos es bastante parecido al MFC, y personalmente me ha servido para aprender muchisimo sobre el API de windows.</p>
<h2>DWLArbolEx</h2>
<img src="../Web/Graficos/DWLArbolEx.png" style="float:right;" alt="DWLArbolEx" />
<p>Control que simula un TreeView de windows, con algunas particularidades :</p>
<ul>
<li>Scrolls propios completamente personalizables en apariencia.</li>
<li>Posibilidad de añadir botones en las barras de scroll.</li>
<li>SubSeleccion (cuando seleccionamos un nodo padre, todos los hijos quedan SubSeleccionados).</li>
<li>Posibilidad de añadir una imagen de fondo, y que quede translucida debajo de los nodos.</li>
<li>Colores de los nodos totalmente personalizables de forma individual (Fondo y Texto : Normal, Resaltado, Seleccionado, SubSeleccionado, Presionado. ademas del Borde.)</li>
<li>Efectos de resaltado tanto en los nodos como en el borde del control, como en los scrollbars.</li>
<li>Fuentes independientes para cada nodo, utilizando HFONTS previamente cargados en memoria.</li>
<li>Funciones virtuales que permiten re-emplazar practicamente cada fase de pintado.</li>
开发者ID:devildrey33,项目名称:devildrey33,代码行数:31,代码来源:DWL.php
示例3: devildrey33
<?php
/* include("devildrey33.php");
$Base = new devildrey33(devildrey33_TipoPlantilla::Articulo, basename(__FILE__));
$Base->InicioPlantilla("Conversor UTF8 - Windows1252");*/
include "../Web/devildrey33.php";
$Base = new devildrey33();
$META = '<meta name="description" content="UTF8 a Windows1252">
<meta name="keywords" content="Conversor UTF8 a CP1252">';
$Base->InicioPlantilla(basename(__FILE__), "Conversor UTF8 - Windows1252", $META);
$Base->InicioBlog(basename(__FILE__), "Conversor UTF8 - Windows1252");
?>
<!-- INTRODUCCION -->
<p>Este 'conversor' es una aplicación que me facilita la vida a la hora de convertir archivos de código <b>cpp</b> y <b>h</b> recursivamente de una codificación a otra.</p>
<p>Lo bueno que tiene esta aplicación es que convierte recursivamente todos los archivos de código que pueda contener un directorio (incluyendo sus subdirectorios).</p>
<p>Por otra parte no tiene interface grafico, y es una simple aplicación de consola. Además guarda los archivos originales con la extensión .OLD</p>
<!-- FIN_INTRODUCCION -->
<p>Este proyecto consiste en dos simples aplicaciones que convierten todos los archivos C, Cpp y H del directorio donde se encuentren ubicados los ejecutables.</p>
<p>La razón principal por la que se creó el proyecto es porque la mayoría de mi código en C/C++ se ha creado bajo VisualStudio, y este por defecto guarda todos los archivos bajo la codificación Windows-1252 en mi PC. El problema viene cuando hay que documentar un código utilizando Doxygen, e incluir esta documentación en un sitio web el cual trabaja con la codificación UTF8.</p>
<p>En principio no es un problema muy grave si el código consiste en un par de archivos, ya que desde el mismo VisualStudio se puede cambiar la codificación de los archivos, pero por ejemplo con la <a href="DWL.php">DWL</a> existen más de 175 archivos de código, y cambiar la codificación uno a uno puede terminar en una tarde tediosa, que además puede acabar siendo una pérdida de tiempo total.</p>
<p>Por ello acabe por hacer este proyecto que consiste en 2 aplicaciones : <strong>UTF8aWindows1252.exe</strong> y <strong>Windows1252aUTF8.exe</strong></p>
<p>Lo que hacen es bastante simple, ya que escanean recursivamente el directorio donde se encuentran los ejecutables, y todos los archivos que encuentran con la extensión C, CPP y H son leídos en memoria y re-escritos a la codificación que se requiera.</p>
<p>Por razones de seguridad los archivos originales se renombran añadiéndoles la extensión .OLD de forma de que si hay algún problema puedan ser recuperados.</p>
<p>El código fuente viene todo en el archivo <strong>UTF8aWindows1252.cpp</strong> para los dos conversores.</p>
<p>La cosa es simple, si deseas compilar el conversor UTF8 a Windows1252, el principio del archivo <strong>UTF8aWindows1252.cpp</strong> debería quedar así :</p>
<?php
/* -[INICIO devildrey33.IDC1]-
开发者ID:devildrey33,项目名称:devildrey33,代码行数:31,代码来源:Conversor_UTF8_Windows1252.php
示例4: devildrey33
<?php
include "../Web/devildrey33.php";
$Base = new devildrey33();
$META = '<meta name="description" content="Working with google APIs">' . Intro() . '<meta name="keywords" content="google api, google apis">';
$Base->InicioPlantilla(basename(__FILE__), "Working with google APIs", $META);
$Base->InicioBlog(basename(__FILE__), "Working with google APIs", TRUE);
/* TRUE = imatge a la dreta */
$File_Source_1 = '../Codigo/GoogleAPI/simple_gAPI_example_empty.html';
$File_Source_2 = '../Codigo/GoogleAPI/simple_gAPI_example.html';
?>
<script type="text/javascript">
$Base.CargarCSS('Barba_Posts.css');
</script>
<!-- <div style="display: inline-block; margin-bottom: 30px;"> -->
<p>We’ve already seen <a href="how-to-use-google-app-scripts" target="_blank">how to develop a whole web app using the "Web App Scripts"</a>.</p>
<p>However, many times we would like to keep our web app into another place/server, or just connect an existing web app with the google services, so in this case we must use the google APIs to interact with the google services.</p>
<p>We're going to split this explanation in 2 parts:</p>
<ul>
<li><b>Grant access to the APIs</b></li>
<li><b>Access the API</b> (authorization and methods to access)</li>
</ul>
<p>The first part is common, and you would need to set it whatever type of client access you'd like to use. The second, though, can be implemented in many languages, as well as in the client or the server side. Here we're going to focus on how to implement it with javascript. Let’s see how to do it.</p>
<!-- </div> -->
<h2>Grant access to the APIs</h2>
开发者ID:devildrey33,项目名称:devildrey33,代码行数:31,代码来源:working-with-google-apis.php
示例5: devildrey33
<?php
include "devildrey33.php";
$Base = new devildrey33();
$HEAD = "";
$Base->InicioPlantilla(basename(__FILE__), "Logs de acceso", $HEAD);
if (devildrey33_Opciones::Administrador() > 0) {
echo "<article class='Blog'>";
phpinfo();
echo "</article>";
} else {
echo "<script>\$Base.MostrarErrorAjax(404, true);</script>";
echo "<script>\$Admin.Desloguear();</script>";
}
$Base->FinPlantilla();
开发者ID:devildrey33,项目名称:devildrey33,代码行数:15,代码来源:phpinfo.php
示例6: devildrey33
<?php
/* include("devildrey33.php");
$Base = new devildrey33(devildrey33_TipoPlantilla::Articulo, basename(__FILE__));
$Base->InicioPlantilla("Instalar Ubuntu bajo VirtualBox en Windows");*/
include "../Web/devildrey33.php";
$Base = new devildrey33();
$META = '<meta name="description" content="Ubuntu bajo VirtualBox">
<meta name="keywords" content="Ubuntu virtualbox">';
$Base->InicioPlantilla(basename(__FILE__), "Instalar Ubuntu bajo VirtualBox en Windows", $META);
$Base->InicioBlog(basename(__FILE__), "Instalar Ubuntu bajo VirtualBox en Windows");
?>
<!-- INTRODUCCION -->
<p>VirtualBox es una aplicación que nos permite instalar sistemas operativos con el hardware emulado dentro de nuestro sistema operativo. Dicho así suena un poco confuso, por lo que vamos a imaginarnos que queremos instalar una versión de linux en nuestra máquina, pero queremos ver este linux dentro de una ventana de windows. Pues esto es lo que hace VirtualBox.</p>
<p>También hay que remarcar que lo podemos hacer al revés, es decir, desde nuestro linux nativo instalar windows para que se muestre en una ventana de linux.</p>
<p>De todas formas la intención de este tutorial es servir como base para luego poder hacer algunos tutoriales programando con el protocolo X11 server (dicho de forma burda programar aplicaciones con entorno gráfico para linux)</p>
<!-- FIN_INTRODUCCION -->
<ul style="clear:both">
<li>1 <a href='#InstalarVBox'>Instalación de VirtualBox</a></li>
<li>2 <a href='#ConfigurarVbox'>Creación y configuración de una máquina virtual</a></li>
<li>3 <a href='#InstalarUbuntu'>Instalación de Ubuntu</a></li>
<li>4 <a href='#ConfigurarUbuntu'>Configuración de Ubuntu</a></li>
</ul>
<p>El primer paso será descargar las últimas versiones de Virtual Box y de Ubuntu :</p>
<p>Para empezar iremos descargando la ultima ISO de Ubuntu ya que son alrededor de 700mb y es lo que más tardara : <a href="http://www.ubuntu.com/download/ubuntu/download">Descargar Ubuntu</a>.</p>
<div class='nota'>Podéis elegir la versión que mas os guste siempre que sea de 32 bits, yo personalmente elegiría la última versión 11.04 en 32 bits. Con mi portátil por ejemplo me he encontrado que al hacer la prueba con el Ubuntu de 64bits no me reconocía capacidades de 64bits, mientras que en mi ordenador de sobremesa la cosa ha funcionado perfectamente con la de 64bits.</div>
<img src='../Web/Graficos/DownloadUbuntu.png' alt='Descargar Ubuntu' />
<p>En segundo lugar descargaremos el instalador de VirtualBox para windows desde este enlace : <a href="https://www.virtualbox.org/wiki/Downloads">Descargar VirtualBox</a>.</p>
开发者ID:devildrey33,项目名称:devildrey33,代码行数:31,代码来源:InstalarUbuntuVirtualBox.php
示例7: devildrey33
<?php
/* include("devildrey33.php");
$Base = new devildrey33(devildrey33_TipoPlantilla::Articulo, basename(__FILE__));
$Base->InicioPlantilla("Tutorial WinAPI C++ 3.6 (Creación del ObjetoProgressBar)");-*/
include "../Web/devildrey33.php";
$Base = new devildrey33();
$META = '<meta name="description" content="Tutorial WINAPI">
<meta name="keywords" content="WINAPI C++, WINAPI, C++">';
$Base->InicioPlantilla(basename(__FILE__), "Tutorial WinAPI C++ 3.6 (Creación del ObjetoProgressBar)", $META);
$Base->InicioBlog(basename(__FILE__), "Tutorial WinAPI C++ 3.6 (Creación del ObjetoProgressBar)");
?>
<!-- INTRODUCCION -->
<p>Estareis pensando... pero bueno, si ya hemos hecho nuestro propia barra de progreso hace 5 tutoriales... pues si.. pero creo interesante que tambien veais el funcionamiento del ProgressBar de windows.</p>
<p>Pues nada, vamos a hacer lo mismo que en los anteriores controles estandar y encapsularemos en una clase que tendrá de nombre ObjetoProgressBar, y que heredara de ObjetoControlEstandar (La clase ObjetoControlEstandar se describe en el tutorial <a href="/Blog/Tutorial_WINAPI_3_3">3.3 Creación del ObjetoEditBox</a>).</p>
<!-- FIN_INTRODUCCION -->
<p> Veamos su declaración :</p><div style="clear:both"></div>
<?php
$Base->PintarCodigo->PintarArchivoC("IDObjetoProgressBar", "Archivo : ObjetoProgressBar.h", "../Codigo/Tutoriales_WinAPI/Objetos Tutorial/ObjetoProgressBar.h", "ObjetoProgressBar");
?>
<p>Lo primero que vemos es una función para crear la ProgressBar, después tenemos varias funciones para asignar / obtener el mínimo, el máximo y el valor de la barra, que son : AsignarRango, ObtenerRagon, Mínimo, Máximo y Valor.</p>
<p>Veamos la función CrearProgressBar :</p>
<?php
$Base->PintarCodigo->PintarArchivoC("IDCrearProgressBar", "Archivo : ObjetoProgressBar.cpp", "../Codigo/Tutoriales_WinAPI/Objetos Tutorial/ObjetoProgressBar.cpp", "ObjetoProgressBar::CrearProgressBar");
?>
<p>Lo primero que se hace es llamar a la función ObjetoIniciarCommonControls::Iniciar. Esta función llama a la API <a href="http://msdn.microsoft.com/en-us/library/bb775697(VS.85).aspx" target="_blank">InitCommonControlsEx</a> para iniciar los controles estándar de windows para nuestra aplicación. Al iniciar los CommonControlEx podemos utilizar controles que no son estandar de windows 95, y adoptar el aspecto grafico del sistema operativo (siempre que la aplicacion tenga su archivo .manifest).</p>
<p>Lo segundo que se hace es llamar a la API <a href="http://msdn.microsoft.com/en-us/library/ms632680(VS.85).aspx" target="_blank">CreateWindowEx</a> con el segundo parámetro "PROGRESS_CLASS" (que es una macro para identificar la clase). Esto hace que el control creado se convierta en un PROGRESSBAR. </p>
<p>Lo siguiente es llamar a la función _ConectarControl, que re-emplazara el WindowProcedure de la ProgressBar por el nuestro.</p>
开发者ID:devildrey33,项目名称:devildrey33,代码行数:31,代码来源:Tutorial_WINAPI_3_6.php
示例8: date
$Fecha = date("d/m/Y", filemtime("CSS_BD.php"));
echo "<br /><div class='devildrey33_Nota'>" . CSSTipo::Plural($TipoSalida) . " documentadas : <b>" . $Documentadas["Documentadas"] . "/" . $Documentadas["Total"] . "</b><br />Modificado por última vez : <i>" . $Fecha . "</i>.</div>";
$Base->FinBlog();
$Base->FinPlantilla();
} elseif ($TipoSalida == eTipo::RaizCSS) {
$Base = new devildrey33();
$META = '<meta name="description" content="Referencia css, Ejemplos css">' . '<meta name="keywords" content="CSS">' . '<meta name="robots" content="index, follow">';
$Base->InicioPlantilla(basename(__FILE__), "Referéncia CSS", $META);
$Base->InicioDoc(basename(__FILE__), "Referéncia CSS");
echo '<br />' . '<div><a href="/Doc/CSS/Colores/">Colores</a></div>' . '<div><a href="/Doc/CSS/Degradados/">Degradados</a></div>' . '<div><a href="/Doc/CSS/Unidades/">Unidades</a></div>' . '<div><a href="/Doc/CSS/Propiedades/">Propiedades</a></div>' . '<div><a href="/Doc/CSS/Funciones/">Funciones</a></div>' . '<div><a href="/Doc/CSS/Reglas/">Reglas</a></div>' . '<div><a href="/Doc/CSS/Selectores/">Selectores</a></div><hr />';
$CSS_BD = new CSS_BD();
$Documentadas = $CSS_BD->MostrarTodo();
$Fecha = date("d/m/Y", filemtime("CSS_BD.php"));
echo "<br /><div class='devildrey33_Nota'>Proporción de la documentación terminada : <b>" . $Documentadas["Documentadas"] . "/" . $Documentadas["Total"] . "</b><br />Modificado por última vez : <i>" . $Fecha . "</i>.</div>";
echo "<hr />";
$Base->FinBlog();
$Base->FinPlantilla();
} elseif ($TipoSalida == eTipo::RaizDoc) {
$Base = new devildrey33();
$META = '<meta name="robots" content="index, follow">';
$Base->InicioPlantilla(basename(__FILE__), "Documentación", $META);
$Base->InicioDoc(basename(__FILE__), "Documentación");
echo '<br />' . '<div><a href="/Doc/CSS/">CSS</a></div>' . '<div><a href="/Doc/DWL/">DWL</a></div>';
$Base->FinBlog();
$Base->FinPlantilla();
}
}
?>
开发者ID:devildrey33,项目名称:devildrey33,代码行数:28,代码来源:Doc_ParseadorUrl.php
示例9: devildrey33
<?php
include "../Web/devildrey33.php";
$Base = new devildrey33();
$META = '<meta name="description" content="Virus fotos 05/06">' . Intro() . '<meta name="keywords" content="Virus fotos 05/06, Virus email fotos 05/05, Email fotos 05/06">' . Intro();
$Base->InicioPlantilla(basename(__FILE__), "Aplicación para eliminar el virus "Fotos 05/06"", $META);
$Base->InicioBlog(basename(__FILE__), "Aplicación para eliminar el virus "Fotos 05/06"");
/*
include("devildrey33.php");
$Base = new devildrey33(devildrey33_TipoPlantilla::Articulo, basename(__FILE__));
$Base->InicioPlantilla("Aplicación para eliminar el virus "Fotos 05/06"");*/
?>
<!-- INTRODUCCION -->
<p>En el verano del 2010 aparecio un virus que se propagaba por el correo electronico con el asunto "fotos 05/06" el cual mostraba una fotografia a un tamaño muy reducido y que al clickar encima de ella nos descargaba un archivo que se llama "foto28_.com". Si lllegabamos a ejecutar este archivo la máquina quedaba infectada por este virus, que entre otras cosas se dedica a enviar a todos nuestros contactos del messenger el mismo correo por tal de expandirse.</p>
<p>En principio este virus no tiene mucho de extraordinario a comparacion de otros, pero me toco la moral porque varios de mis contactos se infectaron, y me enviaban más copias del virus sin que ellos se dieran cuenta. Entre esos contactos que me enviaban el virus estaban mi padre y mi hermana, con lo que practicamente tenia asegurado el tener que desplazarme para eliminar el virus de sus maquinas.... pero como en el verano del 2010 hacia mucha calor, se me ocurrio que podria hacer una aplicacion que eliminara el virus y asi me ahorraria el desplazamiento y me quedaria tan fresco en casa.</p>
<!-- FIN_INTRODUCCION -->
<p>Al final inverti varias horas en la creacion de esta aplicacion, y aparte de ayudar a mis familiares, tambien lo colgue en mi web, y de esta forma mi aplicacion a pesar de costarme unas horas de trabajo hizo un gran servicio a muchos internautas afectados.</p>
<h3>Observaciones</h3>
<ul>
<li>El virus crea una carpeta oculta llamada 'cmos' en la raiz de la unidad donde tenemos instalado el windows</li>
<li>Si existe conexion a internet, al ejecutarse por primera vez, se descarga varios archivos de algun otro sitio (que no me he molestado a averiguar), en caso de no tener conexion a internet solo crea la carpeta 'cmos' sin ocultarla.</li>
<li>Una vez descargado el virus se crean cinco archivos : "?:\cmos\id", "?:\cmos\xlb.cpl", "?:\cmos\xln.cpl", "?:\cmos\xlr.exe", y "?:\cmos\xlr2.exe" </li>
<li>De los archivos que se crear, se enlazan cuatro al registro de windows de forma que se arranquen al iniciar el sistema.</li>
<li>El archivo original del virus es un archivo COM de 64ks que solo tiene codigo para descargar el resto del virus y enlazarlo al sistema.</li>
<li>Una vez el virus se encuentra activo, tus contactos recibiran correos iguales a la foto que se ve más arriba.</li>
</ul>
开发者ID:devildrey33,项目名称:devildrey33,代码行数:31,代码来源:Antivirus_Fotos0506.php
示例10: devildrey33
<?php
/*include("devildrey33.php");
$Base = new devildrey33(devildrey33_TipoPlantilla::Articulo, basename(__FILE__));
$Base->InicioPlantilla("Tutorial WINAPI C++ 1.3 (Creación de un ObjetoVentana)");*/
include "../Web/devildrey33.php";
$Base = new devildrey33();
$META = '<meta name="description" content="Tutorial WINAPI">
<meta name="keywords" content="WINAPI C++, WINAPI, C++">';
$Base->InicioPlantilla(basename(__FILE__), "Tutorial WINAPI C++ 1.3 (Creación de un ObjetoVentana)", $META);
$Base->InicioBlog(basename(__FILE__), "Tutorial WINAPI C++ 1.3 (Creación de un ObjetoVentana)");
?>
<!-- INTRODUCCION -->
<p>Este es el primer punto interesante del tutorial, como encapsular una ventana en una clase que podamos heredar y modificar a nuestro antojo.</p>
<p>La idea es tener una clase que podamos heredar, y que a partir de ella podamos crear distintos modelos de ventana, sin tener que re-escribir mucho código.</p>
<p> En especial este tutorial nos demostrara como crear varias ventanas del mismo tipo re-utilizando el mismo objeto.</p>
<!-- FIN_INTRODUCCION -->
<p>Para empezar el problema más importante que se nos presenta es que la función WindowProcedure debe ser estática, y esto no nos interesa, ya que esta función es la primera que necesitaremos sobre-escribir. Además esto también nos produciría algún que otro problema cuando intentásemos acceder a miembros de la misma clase no estáticos.</p>
<p>La solución más viable es enlazar ese WindowProcedure estático a otra función no estática que además será virtual. De esta forma queda solucionado el problema más grave a la hora de diseñar esta clase, aunque sea a costa de otro callback más dentro del WindowProcedure.</p>
<p>Otra cosa que debemos pensar es que un control es básicamente una ventana, pero no tiene porqué tener las mismas funciones, así que estaría bien crear un modelo base para ventanas y controles. A partir de este modelo ya podremos crearnos ventanas y controles más específicos.</p>
<p>Veamos como quedaría estructurada la cosa : </p>
<?php
$Base->PintarCodigo->PintarArchivoC("IDPlantillaEventos", "Archivo : PlantillaEventos.h", "../Codigo/Tutoriales_WinAPI/Objetos Tutorial/PlantillaEventos.h", "PlantillaEventos");
?>
<p>Para empezar creamos una plantilla destinada a controlar todos los eventos de una ventana. Esta plantilla depende del TIPO_DEVUELTO que por norma sera LRESULT pero puede ser BOOL en caso de los dialogos, y retornara VALOR_DEVUELTO en los mensajes por defecto (que sera 0 para casi todo, menos para los controles estandar de windows).</p>
<p>Aunque no veamos el codigo de GestorMensajes, hay que destacar que el GestorMensajes debera retornar VALOR_DEVUELTO si se ha procesado el evento en este GestorMensajes, o USAR_GESTOR_POR_DEFECTO si no se ha procesado ninguno de nuestros eventos. Al devolver USAR_GESTOR_POR_DEFECTO le estamos diciendo al _GestorMensajes estatico que devuelva el WindowProcedure por defecto.</p>
<p>Si creamos cualquier control que mande eventos a su ventana padre, aqui seria donde deberiamos definir dicho evento. Ahora veamos el ObjetoHWND :</p>
<?php
$Base->PintarCodigo->PintarArchivoC("IDObjetoHWND", "Archivo : ObjetoHWND.h", "../Codigo/Tutoriales_WinAPI/Objetos Tutorial/ObjetoHWND.h", "ObjetoHWND");
开发者ID:devildrey33,项目名称:devildrey33,代码行数:31,代码来源:Tutorial_WINAPI_1_3.php
示例11: devildrey33
<?php
/* include("devildrey33.php");
$Base = new devildrey33(devildrey33_TipoPlantilla::Articulo, basename(__FILE__));
$DeclaracionesHeadExtras = '
';
$Base->InicioPlantilla("Tutorial HTML5 Canvas2D parte 3 (degradado lineal)", $DeclaracionesHeadExtras); */
include "../Web/devildrey33.php";
$Base = new devildrey33();
$META = '<meta name="description" content="Tutorial HTML5 Canvas2D parte 3">
<meta name="keywords" content="HTML5 Canvas2D, Canvas2D">';
$Base->InicioPlantilla(basename(__FILE__), "Tutorial HTML5 Canvas2D parte 3 (degradado lineal)", $META);
$Base->InicioBlog(basename(__FILE__), "Tutorial HTML5 Canvas2D parte 3 (degradado lineal)");
?>
<script type="text/javascript">
function PintarDegradados() {
// Inicializo el canvas
var Canvas = document.getElementById("canvas");
if (Canvas.getContext) { Context = Canvas.getContext("2d"); }
else { alert("Tu navegador no soporta el objeto canvas!"); return; }
// Pinto el fondo gris claro
Context.fillStyle = "#EEEEEE";
Context.fillRect(0, 0, Context.canvas.width, Context.canvas.height);
// Creo los degradados lineales
// -[INICIO devildrey33.vertical]-
var GradientVertical = Context.createLinearGradient(0, 20, 0, 80);
开发者ID:devildrey33,项目名称:devildrey33,代码行数:31,代码来源:Canvas2D_3.php
示例12: devildrey33
/*
<!--[INICIO devildrey33.HTML]-->
<div class='Bola_Expandible' style='background-color:red;'>
<div class='Bola_Expandible_Texto'>Rojo</div>
</div>
<div class='Bola_Expandible' style='background-color:green;'>
<div class='Bola_Expandible_Texto'>Verde</div>
</div>
<div class='Bola_Expandible' style='background-color:blue;'>
<div class='Bola_Expandible_Texto'>Azul</div>
</div>
<!--[FIN devildrey33.HTML]-->
*/
// $Base->InicioPlantilla("CSS3 : Efecto bola expandible", $DeclaracionesHeadExtras);
include "../Web/devildrey33.php";
$Base = new devildrey33();
$META = '<meta name="description" content="CSS3 Bola expandible">
<meta name="keywords" content="CSS3, Bola expandible, CSS3 Bola expandible">';
$Base->InicioPlantilla(basename(__FILE__), "CSS3 : Efecto bola expandible", $META);
$Base->InicioBlog(basename(__FILE__), "CSS3 : Efecto bola expandible");
?>
<!-- INTRODUCCION -->
<p>Hoy para no repetirme mucho con el tema del canvas os voy a mostrar cómo he creado el efecto de la bola expandible que podéis ver en la parte superior del menú de la derecha con los iconos del facebook, twitter, google plus y rss.</p>
<p>Este efecto se ha hecho únicamente utilizando CSS3 sin necesidad de JQuery ni JavaScript, pero por esa razón no funciona en explorer. Como ya he comentado en más de una ocasión me niego a torturarme haciendo código que funcione en explorer, cuando en otros navegadores funciona perfectamente sin necesidad de romperse mucho la cabeza.</p>
<!-- FIN_INTRODUCCION -->
<p>Si los desarrolladores web le dieran la espalda directamente al explorer en vez de adaptar sus códigos exclusivamente para él, estoy convencido de que o los usuarios de explorer abrirían los ojos, o que los de microsoft se pondrían las pilas. Parece mentira que llevemos más de 10 años con este tipo de peleas.</p>
<p>Dejando a un lado mi pique personal con el navegador de microsoft, vamos a ver que necesitamos para crear el efecto de la bola expandible.</p>
<p>En primer lugar necesitamos un contenedor para cada bola, y un contenedor para el texto de cada bola. Veamos como quedaría el código HTML :</p>
开发者ID:devildrey33,项目名称:devildrey33,代码行数:31,代码来源:CSS3_BolaExpandible.php
示例13: devildrey33
<?php
/* include("devildrey33.php");
$Base = new devildrey33(devildrey33_TipoPlantilla::Articulo, basename(__FILE__));
$Base->InicioPlantilla("Tutorial WinAPI C++ 3.11 (Terminando el Ensamblador)");*/
include "../Web/devildrey33.php";
$Base = new devildrey33();
$META = '<meta name="description" content="Tutorial WINAPI">
<meta name="keywords" content="WINAPI C++, WINAPI, C++">';
$Base->InicioPlantilla(basename(__FILE__), "Tutorial WinAPI C++ 3.11 (Terminando el Ensamblador)", $META);
$Base->InicioBlog(basename(__FILE__), "Tutorial WinAPI C++ 3.11 (Terminando el Ensamblador)");
?>
<!-- INTRODUCCION -->
<p>Esta es la ultima parte del tercer tutorial, donde juntaremos todos los controles estandar que hemos visto anteriormente y formaremos una aplicacion encargada de hacer una lista de archivos.</p>
<p>Con esa lista de archivos la aplicacion podra comprimirlos todos para luego insertarlos en el ejecutable del Instalador.</p>
<p>Y tambien le indicaremos la ruta predeterminada de la instalación.</p>
<!-- FIN_INTRODUCCION -->
<p>Ahora que tenemos todos los controles necesarios, además del ejecutable de la instalación solo nos queda hacer el programa para ensamblar la instalación con los archivos.</p>
<p>La idea es hacer un programa que nos permita seleccionar los archivos que queremos meter dentro del instalador, y nos pida datos, como el directorio por defecto y el archivo que se usara como instalador.</p>
<p>Además le añadiremos posibilidad de cargar y guardar proyectos de instalador.</p>
<p>Por último en vez de utilizar una ventana como siempre utilizaremos un dialogo y veremos en que se diferencian.</p>
<p>Vamos al lio, lo primero será crear un ObjetoDialogo para contener diálogos de windows :</p>
<?php
$Base->PintarCodigo->PintarArchivoC("IDObjetoDialogo", "Archivo : ObjetoDialogo.h", "../Codigo/Tutoriales_WinAPI/Objetos Tutorial/ObjetoDialogo.h", "ObjetoDialogo");
?>
<p>Aunque parece prácticamente igual que un ObjetoVentana hay que destacar que el _GestorMensajes retorna BOOL mientras que el el ObjetoVentana retorna LRESULT. Esto no es porque ami me guste mas… y a decir verdad no se la razón de ello, simplemente si vamos a usar un dialogo necesitamos utilizar WindowProcedures que retornen BOOL. Y aquí está la razón de porque utilizamos la clase plantilla PlantillaEventos a la hora de basar todas nuestras ventanas / diálogos / controles.</p>
<p>Por último la función CrearDialogo solo recibe un parámetro, que es la ID que tiene el dialogo en los recursos. Para especificar los estilos del dialogo hay que hacerlo mediante el editor de recursos.</p>
<p>Veamos la declaración de un dialogo pequeño que necesitaremos para poner nombre al nuevo proyecto DialogoNuevoProyecto :</p>
开发者ID:devildrey33,项目名称:devildrey33,代码行数:31,代码来源:Tutorial_WINAPI_3_11.php
示例14: devildrey33
<?php
/* include("devildrey33.php");
$Base = new devildrey33(devildrey33_TipoPlantilla::Articulo, basename(__FILE__));
$Base->InicioPlantilla("PHP : Objeto devildrey33_PintarCodigo");*/
include "../Web/devildrey33.php";
$Base = new devildrey33();
$META = '<meta name="description" content="Colorear código">
<meta name="keywords" content="devildrey33_PintarCodigo">';
$Base->InicioPlantilla(basename(__FILE__), "PHP : Objeto devildrey33_PintarCodigo", $META);
$Base->InicioBlog(basename(__FILE__), "PHP : Objeto devildrey33_PintarCodigo");
?>
<!-- INTRODUCCION -->
<p>Este objeto es en el que he basado los 6 tutoriales anteriores sobre Colorear código con PHP.</p>
<p>Uno de los problemas de parsear el código y mostrarlo, es que requiere que el servidor PHP realice ciertos cálculos, y por ello puede resultar pesado para ciertos sitios web.</p>
<p>Si por ejemplo tenemos un sitio con 10000 visitas diarias y tenemos que hacer el parsing de un código 10000 veces al día, estoy seguro que en más de un momento si el servidor pudiera hablar nos diría muchas palabras mal sonantes.</p>
<p>Por ello este objeto tiene incorporado un sistema que guarda el parsing realizado en un archivo del servidor para ahorrarle trabajo, lo que se traduce en una respuesta más rápida por parte de él al mostrar las páginas web a los usuarios.</p>
<!-- FIN_INTRODUCCION -->
<p>Por si solo este objeto me ofrece la posibilidad de pintar códigos tal y como los veo en los programas que utilizo para desarrollarlos, y además sin necesidad de tener que re-escribirlos en el documento HTML final.</p>
<p>Si por ejemplo tengo el archivo main.c, y quiero mostrar una parte de él en un documento HTML, utilizando una simple línea de código este objeto realiza el parsing y lo muestra en el documento HTML final. Anteriormente he comentado que estos parsings se guardan en el servidor PHP una vez realizados para agilizar el proceso, pero esto no es inconveniente si al cabo de una semana decido modificar el archivo main.c, ya que este mismo objeto comprobara que la fecha de modificación del archivo main.c sea anterior a la del archivo del parsing. En caso contrario este objeto volverá a parsear la porción de código indicada y guardara nuevamente los cambios.</p>
<p>Además también crea un marco que nos facilita la visualización del código y que viene con las líneas numeradas, por si luego hay que explicar de esas líneas específicamente que sea mucho más fácil de hacer.</p>
<p>En esencia para cada tipo de código existen 3 funciones :</p>
<ul>
<li>Pintar...</li>
<li>PintarTexto...</li>
<li>PintarArchivo...</li>
</ul>
<p>La primera función recibe una cadena de caracteres y realiza el parsing al lenguaje especificado.</p>
<p>La segunda función básicamente es como la primera, con la diferencia de que devuelve el código para mostrar el marco además del código parseado y pintado a su lenguaje correspondiente.</p>
开发者ID:devildrey33,项目名称:devildrey33,代码行数:31,代码来源:ColorearCodigoPHP_devildrey33_PintarCodigo.php
示例15: devildrey33
<?php
/* include("devildrey33.php");
$Base = new devildrey33(devildrey33_TipoPlantilla::Articulo, basename(__FILE__));
$HEAD = "
";
$Base->InicioPlantilla("Varios ejemplos de menus", $HEAD);*/
include "../Web/devildrey33.php";
$Base = new devildrey33();
$META = "<meta name='description' content='Ejemplos menús'>\n\t<meta name='keywords' content='Menu CSS, Menu JavaScript'>";
$Base->InicioPlantilla(basename(__FILE__), "Varios ejemplos de menús", $META);
$Base->InicioBlog(basename(__FILE__), "Varios ejemplos de menús");
echo "<script>\$Base.CargarCSS('Blog_varios-ejemplos-de-menus.css');</script>";
?>
<!-- INTRODUCCION -->
<p>He estado haciendo pruebas con menús y sobretodo con CSS para practicar con las transiciones, y me estoy dando cuenta de que en CSS resulta muy difícil por no decir imposible en algunas situaciones hacer código re-aprovechable para las animaciones/transiciones en el sentido de que si añades/modificas/eliminas un menú tendrás que volver a editar el CSS. En cambio en JavaScript si te lo montas bien puedes hacer las cosas más dinámicas de forma que si modificas el menú no tengas que tocar ni JavaScript ni CSS.</p>
<p>La intención en principio era trastear un rato con transiciones complejas, ya que exceptuando el primer ejemplo los demás al desplegarse utilizan una transición, y al resaltar sus items utilizan otra transición dentro de la primera.</p>
<p>También he querido poner énfasis en hacer los menús lo más cómodos posible, dejando retrasos (delay) al plegarse para que el usuario tenga tiempo de moverse por el menú.</p>
<!-- FIN_INTRODUCCION -->
<br /><hr />
<h2>Menú Subrayado (JQuery)</h2>
<p>Este es un menú simple sin sub-menús que tiene una animación en el subrayado implementada en JQuery. Esta animación debe calcular el ancho y la posición del item donde está el mouse para calcular el ancho y la posición inicial de la barra de subrayado.</p>
<p>Se podría hacer también con CSS, pero no veo ninguna forma de hacerlo dinámico es decir que calcule automáticamente los items del menú para desplazar la barra del subrayado, así que la única solución viable que veo seria medir cada parte del menú, e implementar una transición especificando la posición para cada parte del menú.</p>
<p>Para este caso en concreto yo he apostado por la comodidad de poder añadir/modificar/eliminar items sin tener que tocar código javascript ni css.</p>
<iframe src='/Ejemplos/Menus/MenuSubrayado.html' class='postit Centrado' id="Marco1"></iframe>
<div class='Centrado'>
<a href="/Lab/Ejemplos/Menus/MenuSubrayado.html" class="Boton-Normal">Ver código de ejemplo</a>
开发者ID:devildrey33,项目名称:devildrey33,代码行数:31,代码来源:varios-ejemplos-de-menus.php< |
请发表评论