[C con Clase] Botones creados en archivos de recursos

Steven Davidson srd4121 en njit.edu
Vie Sep 12 18:37:37 CEST 2008


Hola Daniel,

Roberto Daniel Virgili wrote:
> Hola Steven
> Muy completo lo tuyo, la verdad no tengo palabras para agradecer a
> alguien que de una explicación tan precisa para mi consulta, me voy a
> poner a practicar todo para tratar de hacer lo que me propuse.-

De nada; para eso estamos :)

> Una sola consulta más para este tema, si yo pusiera todos los
> controles de una determinada ventana en un archivo .cpp, de ser
> posible me podrías decir como llamar a ese archivo para activarlos y
> poder realizar los correspondientes eventos de los mismos...?
> 

No estoy seguro a qué te refieres con poner todos los controles en un 
archivo ".cpp". Existen dos posibilidades:

1. Crear una estructura con toda la información necesaria para crear un 
control, o
2. Crear una función que cree todos los controles que quieres.

Me inclino por la 2ª opción, sospechando que es lo que nos pides. Esto 
sería, por ejemplo,

// winmain.cpp
#include <windows.h>
#include "controles.h"

int WinMain( ... )
{
   ...
}

LRESULT CALLBACK WinProc( ... )
{
   static HWND listaControles[5];
   static int nControles=0;
   static HINSTANCE hInstancia;
   ...
   WM_CREATE:
     ...
     CrearControles( listaControles, nControles, hWnd, hInstancia );
     ...
}

// controles.h
#include <windows.h>

HWND * CrearControles( HWND lista[], int nCant, HWND hWnd,
                        HINSTANCE hInst );
...

// controles.cpp
#include <windows.h>
#include "controles.h"

HWND * CrearControles( HWND lista[], int nCant,
                        HWND hWnd, HINSTANCE hInst )
{
   lista[0] = CreateWindowsEx( 0L, "BUTTON", "&Aceptar", ... );
   lista[1] = CreateWindowsEx( 0L, "STATIC", "0", ... );
   lista[2] = CreateWindowsEx( 0L, "EDIT", "", ... );
   ...
}


En fin, lo anterior es un ejemplo. El caso es que creamos los controles 
explícitamente, separando la creación en otra función en otro fichero 
fuente. No sé si es esto lo que quieres.


Espero que esto te sirva.

Steven





Más información sobre la lista de distribución Cconclase