Я только что сделал простое окно C++ и добавил меню, но когда я нажимаю на меню, специально «О», я хочу показать просто MessageBox, но я не может - потому что это не отображается.Показать MessageBox при нажатии кнопки Меню не отображается на экране
LPCWSTR App_Name = TEXT("TestApp");
LPCWSTR App_Title = TEXT("TestTitle");
const int windowWidth = 480;
const int windowHeight = 480;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iCmdShow)
{
WNDCLASS wc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hInstance = hInstance;
wc.lpfnWndProc = WndProc;
wc.lpszClassName = App_Name;
wc.lpszMenuName = MAKEINTRESOURCE(MNU_MAINMENU);
wc.style = CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wc);
RECT rc;
GetWindowRect(GetDesktopWindow(), &rc);
long screenWidth = rc.right;
long screenHeight = rc.bottom;
HWND hwnd = CreateWindow
(
App_Name,
App_Title,
WS_MINIMIZEBOX | WS_SYSMENU,
(screenWidth/2) - (windowWidth/2), (screenHeight/2)-(windowHeight/2),
windowWidth, windowHeight,
NULL, NULL,
hInstance, NULL
);
ShowWindow(hwnd, iCmdShow);
UpdateWindow(hwnd);
MSG msg;
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
и MessageBox ...:
LRESULT CALLBACK WndProc(HWND hwnd,UINT message, WPARAM wparam, LPARAM lparam)
{
switch(message)
{
case WM_COMMAND:
id = LOWORD(wparam);
event = LOWORD(wparam);
switch(id)
{
case MNU_HELP_ABOUT:
MessageBox(NULL, TEXT("TEXT"), TEXT("TITLE"), MB_OK | MB_ICONINFORMATION);
break;
}
break;
}
}
меню работает, потому что я добавил Quit и такие, так что я знаю, что реагирует на щелчки по меню, но когда я нажимаю О вы слышите всплывающее окно, но показывается MessageBox.
Любые идеи?
Уже пробовал, что, те же результаты. Если бы это было по умолчанию, только мой последний тест у меня его не было. Итак ... – Deukalion
OK. Запустите SpyXX (который, как я предполагаю, все еще существует) и посмотрите, можете ли вы найти окно сообщения в списке окон. – RobH
О, и вывести сообщение журнала или что-то подобное, чтобы убедиться, что вызов MessageBox действительно сделан. – RobH