首先你要自己定义一个消息,也就是你的WM_IAMFINISHED,然后在线程结束的时候取得主线程的指针,向它传递消息就可以了。用PostMessage().
解决方案 »
- 内存碎片的疑问
- 两场平局1500分到手。
- 关于十六进制的问题
- ofstream的文件流写的时候可以设置格式吗?
- 在一个局域网中, 我在A机, 现在我想断开B机 与 C机 之间的 TCP连接. 要如何做做呢?
- formview中放入EDIT控件,如何让控件和formview窗口一样大小?(在分割窗口中)
- 一个关于 COM 的基础问题 :COM 组件能继承或派生 COM 组件吗? -----我问了三个关于 COM 的问题了,但是无一得到解答,帖子也没有人看,
- COM如何传递一个VARIANT结构呢
- ??MFC中 CSize 类 所指的逻辑单位到底是什么单位(像素,twip,pound,point)?
- 关于spin 控制的问题
- 如何在窗口指定位置逐一显示一系列位图?
- 求教两的结构
:)
我在该对话框类中定义了一个函数用以响应WM_IAMFINISHED 消息,为:
LRESULT CTestDlg::OnFinished(WPARAM wparam, LPARAM lparam)
{
AfxMessageBox("A thread has finished");
return 0;
}又增加了消息映射:
BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
......
ON_MESSAGE (WM_IAMFINISHED,OnFinished )
//}}AFX_MSG_MAP
END_MESSAGE_MAP()在线程结束的地方发送消息:
UINT OnBeginThread(LPVOID pParam)
{
Sleep(10000);
::PostMessage((HWND) pParam,WM_IAMFINISHED,0,0);
return 0;
}
但是线程结束时,却没有弹出对话框,请问是什么原因?
afx_msg LRESULT OnFinished(WPARAM wparam, LPARAM lparam);
一句?