Browse by Tags
All Tags »
C++ (
RSS)
Bueno, bueno... que duro es esto del Tech Ed. Sesión tras sesión y charla tras charla entre sesiones se va abriendo ante uno un nuevo mundo de técnicas y tecnologías en las que profudizar. Eso es lo malo del Tech Ed, te enteras en una semana de lo mucho que desconoces y cada sesión y cada conversación de pasillo te abre la 'necesidad' de profundizar en un montón de nuevas areas. En el Tech Ed se aprende mucho, sin duda, pero lo que más aprendes es lo que te queda por aprender... Comenzaba el tercer día con una sesión excelente de Paul Andrew titulada Building Rules-Based Systems in Windows Worflow Foundation. En esta sesión descubría una faceta totalmente...
Ya he hablado anteriormente en este blog sobre el desarrollo web con C++ sobre IIS . Pues bien según he sabido, las cosas en IIS cambian un poco, porque el API C/C++ expuesta por IIS 7 es diferente a la de IIS 6, a consecuencia de lo cual, los ISAPI han caido en deshuso. Para extender las capacidades de IIS 7 aparece un nuevo API nativo en C++ que reemplaza al antiguo API de filtros y extensiones ISAPI, en favor de los ahora llamados modulos. En cualquier caso los filtros y extensiones ISAPI existentes simplemente seguiran funcionando. El nuevo API en C++ es más intuitivo y orientado a objetos y utiliza patrones más sencillos para el manejo de peticiones a la vez de darnos más control. Para usar este API es necesario...
Respecto a C++/CLI siempre oimos que es facilisimo el mezclar código manejado con código no manejado. Hasta hoy no había probado a fondo esta posibilidad. Pero a raiz de una pregunta en el grupo de news de C++ de Microsoft me he puesto manos a la obra. C++/CLI, aunque puede usar toda la 'artilleria' de Interop con la que cuenta el Framework de .Net, cuenta con una tecnología llamada IJW (It Just Works) que permite hacer llamadas entre código manejado y no manejado de manera muchisimo más natural, totalmente integrada en el lenguaje, y lo que es tambien importante, con mucho mayor rendimiento. Podeís encontrar más información sobre esto en Escribir código más...
Es una situación relativamente habitual que dos clases se tengan que conocer entre sí, es lo que se conoce como referencia circular . Aunque en principio debería sospechar de esta situación por el alto acoplamiento que introduce entre ambas clases, hay veces, en que puede ser excesivo crear una clase para que maneje la comunicación entre las clases. De todos modos si decidís usar este enfoque, una buena implementación es utilizar el patrón mediator Mediator . Cuando esto nos ocurre en lenguajes como C# no hay problema, porque no existe el concepto de declaración e implementación de una clase separadas. Pero en C++ toda clase debe conocer la declaración de otra clase...
Microsoft nos propone un espectacular evento sobre C++ en Huesca. Son dos días en los que podremos experimentar las mejoras y espectaculares posibilidades de C++ con utilizando una de nuestras propias aplicaciones. Si estaís planteandoos migrar una aplicación desde versiones anteriores de C++ a Visual C++ 2005 es una oportunidad única de hacerlo guiados por excelentes profesionales. Sin duda C++ es el lenguaje que más a evolucionado y mejorado con la aparición de Visual Studio 2005 y el más potente de los lenguajes que proporciona Microsoft. A mi, desgraciadamente, mi agenda no me va a permitir asistir. Cuando lo he visto me he llevado un disgustillo. Es un evento muy goloso, sobre todo siendo...
¿Porqué el compilador de C++ no encuentra una función, mensaje o estructura del API de Windows? A menudo recibo esta pregunta. Resulta que el compilador de C++ no encuentra algún simbolo definido en un archivo de cabecera de Windows. A menudo nos ocurre esto cuando queremos utilizar alguna funcionalidad 'recien salida del horno' y que no esta prensente en versiones anteriores de Windows. El error que se recibe habitualmente es: error C2065: 'IDENTIFICADOR' : undeclared identifier Evidentemente lo primero es descartar que hayamos olvidado incluir el archivo de cabecera donde este declarado el identificador en cuestión. Para ello lo mejor es asegurarse de cúal es este archivo de cabecera...
Es una pregunta que me hacen o leo frecuente. Utilizando el Api de Win32, lo mejor es usar la función EnumProcs que esta disponible en este articulo de la Knowledge Base de Microsoft. En el mundo .net es algo más sencillo, basta utilizar el método GetProcesses de la clase Process . Tambien hay una entrada sobre el tema en la Knowledge Base , que explica como hacerlo en VB.net pero el código en C# es bien simple: using System.Diagnostics; ... Process[] running = Process.GetProcesses(); foreach(Process p in running) Console.WriteLine(p.ProcessName); Read More...
Si queremos aseguranos que un API pueda se llamada desde cualquier lenguaje, la mejor opción es crear una dll que exporte funciones al estilo del API de Windows, es decir al estilo C. Casí cualquier lenguaje de programación cuenta con un mecanismo para llamar a esta clase de funciones, porque es el tipo de funciones que exporta el API de windows. Quiza la única excepción es Visual Basic Script, si quieres construir una API que pueda ser llamada desde VBS y desde cualquier lenguaje que soporte COM lee este post anterior . En Visual Studio debes optar por crear un proyecto Win32 de tipo dll. A partir de aquí solo necesitas crear funciones y exportarlas. El truco esta en exportarlas como hace el API de Windows. Realmente no tiene ninguna complicación...
Conozco 2 maneras de realizar esto: 1) Utilizar la clase CPiture (que encapsula la interfaz IPicture), escrita por Paul Dilascia, que permite usar JPG, GIFF y BITMAP y sobre la que puedes encontrar información en los siguientes vinculos: Displaying a JPG in your MFC Application 2) Utilizar el nuevo API GDI+ que permite trabajar con BMP, JPEG, PNG, GIF y TIFF y estas disponible como un runtime de aproximadamente 1 Mb de tamaño. Esta libreria es propocionada sin ningún royalti como distribuible por Microsoft. Mira el siguiente vinculo: GDI+ Para cargar una imagen y mostarla en una ventana conocido el handle de su DC en puedes usar la siguiente función: void ShowJPG(HANDLE hDC) { Graphics graphics(hDC); Image image("photo.jpg"); graphics.DrawImage...
últimamente, mucha gente me está preguntando como puede llevar código escrito en Visual C++ a la web. Aunque en principio C++ no parece el lenguaje ideal para programar "para internet", existen varias motivaciones: Aprovechar código o librerias existentes. Obtener un mejor rendimiento. Utilizar servicios web para interoperar. Aprovechar el know-how exitente en C++. Con idependencia de la motivación, que seguro existen algunas otras, el problema habitual es que la gente desconoce que opciones tiene en Visual C++, y que realmente son variadas, potentes y naturales para el programador de C++. Si no estas familiarizado con las diferentes librerias de Visual C++ lee este post anterior . En Visual C++ 2005 contamos con variadas posibilidades: Desarrollar...
More Posts