我有一个基于对话框的程序,对话框上面有一个button,
当点击这个button后执行PostMessage(WM_CLOSE),可是
窗口不但不能关掉,而且还出现错误,错误发生在:
LRESULT CWnd::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// OnWndMsg does most of the work, except for DefWindowProc call
LRESULT lResult = 0;
if (!OnWndMsg(message, wParam, lParam, &lResult))
lResult = DefWindowProc(message, wParam, lParam);
return lResult;//这里返回值为0,
}
最后返回值为0,也就是说这个消息没有被handled.
问题:请问各位大虾为什么会产生这种错误?可能的原因由那些?
当点击这个button后执行PostMessage(WM_CLOSE),可是
窗口不但不能关掉,而且还出现错误,错误发生在:
LRESULT CWnd::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// OnWndMsg does most of the work, except for DefWindowProc call
LRESULT lResult = 0;
if (!OnWndMsg(message, wParam, lParam, &lResult))
lResult = DefWindowProc(message, wParam, lParam);
return lResult;//这里返回值为0,
}
最后返回值为0,也就是说这个消息没有被handled.
问题:请问各位大虾为什么会产生这种错误?可能的原因由那些?
当点击这个button后使用OnOK()多省事啊?
不管是Close还是OnOK结果都一样,因为这两个函数最后还是要发一个WM_CLOSE消息。现在的问题是:为什么这个WM_CLOSE消息不能被handled?
不好意思,写错了。
是OnWndMsg返回0。
{
// OnWndMsg does most of the work, except for DefWindowProc call
LRESULT lResult = 0;
if (!OnWndMsg(message, wParam, lParam, &lResult))
lResult = DefWindowProc(message, wParam, lParam);
return lResult;//这里返回值为0,
}
你这个是重载的吗?
我没有重载这个debug 和release下工作正常
你真是天才,既然如此那就请你解释一下PostMessage的用法好了,不过我不给你分。:)
{
// OnWndMsg does most of the work, except for DefWindowProc call
LRESULT lResult = 0;
if (!OnWndMsg(message, wParam, lParam, &lResult))
lResult = DefWindowProc(message, wParam, lParam);
return lResult;//这里返回值为0,
}
我用了你这段代码,没有出现你的问题阿