2010-04-19 21 views
8

Me pregunto cuál es la forma correcta de crear Gui's con la API de Win32.Gui's con Win32 API

Ahora llamo al CreateWindowEx en mi evento WM_CREATE, pero no creo que esta sea la manera correcta de hacerlo.

Solo como ejemplo, ¿cuál sería la forma correcta de agregar un EditField de 100x20 y obtener texto de él? ¿Lo crearías en WM_Create y luego usarías GetText()?

Gracias

+1

Tengo un tutorial sobre que al http://www.aleax.it/TutWin32/ pero, por desgracia, es sólo en italiano - no puede traducir 46 capítulos en Inglés y calabaza el resultado en una respuesta SO ;-). Si usas Google Chrome, puedes probar su traducción automática en inglés, solo por diversión. Los controles EDIT están en el capítulo 22 y siguientes ;-). –

+2

posible duplicado de http://stackoverflow.com/questions/342729/learning-the-win32-api –

+0

Votación para cerrar como "pedir tutorial". –

Respuesta

5

Aquí hay otro sitio con ejemplos bastante buenos - http://www.winprog.org/tutorial/start.html También parece que tienen una traducción italiana :)

Esto tiene que ser duplicado de muchos puestos si todos vamos a publicar sitios Web de muestra para Win32

1

Si va a crear una interfaz gráfica de usuario sencilla con las ventanas api, luego use un editor de recursos para crear su recurso de cuadro de diálogo y luego reemplace el código de creación de ventana y registro de clase de ventana de aplicaciones con una simple llamada al DialogBoxParam. DialogBoxParam leerá el recurso de diálogo y creará el diálogo escalando automáticamente todo a la configuración de fuente de los usuarios, manejará el ciclo de mensajes y hará otras cosas como soporte automático para tabular entre controles.

+0

Una cosa: usted tiene que actualizar fuentes de tema válido usted mismo para los controles, de lo contrario obtendrá fuentes predeterminadas de la descripción del cuadro de diálogo .res –

1

No necesita hacerlo en el evento WM_CREATE, pero puede hacerlo. Normalmente creo cualquier ventana hija en el mismo ámbito donde se creó la ventana principal. Por ejemplo:

HWND mainWindow = CreateWindowEx(...); 
HWND editField = CreateWindowEx(...); // use mainWindow for the hWndParent param 
             // the hMenu parameter sets child window id 
Cuestiones relacionadas