[C con Clase] 2 Ventanas

Juan Antonio jalr43 en hotmail.com
Mie Sep 5 22:19:34 CEST 2007


Hola.

Este link te puede ayudar: http://msdn2.microsoft.com/en-us/library/ms632598.aspx

La idea es definirte una nueva clase para la nueva ventana (puede tener otra función para procesar los mensajes, otro color de fondo, cursor, etc.) con la variable WNDCLASSEX y registrarla, tal y como se hace para la ventana principal. Usar la función CreateWindowEx para crear la nueva ventana y sólo necesitas también la instancia de la aplicación. Tienes dos opciones:

1.- Usa una variable global y asignala en la función WinMain. Poco recomendable.

2.- Dentro del CALLBACK de la ventana principal añade el mensaje WM_CREATE y almacenalá en una variable estática. De esta manera dentro de ese CALLBACK podrás crear una ventana nueva, por ejemplo al procesar el mensaje WM_COMMAND de un botón.

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    static HINSTANCE hInstance;
    HWND hBoton;
    
    switch (message)                  /* handle the messages */
    {
        case WM_CREATE:
             hInstance = ((LPCREATESTRUCT)lParam)->hInstance;
             hBoton = CreateWindowEx( 0, "BUTTON", "Crear otra ventana", WS_CHILD | WS_BORDER | WS_VISIBLE,
                                      100, 100, 80, 30, hwnd, (HMENU)CM_BUTTON, hInstance, NULL ); 
             break;
        case WM_COMMAND:
             if( LOWORD( wParam ) == CM_BUTTON ) 
                 MessageBox( hwnd, "Se ha pulsado el botón", "Aviso", MB_OK );
             break;
        case WM_DESTROY:
            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
            break;
        default:                      /* for messages that we don't deal with */
            return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}


Un saludo.
  ----- Original Message ----- 
  From: sebastianoldani 
  To: Lista de correo sobre C y C++ 
  Sent: Wednesday, September 05, 2007 2:54 PM
  Subject: Re: [C con Clase] 2 Ventanas


  Hola, estoy usando windows, estoy programando con el api de windows directamente. Mi proximo paso es entrar calculo que con QT, no me decidi aun.
  Pero si podes pasarme como seria para definir una nueva ventana me ayudas bastante, gracias igual.
  bye!!!


  Ro escribió: 
    Hola!
    ¿Qué librería gráfica estás usando?, ¿wxWidgets?, ¿QT?. Y, ¿sobre qué plataforma?, ¿GNU/Linux?, ¿Windows?, ¿Mac OSX?
    Si no nos dás mas datos, es complicado...

    Salud!
    Ro



    El día 5/09/07, sebastianoldani <sebastianoldani en gmail.com> escribió: 
      Hola, tengo una duda, como puedo hacer para que mi programita de una
      sola ventana, me abra otra ventana al hacer por ejemplo un clic en un
      control?

      Tengo un programita, y quiero que al hacer clic en un boton me cree otra 
      ventana, donde pueda poner otros controles y otras cosas, tengo que
      hacerlo si o si con un dialogbox?. No quiero crear frames, sino ventanas
      y preferentemente modals.

      Bueno, espero me hayan entendido y me puedan ayudar, gracias. 
      Bye

      _______________________________________________
      Lista de correo Cconclase Cconclase en listas.conclase.net
      http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
      Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ



----------------------------------------------------------------------------
_______________________________________________
Lista de correo Cconclase Cconclase en listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ



------------------------------------------------------------------------------


  _______________________________________________
  Lista de correo Cconclase Cconclase en listas.conclase.net
  http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
  Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20070905/1d4c8120/attachment.html>


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