elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 00:50  


Tema destacado: Suscripción al boletín mensual de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Crear Ventanas Hijas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Crear Ventanas Hijas  (Leído 1,583 veces)
EvilGoblin


Desconectado Desconectado

Mensajes: 2.320


YO NO LA VOTE!


Ver Perfil
Crear Ventanas Hijas
« en: 17 Julio 2007, 13:57 »

Código
#include <windows.h>
#include <stdio.h>
 
 
/* Declaración del procedimiento de ventana */
MSG mensaje2; /* Mensajes recibidos por la aplicación */
HWND hwnd2[15]; /* Manipulador de ventana */
WNDCLASSEX wincl2; /* Estructura de datos para la clase de ventana */
int numero=0;
 
 
 
 
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK WindowProcedure2 (HWND, UINT, WPARAM, LPARAM);
 
 
 
 
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
 
{
HINSTANCE hThisInstance2;
HWND hwnd; /* Manipulador de ventana */
 
MSG mensaje; /* Mensajes recibidos por la aplicación */
 
WNDCLASSEX wincl; /* Estructura de datos para la clase de ventana */
 
/* Estructura de la ventana */
 
wincl.hInstance = hThisInstance;
wincl.lpszClassName = "NUESTRA_CLASE";
wincl.lpfnWndProc = WindowProcedure; /* Esta función es invocada por Windows */
wincl.style = CS_DBLCLKS; /* Captura los doble-clicks */
wincl.cbSize = sizeof (WNDCLASSEX);
 
 
 
/* Usar icono y puntero por defector */
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL; /* Sin menú */
wincl.cbClsExtra = 0; /* Sin información adicional para la */
wincl.cbWndExtra = 0; /* clase o la ventana */
 
 
 
 
 
/* Usar el color de fondo por defecto para la ventana */
 
wincl.hbrBackground = GetSysColorBrush(2);
 
 
wincl2.hInstance = hThisInstance2;
wincl2.lpszClassName = "NUESTRA_CLASE";
wincl2.lpfnWndProc = WindowProcedure2; /* Esta función es invocada por Windows */
wincl2.style = CS_DBLCLKS; /* Captura los doble-clicks */
wincl2.cbSize = sizeof (WNDCLASSEX);
 
/* Usar icono y puntero por defector */
wincl2.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl2.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl2.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl2.lpszMenuName = NULL; /* Sin menú */
wincl2.cbClsExtra = 0; /* Sin información adicional para la */
wincl2.cbWndExtra = 0; /* clase o la ventana */
 
wincl2.hbrBackground = GetSysColorBrush(5);
 
 
 
 
/* Registrar la clase de ventana, si falla, salir del programa */
 
if(!RegisterClassEx(&wincl)) return 0;
if(!RegisterClassEx(&wincl2)) return 0;
 
/* La clase está registrada, crear la ventana */
 
hwnd = CreateWindowEx(
 
0, /* Posibilidades de variación */
"NUESTRA_CLASE", /* Nombre de la clase */
"Madre", /* Texto del título */
WS_OVERLAPPEDWINDOW, /* Tipo por defecto */
CW_USEDEFAULT, /* Windows decide la posición */
CW_USEDEFAULT, /* donde se coloca la ventana */
544, /* Ancho */ 375, /* Alto en pixels */
HWND_DESKTOP, /* La ventana es hija del escritorio */
NULL, /* Sin menú */
hThisInstance, /* Manipulador de instancia */
NULL /* No hay datos de creación de ventana */
);
 
for(int x=0;x<16;x++)
{
hwnd2[x] = CreateWindowEx(
 
0, /* Posibilidades de variación */
"NUESTRA_CLASE", /* Nombre de la clase */
"Hija", /* Texto del título */
WS_OVERLAPPEDWINDOW, /* Tipo por defecto */
CW_USEDEFAULT, /* Windows decide la posición */
CW_USEDEFAULT, /* donde se coloca la ventana */
544, /* Ancho */ 375, /* Alto en pixels */
hwnd, /* La ventana es hija del escritorio */
NULL, /* Sin menú */
hThisInstance2, /* Manipulador de instancia */
NULL /* No hay datos de creación de ventana */
);
}
/* Mostrar la ventana */
 
ShowWindow(hwnd, SW_SHOWDEFAULT);
 
/* Bucle de mensajes, se ejecuta hasta que haya error o GetMessage devuelva FALSE */
 
while(TRUE == GetMessage(&mensaje, NULL, 0, 0))
 
{
 
/* Traducir mensajes de teclas virtuales a mensajes de caracteres */
TranslateMessage(&mensaje);
 
/* Enviar mensaje al procedimiento de ventana */
DispatchMessage(&mensaje);
 
 
/* Enviar mensaje al procedimiento de ventana */
 
}
 
/* Salir con valor de retorno */
return mensaje.wParam;
 
}
 
