CreateDialog后主窗体的菜单栏被锁死解决思路
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的例子,直接使用窗口类指定的菜单也是可以的~
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; }