C++消息处理函数
请各位高手帮我解决一个问题。我写了一个程序,想让他点击了程序的关闭按钮过后,就是“x”,弹出一个信息框,有两个选择,一个是“是”,一个是“否”,别人说要用到消息WM_CL...
请各位高手帮我解决一个问题。 我写了一个程序,想让他点击了程序的关闭按钮过后,就是“x”,弹出一个信息框,有两个选择,一个是“是”,一个是“否”,别人说要用到消息WM_CLOSE什么的,但是我是C++初学者,有些不懂,还望各位高手赐教,谢谢
展开
3个回答
2015-09-09 · 知道合伙人教育行家
关注
展开全部
点击关闭按键是会发送消息给你的程序去处理的,也就是WM_CLOSE消息。这些消息处理都在回调函数 WInProc(一般这样命名,可以更改)中 类似这样:
LRESULT WINAPI WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
break;
case WM_KEYUP:
switch (wParam)
{
case VK_ESCAPE:
//User has pressed the escape key, so quit
DestroyWindow(hWnd);
return 0;
break;
}
break;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
你可以在 switch(msg) 下增加一个case语句,处理你的WM_CLOSE消息。
case WM_CLOSE:
if (IDYES == MessageBox(hWnd,"是否真的要退出?",NULL,MB_YESNO))
{
DestroyWindow(hWnd);
}
break;
LRESULT WINAPI WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
break;
case WM_KEYUP:
switch (wParam)
{
case VK_ESCAPE:
//User has pressed the escape key, so quit
DestroyWindow(hWnd);
return 0;
break;
}
break;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
你可以在 switch(msg) 下增加一个case语句,处理你的WM_CLOSE消息。
case WM_CLOSE:
if (IDYES == MessageBox(hWnd,"是否真的要退出?",NULL,MB_YESNO))
{
DestroyWindow(hWnd);
}
break;
展开全部
点击关闭按键是会发送消息给你的程序去处理的,也就是WM_CLOSE消息。这些消息处理都在回调函数 WInProc(一般这样命名,可以更改)中 类似这样:
LRESULT WINAPI WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
break;
case WM_KEYUP:
switch (wParam)
{
case VK_ESCAPE:
//User has pressed the escape key, so quit
DestroyWindow(hWnd);
return 0;
break;
}
break;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
你可以在 switch(msg) 下增加一个case语句,处理你的WM_CLOSE消息。
case WM_CLOSE:
if (IDYES == MessageBox(hWnd,"是否真的要退出?",NULL,MB_YESNO))
{
DestroyWindow(hWnd);
}
break;
LRESULT WINAPI WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
break;
case WM_KEYUP:
switch (wParam)
{
case VK_ESCAPE:
//User has pressed the escape key, so quit
DestroyWindow(hWnd);
return 0;
break;
}
break;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
你可以在 switch(msg) 下增加一个case语句,处理你的WM_CLOSE消息。
case WM_CLOSE:
if (IDYES == MessageBox(hWnd,"是否真的要退出?",NULL,MB_YESNO))
{
DestroyWindow(hWnd);
}
break;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
DefWindowProc和WindowProc都是回调处理消息API函数,DefWindowProc处理WindowProc没处理的消息。但是在你程序的场景中,CMFCWnd是CFrameWnd的子类,仅仅调用DefWindowProc不能实现全部CFrameWnd特色消息,必须调用父类的消息处理函数才行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询