下面的代码可以实现子线程向窗体主线程发消息,
如何实现主线程向子线程发消息呢?
请熟悉这块的朋友帮忙介绍下,谢谢//////////////////////////////////////////////
////// thrdTestDlg.h : header fileclass CThrdTestDlg : public CDialog
{
public: //AfxBeginThread相关参数
CWinThread * m_pThread;
static UINT ThreadProc(LPVOID pObj);
LRESULT OnMessage(WPARAM wParam, LPARAM lParam);
}
//////////////////////////////////////////////
////// thrdTestDlg.cpp : implementation file#define UM_MESSAGE 2010 //接受消息用的消息值BEGIN_MESSAGE_MAP(CThrdTestDlg, CDialog)
//{{AFX_MSG_MAP(CThrdTestDlg)
ON_MESSAGE(UM_MESSAGE,OnMessage) //消息值和回调函数绑定
//}}AFX_MSG_MAP
END_MESSAGE_MAP()//启动线程
void CThrdTestDlg::OnButton1()
{ m_pThread = AfxBeginThread(ThreadProc, this->m_hWnd);
}//子线程入口函数
UINT CThrdTestDlg::ThreadProc(LPVOID pObj)
{
CThrdTestDlg* pThis = (CThrdTestDlg*)pObj;
HWND hWnd = (HWND) pObj;
ASSERT(hWnd);
CString str = "Hello,World,下午好";
LPARAM sendMsg = (LPARAM)((LPCTSTR)str); //从子线程向主窗体发消息
::SendMessage(hWnd,UM_MESSAGE,(WPARAM)0,sendMsg);
return 0;
} //主线程接收消息的函数
LRESULT CThrdTestDlg::OnMessage(WPARAM wParam, LPARAM lParam)
{
LPCTSTR lpszText = (LPCTSTR)lParam;
AfxMessageBox(lpszText);
return 0;
}
//////////////////////////////////////////////
如何实现主线程向子线程发消息呢?
请熟悉这块的朋友帮忙介绍下,谢谢//////////////////////////////////////////////
////// thrdTestDlg.h : header fileclass CThrdTestDlg : public CDialog
{
public: //AfxBeginThread相关参数
CWinThread * m_pThread;
static UINT ThreadProc(LPVOID pObj);
LRESULT OnMessage(WPARAM wParam, LPARAM lParam);
}
//////////////////////////////////////////////
////// thrdTestDlg.cpp : implementation file#define UM_MESSAGE 2010 //接受消息用的消息值BEGIN_MESSAGE_MAP(CThrdTestDlg, CDialog)
//{{AFX_MSG_MAP(CThrdTestDlg)
ON_MESSAGE(UM_MESSAGE,OnMessage) //消息值和回调函数绑定
//}}AFX_MSG_MAP
END_MESSAGE_MAP()//启动线程
void CThrdTestDlg::OnButton1()
{ m_pThread = AfxBeginThread(ThreadProc, this->m_hWnd);
}//子线程入口函数
UINT CThrdTestDlg::ThreadProc(LPVOID pObj)
{
CThrdTestDlg* pThis = (CThrdTestDlg*)pObj;
HWND hWnd = (HWND) pObj;
ASSERT(hWnd);
CString str = "Hello,World,下午好";
LPARAM sendMsg = (LPARAM)((LPCTSTR)str); //从子线程向主窗体发消息
::SendMessage(hWnd,UM_MESSAGE,(WPARAM)0,sendMsg);
return 0;
} //主线程接收消息的函数
LRESULT CThrdTestDlg::OnMessage(WPARAM wParam, LPARAM lParam)
{
LPCTSTR lpszText = (LPCTSTR)lParam;
AfxMessageBox(lpszText);
return 0;
}
//////////////////////////////////////////////
解决方案 »
- 如何在对话框B中使用对话框A的的控件
- evc中如何动态加载ICON
- 引用调用规则
- 那位能给一个Gmail的邀请涵?
- 请问RichEditCtrl的问题,我在RichEdit中显示中文,2000下能正常显示,98下都变成乱码了,请问如何解决?
- 查询是出错,不知为什么?请求帮忙!
- 100分,再次求救,谁能告诉我屏蔽windows key.
- VC++,毕业设计,关于图像的显示和保存,拷贝其它工程的程序到自己工程下,为什么说很多东西没有定义啊,请高人指点该如何用其他工程的代码,具体的不走有没?
- (高分求解)请问如何用API的方法创建工具栏、状态栏?不能用MFC的类来生成!(急急急......)
- 请教网络高手,如何读取股票服务器上的数据?
- event线程同步问题
- 关于用VC6做串口通信,接收大量数据
--------------------
主线程向子线程发消息,要用PostThreadMessage么?
afx_msg void OnDestroy(WPARAM wParam, LPARAM lParam );
2、mythread.cpp (1) ON_THREAD_MESSAGE( WM_DESTROY, OnDestroy)
(2)
void MyThread::OnDestroy(WPARAM wParam, LPARAM lParam )
{
PostQuitMessage(0);
};
wm_destroy消息可以处理!