C++ Win32求解MessageBox消息对话框没法显示出来,但可以enter来控制

运行后的窗口可以正常显示出来,我设置了一个点击关闭窗口后弹出一个MessageBox消息对话框来确认是否关闭窗口,但是这个MessageBox不能正常显示;点击关闭按钮后... 运行后的窗口可以正常显示出来,我设置了一个点击关闭窗口后弹出一个MessageBox消息对话框来确认是否关闭窗口,但是这个MessageBox不能正常显示;
点击关闭按钮后原来的窗口变成锁定状态,不能操作,但是可以通过enter键来操作MessageBox对话框确认关闭窗口!现象就好像是MessageBox对话框功能出来了,就是看不到框而已!
请问各位大神,怎样才能令这个MessageBox对话框正常显示。
#include <windows.h>

LRESULT CALLBACK win(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);

int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
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_WINLOGO);
wc.hInstance = hInstance;
wc.lpfnWndProc = win;
wc.lpszClassName = "first";
wc.lpszMenuName = NULL;
wc.style = CS_HREDRAW | CS_VREDRAW;

RegisterClass(&wc);

HWND hwnd;
hwnd = CreateWindow("first","第一个窗口",WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL);

ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);

MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}

LRESULT CALLBACK win(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch(uMsg)
{
case WM_CHAR:
break;
case WM_LBUTTONDOWN:
break;
case WM_PAINT:
break;
case WM_CLOSE:
if(IDYES==MessageBox(hwnd,"是否结束?","提醒!",MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}
展开
 我来答
mafangsan
2014-10-20 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1万
采纳率:71%
帮助的人:2607万
展开全部
如果你不删除这个
case WM_PAINT:
break;
会导致系统未正确重绘窗口,而把MessageBox窗口覆盖。所以MessageBox已经出来了,但是显示不正常。
qinflying
2014-10-19 · 一个低调有内涵的技术人员
qinflying
采纳数:452 获赞数:1415

向TA提问 私信TA
展开全部
MessageBox();中的窗口句柄要为空
更多追问追答
追问
试过了,还是不行~
追答
case WM_CHAR:
break;
case WM_LBUTTONDOWN:
break;
case WM_PAINT:
break;

这些你都没有自己添加的消息响应,可以不写
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-10-19
展开全部
把WM_PAINT消息的空处理拿掉。
更多追问追答
追问
是不是WM_PAINT消息一定要有消息??
追答
case WM_PAINT:
break;

我的意思是把这两行删掉。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式