WIN32 API dosent show dialog box - C ++

Hello, I'm trying to learn how to create Windows applications using the WIN32 API. To do this, I go through The Forgers Tutorial on this. I was stuck trying to open my first dialog when I clicked on a menu item. I checked the MSDN website and looked at the documentation for all the relevant functions in my code and everything that makes APREARS right for me. But, of course, I don’t know, because I’m just studying, I wonder if anyone can point out my mistake or maybe point me in the direction of what I might lack in the documentation. I'm sure this is something really dumb (as is always the case with these things) anyway here is my little script. Hope any of you can help. thank

#include <windows.h>
#include "resource.h"
/*  Declare Windows procedure  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK AboutDlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
/*  Make the class name into a global variable  */
char szClassName[ ] = "WindowsApp";

int WINAPI WinMain (HINSTANCE hThisInstance,
                HINSTANCE hPrevInstance,
                LPSTR lpszArgument,
                int nFunsterStil)

{
HWND hwnd;               /* This is the handle for our window */
MSG messages;            /* Here messages to the application are saved */
WNDCLASSEX wincl;        /* Data structure for the windowclass */

/* The Window structure */
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
wincl.cbSize = sizeof (WNDCLASSEX);

/* Use default icon and mouse-pointer */
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL;                 /* No menu */
wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
wincl.cbWndExtra = 0;                      /* structure or the window instance */
/* Use Windows default color as the background of the window */
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

/* Register the window class, and if it fails quit the program */
if (!RegisterClassEx (&wincl))
    return 0;

/* The class is registered, let create the program*/
hwnd = CreateWindowEx (
       0,                   /* Extended possibilites for variation */
       szClassName,         /* Classname */
       "Windows App",       /* Title Text */
       WS_OVERLAPPEDWINDOW, /* default window */
       CW_USEDEFAULT,       /* Windows decides the position */
       CW_USEDEFAULT,       /* where the window ends up on the screen */
       544,                 /* The programs width */
       375,                 /* and height in pixels */
       HWND_DESKTOP,        /* The window is a child-window to desktop */
       NULL,                /* No menu */
       hThisInstance,       /* Program Instance handler */
       NULL                 /* No Window Creation data */
       );

/* Make the window visible on the screen */
ShowWindow (hwnd, nFunsterStil);

/* Run the message loop. It will run until GetMessage() returns 0 */
while (GetMessage (&messages, NULL, 0, 0))
{
    /* Translate virtual-key messages into character messages */
    TranslateMessage(&messages);
    /* Send message to WindowProcedure */
    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)                  /* handle the messages */
{
    case WM_CREATE:
         {
             HMENU  hMenu, hSubMenu, hOtherMenu, hOtherSubMenu;

             hMenu = CreateMenu();
             hSubMenu = CreatePopupMenu();
             hOtherMenu = CreateMenu();
             hOtherSubMenu = CreatePopupMenu();
             AppendMenu(hSubMenu, MF_STRING, ID_FILE_EXIT, "E&xit");
             AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, "&File");
             AppendMenu(hSubMenu, MF_STRING, ID_STUFF, "S&tuff");


             AppendMenu(hOtherSubMenu, MF_STRING,ID_OTHER_SUB, "O&ther");
             AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hOtherSubMenu, "&Other");


             SetMenu(hwnd, hMenu); 
             //SetMenu(hwnd, hOtherMenu);

             }
             break;

    case WM_LBUTTONDOWN:
         MessageBox(hwnd, "this is my program", "program box", 0);
         break;
    case WM_CLOSE:
         DestroyWindow(hwnd);
         break;
    case WM_DESTROY:
        PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
        break;
             case WM_COMMAND:
         switch(LOWORD(wParam))
         {
             case ID_STUFF:
                 DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_ABOUT), hwnd, AboutDlgProc);
                 break;

             case ID_FILE_EXIT:
                  PostQuitMessage(0);
                  break;
         } 
    default:                      /* for messages that we don't deal with */
        return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
BOOL CALLBACK AboutDlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){
 switch(message)
 {
     case WM_INITDIALOG:
              return TRUE;
     case WM_COMMAND:
              switch(LOWORD(wParam))
              {
                  case IDOK:
                   EndDialog(hwnd, IDOK);
break;
case IDCANCEL:
EndDialog(hwnd, IDCANCEL);
break;
}     
break;
default:
return FALSE; 
}
return TRUE;
}

this is .rc

#include "resource.h"
#include <windows.h>

    IDR_MYMENU MENU
    BEGIN
    POPUP "F&ile"
    BEGIN
       MENUITEM "E&xit", ID_FILE_EXIT
       MENUITEM "stuff I like", ID_STUFF
    END
END    


IDD_ABOUT DIALOG DISCARDABLE 0,0,239,66
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "About Box"
FONT 8, "MS Sans Serif"
BEGIN
    DEFPUSHBUTTON "&ok", IDOK, 174,18,50,14
    PUSHBUTTON "&Cancel", IDCANCEL, 174,18,50,14
    GROUPBOX "About this program...",IDC_STATIC,7,7,225,52
    CTEXT "This is a Modular Database program", IDC_STATIC, 16,18,144,33
END

and this is the title for .rc

#define IDR_MYMENU 101

#define ID_FILE_EXIT 4001
#define ID_STUFF 4002

#define IDC_STATIC -1
#define IDD_ABOUT 102
#define ID_OTHER_SUB 4003

P.S. , , , , . !

+3
1

, resource.h recource.rc .

, , .

, .

mingw4.7 dev++ IDE.

After adding

Before adding

+1

All Articles