Título: Offests de los miembros de la estructura DEVMODE Publicado por: Eleкtro en 13 Diciembre 2015, 15:56 pm Hola
Me gustaría saber si alguien con experiencia en C++ podría indicarme los offests de los miembros de la estructura DEVMODE: https://msdn.microsoft.com/en-us/library/windows/desktop/dd183565%28v=vs.85%29.aspx Esto es por que estoy tratanto de trasladar las unions de dicha estructura a .Net, pero necesito saber los offsets de los miembros en C++ para comparar el resto de miembros, ya que algo hice mal, probablemente el tamaño de alguno de mis miembros declarados sea incorrecto en comparación con el tamaño definido en la estructura de C++. Me han comentado que esto se hace con la macro offsetof: Creo que no pido mucho, debe ser una cosa sencilla para quien maneje C++, pero si me equivoco disculpen y diganme más o menos como podría hacerlo yo mismo... Saludos Título: Re: Offests de los miembros de la estructura DEVMODE Publicado por: fary en 13 Diciembre 2015, 16:06 pm En C#
Código
ó: Código
Título: Re: Offests de los miembros de la estructura DEVMODE Publicado por: Eleкtro en 13 Diciembre 2015, 16:14 pm fary, gracias por contestar pero esa definición es erronea. Sigo necesitando los offsets en C++.
¿Ese código lo sacaste de pinvoke.net, verdad?. Ya la probé recientemente, pero ni siquiere tiene los unions, de hecho, el autor ni siquiera debería haber declarado los miembros de forma explícita. Debería ser más bien así: Código
... Solo que algún miembro de mis declaraciones tiene un tamaño/posición incorrecto, necesito comparar los offsets. Estoy descargando la IDE code::blocks, pero nunca hice esto en C++, de hecho practicamente he manejado C++ solo un par de veces, ya veremos si lo consigo averiguar... Saludos Título: Re: Offests de los miembros de la estructura DEVMODE Publicado por: fary en 13 Diciembre 2015, 16:22 pm En realidad no tiene que llevar los union, fijate en este mismo ejemplo de la msdn:
https://msdn.microsoft.com/en-us/library/aa251430(v=vs.60).aspx Código
WORD = 2 bytes DWORD = 4 bytes TCHAR [32] = 32 bytes USHORT = 2 bytes short = 2 bytes Espero que ahora si lo puedas resolver. Título: Re: Offests de los miembros de la estructura DEVMODE Publicado por: Eleкtro en 13 Diciembre 2015, 17:21 pm Pero claramente la definición actual tiene más miembros.
https://msdn.microsoft.com/en-us/library/windows/desktop/dd183565%28v=vs.85%29.aspx Gracias por tu tiempo. Lo estoy comprobando con este código de ejemplo que encontré: http://www.cplusplus.com/reference/cstddef/offsetof/ Código
Lo único tedioso o incómodo es que al no haber Reflection en C++ voy comprobando miembro por miembro, uno por uno, jeje. Aunque tampoco se si habrá alguna otra posible manera de enumerar los miembros de una estructura. PD: En estos momentos maldigo haber capado mi VS de las características y el compiler de C++, no me gustan nada las IDEs alternativas de C++. Saludos |