读书人

CreateDialog后主窗体的菜单栏被锁死解

发布时间: 2012-09-09 09:27:54 作者: rapoo

CreateDialog后主窗体的菜单栏被锁死
m_hWnd = CreateWindow(" MainWindow", Name,
m_Style,
m_PosX, m_PosY,
m_Width, m_Height,
NULL, m_hMenu, m_Hinst, NULL);

hMenu是一个从资源加载的菜单句柄,然后我调用CreateDialog后,发现原来的主窗体上的菜单被锁死,求高手解答我应该怎么做

[解决办法]
载入菜单资源的时候没什么问题吧,下面是MSDN的例子,直接使用窗口类指定的菜单也是可以的~

C/C++ code
#include <windows.h>  // Global variable  HINSTANCE hinst;  // Function prototypes.  int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int); InitApplication(HINSTANCE); InitInstance(HINSTANCE, int); LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);  // Application entry point.  int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance,     LPSTR lpCmdLine, int nCmdShow) {     MSG msg;      if (!InitApplication(hinstance))         return FALSE;      if (!InitInstance(hinstance, nCmdShow))         return FALSE;      BOOL fGotMessage;    while ((fGotMessage = GetMessage(&msg, (HWND) NULL, 0, 0)) != 0 && fGotMessage != -1)     {         TranslateMessage(&msg);         DispatchMessage(&msg);     }     return msg.wParam;         UNREFERENCED_PARAMETER(lpCmdLine); }  BOOL InitApplication(HINSTANCE hinstance) {     WNDCLASSEX wcx;      // Fill in the window class structure with parameters     // that describe the main window.      wcx.cbSize = sizeof(wcx);          // size of structure     wcx.style = CS_HREDRAW |         CS_VREDRAW;                    // redraw if size changes     wcx.lpfnWndProc = MainWndProc;     // points to window procedure     wcx.cbClsExtra = 0;                // no extra class memory     wcx.cbWndExtra = 0;                // no extra window memory     wcx.hInstance = hinstance;         // handle to instance     wcx.hIcon = LoadIcon(NULL,         IDI_APPLICATION);              // predefined app. icon     wcx.hCursor = LoadCursor(NULL,         IDC_ARROW);                    // predefined arrow     wcx.hbrBackground = GetStockObject(         WHITE_BRUSH);                  // white background brush     wcx.lpszMenuName =  "MainMenu";    // name of menu resource     wcx.lpszClassName = "MainWClass";  // name of window class     wcx.hIconSm = LoadImage(hinstance, // small class icon         MAKEINTRESOURCE(5),        IMAGE_ICON,         GetSystemMetrics(SM_CXSMICON),         GetSystemMetrics(SM_CYSMICON),         LR_DEFAULTCOLOR);      // Register the window class.      return RegisterClassEx(&wcx); }  BOOL InitInstance(HINSTANCE hinstance, int nCmdShow) {     HWND hwnd;      // Save the application-instance handle.      hinst = hinstance;      // Create the main window.      hwnd = CreateWindow(         "MainWClass",        // name of window class         "Sample",            // title-bar string         WS_OVERLAPPEDWINDOW, // top-level window         CW_USEDEFAULT,       // default horizontal position         CW_USEDEFAULT,       // default vertical position         CW_USEDEFAULT,       // default width         CW_USEDEFAULT,       // default height         (HWND) NULL,         // no owner window         (HMENU) NULL,        // use class menu         hinstance,           // handle to application instance         (LPVOID) NULL);      // no window-creation data      if (!hwnd)         return FALSE;      // Show the window and send a WM_PAINT message to the window     // procedure.      ShowWindow(hwnd, nCmdShow);     UpdateWindow(hwnd);     return TRUE;  } 

读书人网 >C++

热点推荐