由于要求点击关闭对话框按钮的时候对话框最小化,
我重载了WM_CLOSE消息,
但是我在另外一个线程结束后需要向主线程post一个消息来关闭他,
此时的WM_CLOSE已经被重载,
我就自己添加了一个#define WM_MYCLOSE WM_USER+100,
添加消息映射函数ON_MESSAGE(WM_MYCLOSE, OnMyselfClose),
函数定义为
void CXXXDlg::OnMyselfClose()
{
CDialog::OnClose();
}
但是在CXXXXApp::Thread1()
{
........ ::PostMessage(hWnd,WM_MYCLOSE,0,0);//hWnd为主对话框句柄
}
后不能关闭主对话框,请问是为什么?还有其他的方法吗?
我重载了WM_CLOSE消息,
但是我在另外一个线程结束后需要向主线程post一个消息来关闭他,
此时的WM_CLOSE已经被重载,
我就自己添加了一个#define WM_MYCLOSE WM_USER+100,
添加消息映射函数ON_MESSAGE(WM_MYCLOSE, OnMyselfClose),
函数定义为
void CXXXDlg::OnMyselfClose()
{
CDialog::OnClose();
}
但是在CXXXXApp::Thread1()
{
........ ::PostMessage(hWnd,WM_MYCLOSE,0,0);//hWnd为主对话框句柄
}
后不能关闭主对话框,请问是为什么?还有其他的方法吗?
解决方案 »
- 高分求在 vc窗体里显示 webmail的图片和链接代码或者控件
- CComBSTR类型值向外部传出问题
- 寻高效的字符串相似度算法!
- 调用摄像头 内存溢出 求救各位高手
- 关于字体显示
- 关于CTabCtrl,可否在每个tab页上加一个关闭的按钮啊?或者有实现类似功能的其它控件吗?
- 请问哪里有VC图形编程的书下载?
- tc高手请进!!!
- CString,int,long,CTime,怎么样转换为_variant_t ,请教,谢谢!
- 请教:相同的OpengGL在不同的机器上运行结果为什么不一样呢???
- WNDCLASSEX.lpfnWndProc回调函数,其参数lParam和wParam是从哪里来的?
- 请教:如何使CScrollView实现自动滚动?
void CXXXXDlg::OnClose()
{
ShowWindow(SW_HIDE);
}
所以直接发WM_CLOSE主对话框就隐藏了~
在OnClose() 中,用标志位判断是关闭还是隐藏!
{
if(!m_bFlag)
ShowWindow(SW_HIDE);
else
CDialog::OnClose();}
m_bFlag是自己定义的一个BOOL,初始为false,如果需要关闭,那么,自己改成TRUE,然后发close消息!
CXXXXApp::Thread1()
{
........
CXXXXDlg dlg;
dlg.m_bFlag = TRUE;
::PostMessage(hWnd,WM_MYCLOSE,0,0);//hWnd为主对话框句柄
}
这样做的,还是不行
我的重载函数在CXXXXDlg中
void CXXXXDlg::OnClose()
{
if(!m_bFlag)
ShowWindow(SW_HIDE);
else
CDialog::OnClose();
}
尝试在DLG中添加静态公有成员变量,报错:
unresolved external symbol "public: static int CXXXXDlg::m_ucFlags" (?m_ucFlags@CXXXXDlg@@2HA)
唯一的区别是,WM_CLOSE的消息映射是ON_WM_CLOSE()
而我的是ON_MESSAGE(WM_MYCLOSE, OnMyselfClose)。我改成ON_COMMAND也不对奇怪