/* Esta función es invocada por la función DispatchMessage() */
 
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT mensaje, WPARAM wParam, LPARAM lParam)
 
{
       HDC hdc;/* A device context used for drawing */
PAINTSTRUCT ps;/* Also used during window drawing */
RECT rc;/* A rectangle used during drawing */
static HWND hwndButton = 0;
HWND hLog =0;
HWND hLog2 =0;
HWND hLog3 =0;        
 
 
switch (mensaje) /* manipulador de mensaje */
{
 
 
                  case WM_CREATE:
 
hwndButton = CreateWindow ("button","Cerrar",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,0, 0, 50, 20,hwnd,(HMENU) 1,((LPCREATESTRUCT) lParam)->hInstance,NULL);
 
break;    
 case WM_COMMAND:
 
                        switch(LOWORD(wParam))
                        {
                         case 1:
 
                              ShowWindow(hwnd2[numero],1);
                              numero++;
                              Sleep(10);
                              break;                    
 
 
                        }
 
                 break;      
case WM_DESTROY:
PostQuitMessage (0);
/* Envía el mensaje WM_QUIT a la cola de mensajes */
break;
default: /* Mensajes que no queremos manejar */
return DefWindowProc (hwnd, mensaje, wParam, lParam);
 
}
return 0;
 
}
 
LRESULT CALLBACK WindowProcedure2 (HWND hwndz, UINT mensaje2, WPARAM wParam2, LPARAM lParam)
 
{
 
       HDC hdc;/* A device context used for drawing */
PAINTSTRUCT ps;/* Also used during window drawing */
RECT rc;/* A rectangle used during drawing */
static HWND hwndButton2 = 0;
static HWND hwndButton3 = 0;
HWND hLog =0;
HWND hLog2 =0;
HWND hLog3 =0;        
static int quo;
char xa[6];
xa[0]='\0';
char nombre[40];
const char *nom;
nombre[0]='\0';
 
//MessageBox(hwndz,xa,0,0);        
int i=0;                
switch (mensaje2) /* manipulador de mensaje */
{
case WM_PAINT:
     quo =numero;
break;
                  case WM_CREATE:
 
 
hwndButton2 = CreateWindow ("button","clor",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,0, 0, 250, 30,hwndz,(HMENU) 4,((LPCREATESTRUCT) lParam)->hInstance,NULL);
    break;
     case WM_COMMAND:
 
 
 
                             switch(LOWORD(wParam2))
                        {
 
        case 4:
 
sprintf(xa,"%i",quo);
strcat(nombre,"Esta es la ventana Nº ");
strcat(nombre,xa);
                                     SetWindowText(GetDlgItem(hwndz, 4), nombre);
 
 
                              break;  
 
                        }
 
                 break;    
 
          case WM_CLOSE:
           ShowWindow(hwndz, 0);
           break;
case WM_DESTROY:
ShowWindow(hwndz, 0);
/* Envía el mensaje WM_QUIT a la cola de mensajes */
break;
default: /* Mensajes que no queremos manejar */
return DefWindowProc (hwndz, mensaje2, wParam2, lParam);
 
}
return 0;
 
}

Me gustaria que me ayuden y me digan cual es el mejor metodo para pasarle valores a una ventana desde la ventana padre eh interactuar con muchas ventanas hijas

y crearlas todas juntas pork seria feo declarar cada ventana aparte =S

Muchas Gracias ^^


En línea

Experimental Serial Lain [Linux User]
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como obtener hwnd de ventanas hijas de juegos?
Programación Visual Basic
AlxSpy 2 1,513 Último mensaje 30 Marzo 2011, 17:13
por AlxSpy
algun ejemplo de ventanas hijas en c++
Programación C/C++
z_ane_666 2 1,055 Último mensaje 30 Septiembre 2011, 08:03
por BlackZeroX (Astaroth)
CREAR VENTANAS EN PYTHON
Scripting
carlos.foroelhaker 2 133 Último mensaje 4 Mayo 2012, 22:26
por carlos.foroelhaker
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines