elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  problema en dev c++ con windows.h
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problema en dev c++ con windows.h  (Leído 5,961 veces)
anfeli96

Desconectado Desconectado

Mensajes: 3


Ver Perfil
problema en dev c++ con windows.h
« en: 4 Diciembre 2014, 23:02 pm »

Hola, tengo un problema con un código de interfaz gráfica que estoy creando en el cual no he podido crear paginas hijas o limpiar la pantalla para poner unas nuevas opciones, por favor alguien podría decirme como hacerlo gracias. Este es mi código:


Código
  1. #include <windows.h>
  2. #include <sstream>
  3.  
  4. using namespace std;
  5. /* La función ProcedimientoVentana() es necesaria porque es la
  6.    encargada de recibir los eventos (movimientos del ratón,
  7.    tecla, clics a un botón, etc). En este caso, solo monitorea
  8.    el momento el que el usuario decide cerrar la ventana para
  9.    descargar la aplicación de memoria                           */
  10.  
  11. HWND textbox;  
  12. HWND Etiqueta;
  13. HWND hCTexto;
  14. void ventana_principal(HWND);
  15. void ventana_registroNuevo(HWND);
  16. void ventana_nueva(HWND hwnd);
  17. //void boton1;
  18.  
  19. LRESULT CALLBACK ProcedimientoVentana(HWND hwnd, UINT mensaje,
  20.                                      WPARAM wParam, LPARAM lParam)
  21.  
  22. {
  23.    switch (mensaje)
  24.    {
  25.  
  26.       case WM_DESTROY:{  //salir de la aplicacion
  27.                       //MessageBox(hwnd, "¡Adiós mundo cruel!", "Cerrando...", MB_ICONERROR | MB_OK);
  28.                       PostQuitMessage (0);//Manda WM_QUIT a la cola de mensajes que hará
  29.                                            //que el programa salga del bucle de mensajes              
  30.                        return 0;
  31.                     break;
  32.                       }
  33.      /*case WM_COMAND:{
  34.                      switch(wParam){
  35.                      
  36.                       case
  37.                      
  38.  }
  39.      
  40.      
  41.                break;
  42.                 }*/
  43.  
  44.      case WM_CREATE:
  45.                        {
  46.                         ventana_principal(hwnd);  
  47.                        }
  48.  
  49.    case WM_COMMAND: //Llamadas a funciones de cada boton
  50.    {
  51.    switch(LOWORD(wParam))
  52.    {
  53.     case 2:
  54. {
  55. system ("cls");
  56.  
  57.  ventana_registroNuevo(  hwnd);
  58.  break;
  59.     }
  60.        case 3:
  61. {
  62. //ventana_nueva(hwnd);
  63.      //MessageBox(hwnd,"elemento","ESTA ES LA FUNCION RESTA",MB_OK);//CAJA DE TEXTO TITULO DE LA VENTANA E INTRUCCION DENTRO
  64.  break;
  65.     }
  66.     case 4:
  67. {
  68.  
  69.      MessageBox(hwnd,"elemento","ESTA ES LA FUNCION RESTA",MB_OK);//CAJA DE TEXTO TITULO DE LA VENTANA E INTRUCCION DENTRO
  70.  break;
  71.     }
  72.     case 5:
  73. {
  74. ShowWindow(hwnd, SW_SHOWDEFAULT);
  75.      MessageBox(hwnd,"elemento","Eborro pantallaA",MB_OK);//CAJA DE TEXTO TITULO DE LA VENTANA E INTRUCCION DENTRO
  76.  break;
  77.     }
  78.     case 6: //salir de la aplicacion
  79. {
  80.      //MessageBox(hwnd, "¡Adiós !", "Cerrando...", MB_ICONERROR | MB_OK);
  81.                       PostQuitMessage (0);//Manda WM_QUIT a la cola de mensajes que hará
  82.                                            //que el programa salga del bucle de mensajes              
  83.                        return 0;
  84.     }
  85.  
  86.    }
  87.  
  88.  
  89.    }
  90.    /*case WM_LBUTTONUP:
  91.                         {
  92.                           int xPos = LOWORD(lParam);
  93.                           int yPos = HIWORD(lParam);
  94.  
  95.                          ostringstream os;
  96.                          os << "Hizo clic con el botón izquierdo";
  97.  
  98.                          if (wParam == MK_CONTROL)
  99.                          os << " mientras oprimía la tecla CONTROL";
  100.                          else if (wParam == MK_SHIFT)
  101.                          os << " mientras oprimía la tecla SHIFT";
  102.                          os << "\n\nCoordenadas: " << xPos << ", " << yPos;
  103.  
  104.          MessageBox(hwnd, os.str().c_str(), "Clic!", MB_ICONINFORMATION | MB_OK);
  105.          break;
  106.       }*/
  107.  
  108.    }
  109.    return DefWindowProc (hwnd, mensaje, wParam, lParam);
  110. }
  111.  
  112.  
  113.  
  114. /* Esta cadena se ocupa para la clase de ventana y la función
  115.    CreateWindowEx() se refieran a un mismo nombre */
  116. char szNombreAplicacion[] = "Ejercicio2";
  117.  
  118. int WINAPI WinMain(HINSTANCE hInstancia, HINSTANCE hInstanciaPrev,
  119.                   LPSTR lpLineaCmd, int nEstadoVentana)
  120. {
  121.    //Los 4 pasos para crear una ventana...
  122.    //1. Establecer los 12 campos de la "clase de ventana"
  123.    WNDCLASSEX ventana;
  124.  
  125.    ventana.cbSize        = sizeof(WNDCLASSEX);
  126.    ventana.style         = CS_HREDRAW | CS_VREDRAW;
  127.    ventana.lpfnWndProc   = ProcedimientoVentana; //recibe y maneja los eventos de la ventana como clics movimientos cierre de ventana etc. con punteros
  128.    ventana.cbClsExtra    = 0;
  129.    ventana.cbWndExtra    = 0;
  130.    ventana.hInstance     = hInstancia;
  131.    ventana.hIcon         = LoadIcon (NULL, IDI_APPLICATION);
  132.    ventana.hCursor       = LoadCursor (NULL, IDC_ARROW);
  133.    ventana.hbrBackground =  (HBRUSH) (COLOR_WINDOWTEXT+8);//CreateSolidBrush( RGB(0xa0, 0x60, 0xf8) );
  134.    ventana.lpszMenuName  = NULL;
  135.    ventana.lpszClassName = szNombreAplicacion;//nombre de la clase de ventana
  136.    ventana.hIconSm       = LoadIcon (NULL, IDI_APPLICATION);
  137.  
  138.    //2. Dar de alta en el sistema a la "clase de ventana"
  139.    if( !RegisterClassEx(&ventana) )
  140.    {
  141.      MessageBox(NULL,
  142.                 "No fue posible dar de alta a la ventana, abortando ejecución",
  143.                 "¡Error!", MB_ICONEXCLAMATION | MB_OK);
  144.      return FALSE;
  145.    }
  146.  
  147.    //3. Crear la ventana en base a la "clase de ventana" anteriormente registrada
  148.    HWND hwnd;
  149.    hwnd = CreateWindowEx(
  150.           1,                      //dwExEstilo
  151.           szNombreAplicacion,     //Nombre de clase de la ventana a la que pertenece
  152.           "Tienda de videos",  //Título de la ventana
  153.          //variables que permiten editar intefaz con usiario habilitando o desabilitando botones
  154.   WS_OVERLAPPED |
  155.      WS_CAPTION |
  156.  WS_SYSMENU ,   //poner | despues de cada opcion y coma al final
  157.   //WS_THICKFRAME |
  158.    // WS_MINIMIZEBOX  |
  159.     //WS_MAXIMIZEBOX
  160.  
  161.  
  162.   //WS_OVERLAPPEDWINDOW,    //Tipo de ventana es igual a dwEstilo
  163.           CW_USEDEFAULT,          //Posición de la ventana en pantalla en "x"
  164.           CW_USEDEFAULT,          //Posición de la ventana en pantalla en "y"
  165.           500,                    //Ancho
  166.           450,                    //Alto
  167.           HWND_DESKTOP,
  168.           NULL,
  169.           hInstancia,
  170.           NULL);
  171.  
  172.  
  173.   if(hwnd == NULL)
  174.   {
  175.      MessageBox(NULL, "Error al crear la ventana, abortando ejecución",
  176.                 "¡Error!", MB_ICONEXCLAMATION | MB_OK);
  177.      return FALSE;
  178.   }
  179.  
  180.    //4. Mostrar la ventana en pantalla
  181.    ShowWindow(hwnd, SW_SHOWDEFAULT);
  182.  
  183.    //Necesario para manipular los mensajes o eventos de la ventana
  184.    MSG mensaje;
  185.    while(GetMessage(&mensaje, 0, 0, 0) > 0)  //bucle de mensajes para cola de mensajes entrantes
  186.    {
  187.     TranslateMessage(&mensaje);
  188.        DispatchMessage(&mensaje);
  189.    }
  190.  
  191.    return mensaje.wParam;
  192. }
  193.  
  194. void ventana_principal(HWND hwnd)//se crea ventana principal
  195. {
  196. //MessageBox(hwnd, "Se creó la ventana", "Ejemplo",MB_ICONINFORMATION | MB_OK);
  197.  
  198. Etiqueta = CreateWindowEx(0, "STATIC", "MENU PRINCIPAL",
  199.           WS_CHILD | WS_VISIBLE,
  200.           180,//posicion en x
  201.           200,//posicion en y
  202.           150,//ancho
  203.           30,//alto
  204.               hwnd,
  205.       NULL, 0,0
  206. );
  207.  
  208.  /*textbox= CreateWindow("edit",  
  209.           " Menu principal", //nombre de la ventana
  210.             WS_BORDER | WS_CHILD|
  211.             WS_VISIBLE,
  212.            120,//posicion en x
  213.            180,//posicion en y
  214.            115,//ancho
  215.            20,//alto
  216.            hwnd,
  217.            NULL,NULL,NULL);*/
  218.  
  219.    CreateWindow("BUTTON",
  220.                 "Registro Nuevo",
  221.                 WS_VISIBLE//VIsIBILIDAD DEL OBJETO
  222.                 |WS_CHILD|
  223.         WS_BORDER, //MARGEN AL TEXTO
  224.         90, //x
  225.         240,//y
  226.         130,//ancho
  227.         30,//alto
  228.         hwnd,
  229.         (HMENU)2,NULL,NULL
  230.         );
  231.   CreateWindow("BUTTON",
  232.                "Buscar pelicula",
  233.                 WS_VISIBLE//VIsIBILIDAD DEL OBJETO
  234.                 |WS_CHILD| WS_BORDER,
  235.                 240, //x
  236.                 240,//y
  237.                 130,//ancho
  238.                 30,//alto
  239.                 hwnd,
  240.                (HMENU)3,NULL,NULL
  241.               );
  242.  CreateWindow("BUTTON",
  243.               "Editar Registro",
  244.               WS_VISIBLE//VIsIBILIDAD DEL OBJETO
  245.              |WS_CHILD| WS_BORDER,
  246.               90, //x
  247.               290,//y
  248.               130,//ancho
  249.               30,//alto
  250.               hwnd,
  251.              (HMENU)4,NULL,NULL
  252.              );
  253.   CreateWindow("BUTTON",
  254.                "Eliminar Registro",
  255.                WS_VISIBLE//VIsIBILIDAD DEL OBJETO
  256.               |WS_CHILD| WS_BORDER,
  257.                240, //x
  258.                290,//y
  259.                130,//ancho
  260.                30,//alto
  261.                hwnd,
  262.               (HMENU)5,NULL,NULL
  263.              );
  264.   CreateWindow("BUTTON",//boton salir
  265.                "Salir",
  266.                WS_VISIBLE//VIsIBILIDAD DEL OBJETO
  267.               |WS_CHILD| WS_BORDER,
  268.                180, //x
  269.                340,//y
  270.                110,//ancho
  271.                30,//alto
  272.                hwnd,
  273.               (HMENU)6,NULL,NULL
  274.                );            
  275.  
  276. }
  277.  
  278. void ventana_registroNuevo(HWND hwnd)//se crea ventana para un registro nuevo
  279. {
  280. //MessageBox(hwnd, "Se creó la ventana", "Ejemplo",MB_ICONINFORMATION | MB_OK);
  281.  
  282.  
  283.  
  284. Etiqueta = CreateWindowEx(0, "STATIC", "REGISTRO NUEVO",
  285.           WS_CHILD | WS_VISIBLE,
  286.           170,//posicion en x
  287.           40,//posicion en y
  288.           150,//ancho
  289.           30,//alto
  290.               hwnd,
  291.       NULL, 0,0
  292. );
  293.  
  294. Etiqueta = CreateWindowEx(0, "STATIC", "NOMBRE",
  295.           WS_CHILD | WS_VISIBLE,
  296.           40,//posicion en x
  297.           80,//posicion en y
  298.           70,//ancho
  299.           30,//alto
  300.               hwnd,
  301.       NULL, 0,0
  302. );
  303.  
  304. hCTexto = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "",
  305.                                WS_CHILD | WS_VISIBLE | ES_AUTOHSCROLL,
  306.                                120,
  307.    80,
  308. 270,
  309. 25,
  310. hwnd,
  311. NULL, NULL, NULL);
  312.  
  313. Etiqueta = CreateWindowEx(0, "STATIC", "DIRECTOR",
  314.           WS_CHILD | WS_VISIBLE,
  315.           40,//posicion en x
  316.           120,//posicion en y
  317.           150,//ancho
  318.           30,//alto
  319.               hwnd,
  320.       NULL, 0,0
  321. );
  322.  
  323. Etiqueta = CreateWindowEx(0, "STATIC", "FECHA DE LANZAMIENTO",
  324.           WS_CHILD | WS_VISIBLE,
  325.           40,//posicion en x
  326.           160,//posicion en y
  327.           150,//ancho
  328.           30,//alto
  329.               hwnd,
  330.       NULL, 0,0
  331. );
  332.  
  333. Etiqueta = CreateWindowEx(0, "STATIC", "PROTAGONISTA",
  334.           WS_CHILD | WS_VISIBLE,
  335.           40,//posicion en x
  336.           200,//posicion en y
  337.           150,//ancho
  338.           30,//alto
  339.               hwnd,
  340.       NULL, 0,0
  341. );  
  342.  /*textbox= CreateWindow("edit",  
  343.           " Menu principal", //nombre de la ventana
  344.             WS_BORDER | WS_CHILD|
  345.             WS_VISIBLE,
  346.            120,//posicion en x
  347.            180,//posicion en y
  348.            115,//ancho
  349.            20,//alto
  350.            hwnd,
  351.            NULL,NULL,NULL);*/
  352.  
  353.   CreateWindow("BUTTON",//boton salir
  354.                "GUARDAR",
  355.                WS_VISIBLE//VIsIBILIDAD DEL OBJETO
  356.               |WS_CHILD| WS_BORDER,
  357.                120, //x
  358.                340,//y
  359.                110,//ancho
  360.                30,//alto
  361.                hwnd,
  362.               (HMENU)7,NULL,NULL
  363.                );            
  364.  
  365. }
  366.  
  367.  
  368. /*void ventana_nueva(HWND hwnd)
  369. {
  370. LRESULT CALLBACK ProcedimientoVentana(HWND hwnd, UINT mensaje,
  371.                                       WPARAM wParam, LPARAM lParam)
  372.       {
  373.      
  374.       CreateWindow("BUTTON",//boton salir
  375.                 "GUARDAR",
  376.                 WS_VISIBLE//VIsIBILIDAD DEL OBJETO
  377.                |WS_CHILD| WS_BORDER,
  378.                 120, //x
  379.                 340,//y
  380.                 110,//ancho
  381.                 30,//alto
  382.                 hwnd,
  383.                (HMENU)7,NULL,NULL
  384.                 );            
  385.  }                                
  386.  
  387.  
  388. }*/



« Última modificación: 4 Diciembre 2014, 23:08 pm por Eternal Idol » En línea

_Enko


Desconectado Desconectado

Mensajes: 538



Ver Perfil WWW
Re: problema en dev c++ con windows.h
« Respuesta #1 en: 4 Diciembre 2014, 23:13 pm »

Hola, creo que lo que estas buscando es crear Tabs/Pestañas o hacer ventanas hijas usado MDI.

Saludos


En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: problema en dev c++ con windows.h
« Respuesta #2 en: 4 Diciembre 2014, 23:22 pm »

Sí creando una ventana hija estaría bien. con CreateWindow, estableces un WndProc (SetWindowLongptr), creas los controles, etc.
Using Windows:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms632598(v=vs.85).aspx
En línea

anfeli96

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: problema en dev c++ con windows.h
« Respuesta #3 en: 4 Diciembre 2014, 23:25 pm »

si eso es lo que busco pero no entiendo como abrir 2 ventanas al tiempo, no se donde declarar la segunda ventana si me pueden explicar un poco mas de verdad se lo agradeceria
En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: problema en dev c++ con windows.h
« Respuesta #4 en: 5 Diciembre 2014, 00:40 am »

sólo agregue la creación de una segunda clase en tu código. El tema de la creación de ventanas en Windows es un asunto importante y creo que uno debería de sentarse a pensar en eso y leer un buen libro como este:
http://www.amazon.com/Programming-Windows%C2%AE-Fifth-Developer-Reference/dp/157231995X
En el código he creado una nueva clase, no redirigi nada, al veces es conveniente crear nuevas clases o crear apartir de ya existentes todo va a depender de cómo será el diseño de tu aplicación.

Código
  1. #include <windows.h>
  2. #include <sstream>
  3.  
  4. using namespace std;
  5. /* La función ProcedimientoVentana() es necesaria porque es la
  6. encargada de recibir los eventos (movimientos del ratón,
  7. tecla, clics a un botón, etc). En este caso, solo monitorea
  8. el momento el que el usuario decide cerrar la ventana para
  9. descargar la aplicación de memoria                           */
  10.  
  11. HWND textbox;
  12. HWND Etiqueta;
  13. HWND hCTexto;
  14. void ventana_principal(HWND);
  15. void ventana_registroNuevo(HWND);
  16. void ventana_nueva(HWND hwnd);
  17. //void boton1;
  18.  
  19. LRESULT CALLBACK ProcedimientoVentana(HWND hwnd, UINT mensaje,
  20.    WPARAM wParam, LPARAM lParam)
  21.  
  22. {
  23.    switch (mensaje)
  24.    {
  25.  
  26.    case WM_DESTROY:{  //salir de la aplicacion
  27.        //MessageBox(hwnd, "¡Adiós mundo cruel!", "Cerrando...", MB_ICONERROR | MB_OK);
  28.        PostQuitMessage(0);//Manda WM_QUIT a la cola de mensajes que hará
  29.        //que el programa salga del bucle de mensajes              
  30.        return 0;
  31.        break;
  32.    }
  33.        /*case WM_COMAND:{
  34.         switch(wParam){
  35.  
  36.         case
  37.  
  38.         }
  39.  
  40.  
  41.         break;
  42.         }*/
  43.  
  44.    case WM_CREATE:
  45.    {
  46.        ventana_principal(hwnd);
  47.    }
  48.  
  49.    case WM_COMMAND: //Llamadas a funciones de cada boton
  50.    {
  51.        switch (LOWORD(wParam))
  52.        {
  53.        case 2:
  54.        {
  55.            break;
  56.        }
  57.        case 3:
  58.        {
  59.            //ventana_nueva(hwnd);
  60.            //MessageBox(hwnd,"elemento","ESTA ES LA FUNCION RESTA",MB_OK);//CAJA DE TEXTO TITULO DE LA VENTANA E INTRUCCION DENTRO
  61.            break;
  62.        }
  63.        case 4:
  64.        {
  65.  
  66.            MessageBoxA(hwnd, "elemento", "ESTA ES LA FUNCION RESTA", MB_OK);//CAJA DE TEXTO TITULO DE LA VENTANA E INTRUCCION DENTRO
  67.            break;
  68.        }
  69.        case 5:
  70.        {
  71.            ShowWindow(hwnd, SW_SHOWDEFAULT);
  72.            MessageBoxA(hwnd, "elemento", "Eborro pantallaA", MB_OK);//CAJA DE TEXTO TITULO DE LA VENTANA E INTRUCCION DENTRO
  73.            break;
  74.        }
  75.        case 6: //salir de la aplicacion
  76.        {
  77.            //MessageBox(hwnd, "¡Adiós !", "Cerrando...", MB_ICONERROR | MB_OK);
  78.            PostQuitMessage(0);//Manda WM_QUIT a la cola de mensajes que hará
  79.            //que el programa salga del bucle de mensajes              
  80.            return 0;
  81.        }
  82.  
  83.        }
  84.  
  85.  
  86.    }
  87.        /*case WM_LBUTTONUP:
  88.         {
  89.         int xPos = LOWORD(lParam);
  90.         int yPos = HIWORD(lParam);
  91.  
  92.         ostringstream os;
  93.         os << "Hizo clic con el botón izquierdo";
  94.  
  95.         if (wParam == MK_CONTROL)
  96.         os << " mientras oprimía la tecla CONTROL";
  97.         else if (wParam == MK_SHIFT)
  98.         os << " mientras oprimía la tecla SHIFT";
  99.         os << "\n\nCoordenadas: " << xPos << ", " << yPos;
  100.  
  101.         MessageBox(hwnd, os.str().c_str(), "Clic!", MB_ICONINFORMATION | MB_OK);
  102.         break;
  103.         }*/
  104.  
  105.    }
  106.    return DefWindowProc(hwnd, mensaje, wParam, lParam);
  107. }
  108.  
  109.  
  110.  
  111. LRESULT CALLBACK WndChildClass(HWND hwnd, UINT mensaje, WPARAM wParam, LPARAM lParam)
  112. {
  113.    switch (mensaje)
  114.    {
  115.    case WM_DESTROY:
  116.        PostQuitMessage(0);
  117.        break;
  118.    }
  119.    return DefWindowProc(hwnd, mensaje, wParam, lParam);
  120. }
  121.  
  122.  
  123.  
  124. /* Esta cadena se ocupa para la clase de ventana y la función
  125. CreateWindowEx() se refieran a un mismo nombre */
  126. char szNombreAplicacion[] = "Ejercicio2";
  127. char SzChildWindowClass[] = "MyChildWindowClass";
  128.  
  129.  
  130. int WINAPI WinMain(HINSTANCE hInstancia, HINSTANCE hInstanciaPrev,
  131.    LPSTR lpLineaCmd, int nEstadoVentana)
  132. {
  133.    //Los 4 pasos para crear una ventana...
  134.    //1. Establecer los 12 campos de la "clase de ventana"
  135.    WNDCLASSEXA ventana;
  136.  
  137.    ventana.cbSize = sizeof(WNDCLASSEXA);
  138.    ventana.style = CS_HREDRAW | CS_VREDRAW;
  139.    ventana.lpfnWndProc = ProcedimientoVentana; //recibe y maneja los eventos de la ventana como clics movimientos cierre de ventana etc. con punteros
  140.    ventana.cbClsExtra = 0;
  141.    ventana.cbWndExtra = 0;
  142.    ventana.hInstance = hInstancia;
  143.    ventana.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  144.    ventana.hCursor = LoadCursor(NULL, IDC_ARROW);
  145.    ventana.hbrBackground = (HBRUSH)(COLOR_WINDOWTEXT + 8);//CreateSolidBrush( RGB(0xa0, 0x60, 0xf8) );
  146.    ventana.lpszMenuName = NULL;
  147.    ventana.lpszClassName = szNombreAplicacion;//nombre de la clase de ventana
  148.    ventana.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
  149.  
  150.    //2. Dar de alta en el sistema a la "clase de ventana"
  151.    if (!RegisterClassExA(&ventana))
  152.    {
  153.        MessageBoxA(NULL,
  154.            "No fue posible dar de alta a la ventana, abortando ejecución",
  155.            "¡Error!", MB_ICONEXCLAMATION | MB_OK);
  156.        return FALSE;
  157.    }
  158.  
  159.    ventana.cbSize = sizeof(WNDCLASSEXA);
  160.    ventana.style = CS_HREDRAW | CS_VREDRAW;
  161.    ventana.lpfnWndProc = WndChildClass;
  162.    ventana.cbClsExtra = 0;
  163.    ventana.cbWndExtra = 0;
  164.    ventana.hInstance = hInstancia;
  165.    ventana.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  166.    ventana.hCursor = LoadCursor(NULL, IDC_ARROW);
  167.    ventana.hbrBackground = (HBRUSH)(COLOR_WINDOWTEXT + 8);
  168.    ventana.lpszMenuName = NULL;
  169.    ventana.lpszClassName = SzChildWindowClass;
  170.    ventana.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
  171.  
  172.    if (!RegisterClassExA(&ventana))
  173.    {
  174.        return FALSE;
  175.    }
  176.  
  177.    //3. Crear la ventana en base a la "clase de ventana" anteriormente registrada
  178.    HWND hwnd;
  179.    hwnd = CreateWindowExA(
  180.        1,                      //dwExEstilo
  181.        szNombreAplicacion,     //Nombre de clase de la ventana a la que pertenece
  182.        "Tienda de videos",  //Título de la ventana
  183.        //variables que permiten editar intefaz con usiario habilitando o desabilitando botones
  184.        WS_OVERLAPPED |
  185.        WS_CAPTION |
  186.        WS_SYSMENU,   //poner | despues de cada opcion y coma al final
  187.        //WS_THICKFRAME |
  188.        // WS_MINIMIZEBOX  |
  189.        //WS_MAXIMIZEBOX
  190.  
  191.  
  192.        //WS_OVERLAPPEDWINDOW,    //Tipo de ventana es igual a dwEstilo
  193.        CW_USEDEFAULT,          //Posición de la ventana en pantalla en "x"
  194.        CW_USEDEFAULT,          //Posición de la ventana en pantalla en "y"
  195.        500,                    //Ancho
  196.        450,                    //Alto
  197.        HWND_DESKTOP,
  198.        NULL,
  199.        hInstancia,
  200.        NULL);
  201.  
  202.    if (hwnd == NULL)
  203.    {
  204.        MessageBoxA(NULL, "Error al crear la ventana, abortando ejecución",
  205.            "¡Error!", MB_ICONEXCLAMATION | MB_OK);
  206.        return FALSE;
  207.    }
  208.  
  209.    HWND hChild = 0;
  210.  
  211.    hChild = CreateWindowA(
  212.        SzChildWindowClass,
  213.        "REGISTRO NUEVO",
  214.        WS_OVERLAPPEDWINDOW | WS_CHILD | WS_VISIBLE,
  215.        CW_USEDEFAULT,
  216.        CW_USEDEFAULT,
  217.        400,
  218.        400,
  219.        hwnd,
  220.        NULL,
  221.        hInstancia,
  222.        0);
  223.  
  224.  
  225.    //4. Mostrar la ventana en pantalla
  226.    ShowWindow(hwnd, SW_SHOWDEFAULT);
  227.    ShowWindow(hChild, SW_SHOWDEFAULT);
  228.  
  229.    //Necesario para manipular los mensajes o eventos de la ventana
  230.    MSG mensaje;
  231.    while (GetMessage(&mensaje, 0, 0, 0) > 0)  //bucle de mensajes para cola de mensajes entrantes
  232.    {
  233.        TranslateMessage(&mensaje);
  234.        DispatchMessage(&mensaje);
  235.    }
  236.  
  237.    return mensaje.wParam;
  238. }
  239.  
  240. void ventana_principal(HWND hwnd)//se crea ventana principal
  241. {
  242.    //MessageBox(hwnd, "Se creó la ventana", "Ejemplo",MB_ICONINFORMATION | MB_OK);
  243.  
  244.    Etiqueta = CreateWindowExA(0, "STATIC", "MENU PRINCIPAL",
  245.        WS_CHILD | WS_VISIBLE,
  246.        180,//posicion en x
  247.        200,//posicion en y
  248.        150,//ancho
  249.        30,//alto
  250.        hwnd,
  251.        NULL, 0, 0
  252.        );
  253.  
  254.    /*textbox= CreateWindow("edit",
  255.     " Menu principal", //nombre de la ventana
  256.     WS_BORDER | WS_CHILD|
  257.     WS_VISIBLE,
  258.     120,//posicion en x
  259.     180,//posicion en y
  260.     115,//ancho
  261.     20,//alto
  262.     hwnd,
  263.     NULL,NULL,NULL);*/
  264.  
  265.    CreateWindowA("BUTTON",
  266.        "Registro Nuevo",
  267.        WS_VISIBLE//VIsIBILIDAD DEL OBJETO
  268.        | WS_CHILD |
  269.        WS_BORDER, //MARGEN AL TEXTO
  270.        90, //x
  271.        240,//y
  272.        130,//ancho
  273.        30,//alto
  274.        hwnd,
  275.        (HMENU)2, NULL, NULL
  276.        );
  277.    CreateWindowA("BUTTON",
  278.        "Buscar pelicula",
  279.        WS_VISIBLE//VIsIBILIDAD DEL OBJETO
  280.        | WS_CHILD | WS_BORDER,
  281.        240, //x
  282.        240,//y
  283.        130,//ancho
  284.        30,//alto
  285.        hwnd,
  286.        (HMENU)3, NULL, NULL
  287.        );
  288.    CreateWindowA("BUTTON",
  289.        "Editar Registro",
  290.        WS_VISIBLE//VIsIBILIDAD DEL OBJETO
  291.        | WS_CHILD | WS_BORDER,
  292.        90, //x
  293.        290,//y
  294.        130,//ancho
  295.        30,//alto
  296.        hwnd,
  297.        (HMENU)4, NULL, NULL
  298.        );
  299.    CreateWindowA("BUTTON",
  300.        "Eliminar Registro",
  301.        WS_VISIBLE//VIsIBILIDAD DEL OBJETO
  302.        | WS_CHILD | WS_BORDER,
  303.        240, //x
  304.        290,//y
  305.        130,//ancho
  306.        30,//alto
  307.        hwnd,
  308.        (HMENU)5, NULL, NULL
  309.        );
  310.    CreateWindowA("BUTTON",//boton salir
  311.        "Salir",
  312.        WS_VISIBLE//VIsIBILIDAD DEL OBJETO
  313.        | WS_CHILD | WS_BORDER,
  314.        180, //x
  315.        340,//y
  316.        110,//ancho
  317.        30,//alto
  318.        hwnd,
  319.        (HMENU)6, NULL, NULL
  320.        );
  321.  
  322. }
  323.  
  324.  
  325.  



En línea

anfeli96

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: problema en dev c++ con windows.h
« Respuesta #5 en: 5 Diciembre 2014, 01:46 am »

oyeee muchisimas gracias eres mi heroe, pero me resultan dos preguntas como hago para que esta ventana quede por fuera de la principal (a un lado) y como hago para que salga solo cuando se presione un boton seria dejandola oculta por defecto y despues al presionar el boton colocar el showwindow' y acerca del libro no hay algun otro en español
« Última modificación: 5 Diciembre 2014, 02:08 am por anfeli96 » En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: problema en dev c++ con windows.h
« Respuesta #6 en: 5 Diciembre 2014, 02:32 am »

oyeee muchisimas gracias eres mi heroe, pero me resultan dos preguntas como hago para que esta ventana quede por fuera de la principal (a un lado) y como hago para que salga solo cuando se presione un boton seria dejandola oculta por defecto y despues al presionar el boton colocar el showwindow' y acerca del libro no hay algun otro en español

Eliminar la bandera WS_CHILD en la creación de la ventana hija:
Código:
    hChild = CreateWindowA(
        SzChildWindowClass,
        "REGISTRO NUEVO",
        WS_OVERLAPPEDWINDOW | WS_VISIBLE,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        400,
        400,
        hwnd,
        NULL,
        hInstancia,
        0);

Respecto a lo de ocultar la ventana podrias ocultar la ventana al momento de la creación usando ShowWindow con SW_HIDE:
Código:
ShowWindow(hChild, SW_HIDE);
Luego al presionar el boton usar la misma función ShowWindow con SW_SHOW para mostrarla de esa manera evitas estar creando el objeto siempre que se presiona el boton, nosé todo depende del diseño de tu aplicación... sino colocar el código para crear la ventana en el case del boton.

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema windows update (Windows XP Profesional SP3)
Windows
reem 4 4,082 Último mensaje 20 Febrero 2012, 22:28 pm
por reem
Problema con falso error en Reproductor de Windows Media en windows 7
Windows
buite 8 5,732 Último mensaje 20 Febrero 2013, 19:42 pm
por buite
Problema para Crear LAN con Windows 8 y Windows 7
Windows
Megan 2 3,894 Último mensaje 8 Junio 2013, 23:08 pm
por Megan
[Problema Windows 8]en sistemas efi windows solo se puede instalar en discos gpt
Windows
Graphixx 0 4,219 Último mensaje 30 Octubre 2013, 00:17 am
por Graphixx
problema con windows speech recognition macros de windows
Windows
Lobito de noche 0 2,827 Último mensaje 15 Septiembre 2014, 14:39 pm
por Lobito de noche
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines