部分代码如下:
case WM_CLOSE:
if (IDYES==MessageBox(hwnd,"是否真的关闭?","weixin",MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
那儿错了?
case WM_CLOSE:
if (IDYES==MessageBox(hwnd,"是否真的关闭?","weixin",MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
那儿错了?
源程序如下:sample.c
//----------------------------------------------------
#include <windows.h>
#include "resource.h"LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
TCHAR szClassName[] = TEXT("Leaf");
HINSTANCE hInst;int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst, LPSTR lpszCmdLine, int nCmdShow)
{
HWND hWnd;
MSG msg;
WNDCLASS myProg;
if (!hPreInst)
{
myProg.style = CS_HREDRAW | CS_VREDRAW;
myProg.lpfnWndProc = WndProc;
myProg.cbClsExtra = 0;
myProg.cbWndExtra = 0;
myProg.hInstance = hInstance;
myProg.hIcon = NULL;
myProg.hCursor = LoadCursor(NULL, IDC_ARROW);
myProg.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
myProg.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);
myProg.lpszClassName = szClassName; if (!RegisterClass(&myProg))
return FALSE;
}
hInst = hInstance;
hWnd = CreateWindow(szClassName,
szClassName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (msg.wParam);
}LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
static HMENU hMenu;
switch (msg)
{
case WM_CREATE:
hMenu = LoadMenu(hInst, MAKEINTRESOURCE(IDR_MENU1));
hMenu = GetSubMenu(hMenu, 0);
return 0;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case ID_FILE_MESSAGE:
if (IDYES==MessageBox(hWnd, TEXT("是否真的关闭?"), TEXT("weixin"),MB_YESNO))
{
DestroyWindow(hWnd);
}
break;
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return (DefWindowProc(hWnd, msg, wParam, lParam));
}
return (0L);
}
*.rc 资源文件如下
//----------------------------------------------------// Microsoft Visual C++ generated resource script.
//
#include "resource.h"#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS/////////////////////////////////////////////////////////////////////////////
// 中文(中华人民共和国) resources#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
#ifdef _WIN32
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936)
#endif //_WIN32#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//1 TEXTINCLUDE
BEGIN
"resource.h\0"
END2 TEXTINCLUDE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//IDR_MENU1 MENU
BEGIN
POPUP "&File"
BEGIN
MENUITEM "&Message", ID_FILE_MESSAGE
END
END#endif // 中文(中华人民共和国) resources
/////////////////////////////////////////////////////////////////////////////#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
改成while (GetMessage(&msg, NULL, 0, 0))就对了
请问是怎么回事?