Не удается закрыть окно сообщения
я использую vs2010, создаю приложение win32, добавляю диалоговый ресурс idd_dialog1 . запустите exe-файл, нажмите кнопку ОК ,затем покажите окно сообщения ,но я не могу закрыть messagebox, он не отвечает на мои клики.
вот мой код:
#include "stdafx.h" #include "testdlg.h" #define MAX_LOADSTRING 100 // 全局变量: HINSTANCE hInst; // 当前实例 TCHAR szTitle[MAX_LOADSTRING]; // 标题栏文本 TCHAR szWindowClass[MAX_LOADSTRING]; // 主窗口类名 BOOL InitInstance(HINSTANCE, int); INT_PTR CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); MSG msg; if (!InitInstance (hInstance, nCmdShow)) { return FALSE; } // 主消息循环: while (GetMessage(&msg, NULL, 0, 0)) { if (!IsDialogMessage(msg.hwnd,&msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } return (int) msg.wParam; } BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { HWND hWnd; hInst = hInstance; // 将实例句柄存储在全局变量中 hWnd =CreateDialog(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,WndProc); if (!hWnd) { return FALSE; } ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); return TRUE; } INT_PTR CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; switch (message) { case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); switch (wmId) { case IDOK: MessageBox(hWnd,_T("can no close!"),_T("confused!"),MB_OK); break; case IDCANCEL: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); EndPaint(hWnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }
Что я уже пробовал:
я использую функцию isdialogmessage, но она не имеет никакого эффекта.
[no name]
Попробуйте с помощью этой функции MessageBox(null,в то _t("не закрывать!"),То _t("перепутал!"),MB_OK);