[C con Clase] Problemas con cuadros de dialogo

Kyosuke Kasuga kyosuke_cl en yahoo.es
Lun Ene 7 06:12:38 CET 2008


Hi!!!, Yo otra vez, el problema que tengo ahora es muy raro, me compila y linkea todo bien, se ejecuta el programa y me aparece el menú, pero cuando selecciono una opción, el cuadro de dialogo que llamo, me aparece sin la ventana, es decir solo me aparecen los controles como flotando en la pantalla, y mas encima se queda pegado, ya revise el codigo y no encuentro ningún error, asi que he pensado que a lo mejor me falta agregar algo por los nuevos controles (Listview y Data timer picker), adjunto el proyecto por si alguien tiene tiempo de echarle una miradita y decirme cual es mi error, se los agradeceria mucho.
   
  Saludos.
   
  P.D. : Por si a alguien le da flojera descargar el proyecto, dejo aquí el main de mi programa.
   
  #define _WIN32_IE 0x0500
#include <string>
#include <windows.h>
#include <commctrl.h>
#include "Recursos.h"
   
  BOOL CALLBACK UsuarioAgregar (HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK ProductoAgregar (HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK ProductoBusqueda (HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK IngredienteAgregar (HWND, UINT, WPARAM, LPARAM);
   
  /*  Declare Windows procedure  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
   
  void SeleccionMenu (HWND, WPARAM);
  MensajeGlobal Llamada;
HINSTANCE hDialog1, hDialog2;
   
  /*  Make the class name into a global variable  */
char szClassName[ ] = "VentanaAp";
   
  int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance,
                    LPSTR lpszArgument, int nFunsterStil)
{
    HWND hwnd;               /* Este es el handle para nuestra ventana */
    MSG messages;            /* Aquí son grabados los mesanjes de la aplicación */
    HACCEL hAccel;
    WNDCLASSEX wincl;        /* Estructura de datos para la windowclass */
    INITCOMMONCONTROLSEX icex;
      icex.dwSize = sizeof(icex);
    icex.dwICC = ICC_DATE_CLASSES;
    InitCommonControlsEx(&icex);
      /* Estructura de ventana */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;      /* Esta función es llamada por Windows */
    wincl.style = CS_DBLCLKS;                 /* Atrapa dobles-clicks */
    wincl.cbSize = sizeof (WNDCLASSEX);
      /* Usa icono y Puntero del mouse por defecto */
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName ="Menu_Principal";  /* Con menu */
    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
    wincl.cbWndExtra = 0;                      /* Estructura o instancia de ventana */
    /* Usa por defecto el color y el fondo de Windows */
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
      /* Registra la clase de ventana, y si falla sale del programa */
    if (!RegisterClassEx (&wincl))
        return 0;
      /* La clase es registrada, y crae el programa */
    hwnd = CreateWindowEx (
           0,                   /* Extended possibilites for variation */
           szClassName,         /* Nombre de la Clase */
           "Restorant Chichómon",       /* Texto del titulo */
           WS_OVERLAPPEDWINDOW, /* Ventana por defecto */
           CW_USEDEFAULT,       /* Windows decide la posición */
           CW_USEDEFAULT,       /* Donde la ventana termina en la pantalla */
           544,                 /* El ancho del programa */
           375,                 /* Y alto en pixels */
           HWND_DESKTOP,        /* La ventana como ventana hija */
           NULL,                /* No menu */
           hThisInstance,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );
      hAccel = LoadAccelerators(hThisInstance, "Menu_Principal");
    ShowWindow (hwnd, nFunsterStil);     /* Hace la ventana visible en pantalla */
      /* Loop de mensajes, Corre hasta que GetMessage() retorne 0 */
    while (GetMessage (&messages, NULL, 0, 0)){
        if (!TranslateAccelerator (hwnd, hAccel, &messages)){
           TranslateMessage(&messages);
           DispatchMessage(&messages);
        }
    }
    /* The program return-value is 0 - The value that PostQuitMessage() gave */
    return messages.wParam;
}
  
/*  This function is called by the Windows function DispatchMessage()  */
  LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
 switch (message){
      case WM_COMMAND:
           SeleccionMenu (hwnd, wParam);
           break;
      case WM_DESTROY:
           PostQuitMessage (0);
           break;
      default:
            return DefWindowProc (hwnd, message, wParam, lParam);
 }
 return 0;
}
  BOOL CALLBACK ProductoAgregar (HWND hCDialog, UINT mensaje, WPARAM wParam, LPARAM lParam)
{
 switch (mensaje){
        case WM_COMMAND:
            switch (LOWORD(wParam)){
                    case IDCANCEL:
                        EndDialog (hCDialog,0);
                        return 1;
                    case IDOK:
                        MessageBox(hCDialog, "Ficha lista", "Producto", MB_OK);
                        EndDialog (hCDialog,0);
                        return 1;
            }
 }
  }
  BOOL CALLBACK ProductoBusqueda (HWND hCDialog, UINT mensaje, WPARAM wParam, LPARAM lParam)
{
 switch (mensaje){
        case WM_INITDIALOG:
             SendDlgItemMessage(hCDialog, IDC_COMBO1, CB_ADDSTRING, 0, (LPARAM)"Descripción");
             SendDlgItemMessage(hCDialog, IDC_COMBO1, CB_ADDSTRING, 0, (LPARAM)"Código");
             SendDlgItemMessage(hCDialog, IDC_COMBO1, CB_SELECTSTRING, (WPARAM)-1, (LPARAM)"Descripción");
             SetFocus(GetDlgItem(hCDialog, IDC_COMBO1));
        break;
        case WM_COMMAND:
            switch (LOWORD(wParam)){
                    case IDCANCEL:
                        EndDialog (hCDialog,0);
                        return 1;
                    case IDOK:
                        MessageBox(hCDialog, "Ficha lista", "Producto", MB_OK);
                        EndDialog (hCDialog,0);
                        return 1;
            }
 }
  }
  BOOL CALLBACK IngredienteAgregar (HWND hCDialog, UINT mensaje, WPARAM wParam, LPARAM lParam)
{
 switch (mensaje){
        case WM_COMMAND:
            switch (LOWORD(wParam)){
                    case IDCANCEL:
                        EndDialog (hCDialog,0);
                        return 1;
                    case IDOK:
                        MessageBox(hCDialog, "Ficha lista", "Producto", MB_OK);
                        EndDialog (hCDialog,0);
                        return 1;
            }
 }
  }
  BOOL CALLBACK UsuarioAgregar (HWND hCDialog, UINT mensaje, WPARAM wParam, LPARAM lParam)
{
 switch (mensaje){
        case WM_COMMAND:
            switch (LOWORD(wParam)){
                    case IDCANCEL:
                        EndDialog (hCDialog,0);
                        return 1;
                    case IDOK:
                        MessageBox(hCDialog, "Ficha lista", "Producto", MB_OK);
                        EndDialog (hCDialog,0);
                        return 1;
            }
 }
  }
  void SeleccionMenu (HWND hwnd, WPARAM wParam)
{
    int Respuesta;
    char Cadena[255];
      switch(wParam){
        case IDM_SALIR_DEL_PROGRAMA:
            Respuesta = MessageBox (hwnd, "¿Desea abandonar el programa?", "Chanchichó", MB_YESNO);
            if (Respuesta == IDYES){
                PostQuitMessage(0);
            }
            break;
        case IDM_BUSCAR_PRODUCTO:
            DialogBox (hDialog1,"CD_Producto_busqueda", hwnd,(DLGPROC)ProductoBusqueda);
            break;
        case IDM_AGREGAR_PRODUCTO:
            DialogBox(hDialog1, "CD_Producto_Agregar", hwnd, (DLGPROC)ProductoAgregar);
            break;
        case IDM_AGREGAR_INGREDIENTE:
            DialogBox(hDialog1, "CD_Ingrediente_agregar", hwnd, (DLGPROC)IngredienteAgregar);
            break;
        case  IDM_AGREGAR_USUARIO:
            DialogBox(hDialog1, "CD_Usuario_Agregar", hwnd, (DLGPROC)UsuarioAgregar);
            break;
        default:
            sprintf (Cadena, "Opción : %04d", (int)wParam);
            MessageBox (hwnd, Cadena, "Desconocido", MB_ICONEXCLAMATION);
            break;
    }
    return;
}


Entre más numerosos somos, más cerca estamos de nuestra propia extinción. 

http://bisbirudolfo.blogspot.com/
       
---------------------------------

Web Revelación Yahoo! 2007:
 Premio Favorita del Público - ¡Vota tu preferida!
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20080107/98dd9c3b/attachment.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: Programa.zip
Type: application/x-zip-compressed
Size: 6382 bytes
Desc: 3529086187-Programa.zip
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20080107/98dd9c3b/attachment.bin>


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