线程中向主对话框发送消息

参考网上的例子,弄了个小程序试验....

建一个MFC对话框项目,添加一个按钮用来创建线程。

定义消息

#define WM_THREADOVER (WM_USER+1111)

对话框类中声明函数:

    afx_msg LRESULT OnThreadOver(WPARAM   wParam,LPARAM   lParam); 

定义消息响应函数

LRESULT CXXXDlg::OnThreadOver(WPARAM   wParam,LPARAM   lParam)

{  

    CString str;

    str.Format("para1:%d... para2:%d",wParam,lParam);

    MessageBox(str);

    return 1;

}

在消息列表中添加消息

ON_MESSAGE(WM_THREADOVER,&CXXXDlg::OnThreadOver)

定义线程句柄、ID:

    HANDLE hThread= NULL;

    unsigned int threadID = 0;

左键按钮消息中创建线程

hThread= (HANDLE)_beginthreadex(NULL,0,RunThread,(void *)this, 0, &threadID );

线程

unsigned  __stdcall RunThread(LPVOID param)

{

    CXXXDlg *pMainDlg= (CXXXDlg*) param;

    pMainDlg->MessageBox("ThreadMessageBox");

    Sleep(5000);

 

    ::SendMessage(pMainDlg->GetSafeHwnd(),WM_THREADOVER,1UL,2UL);

 

    return 0xdead;

}

下面时参考的地方~

==============================================================================================================================

VC 某窗口向其他窗口发送消息实现步骤

转至http://blog.csdn.net/perddy/article/details/2101327

一个工程中,子窗口需要将不同的状态信息上传给其他窗口,以便出现不同的显示。
主要实现过程为:

1、将其他窗口的窗口句柄设置为全局,并在初始化时赋值;
    HWND  hMainWnd ;
    hMainWnd = this->GetSafeHwnd();

2、自定义消息,并在其他窗口中添加响应函数;
Resource.h中添加
#define WM_MYMESSAGE (WM_USER+100)

类中添加
afx_msg void OnMyMessage(WPARAM wParam, LPARAM lParam); 函数以及其实现

消息映射中添加消息与消息处理函数对应
BEGIN_MESSAGE_MAP(CWebDlgDlg, CDialog)
    //{{AFX_MSG_MAP(CWebDlgDlg)
    ON_MESSAGE(WM_MYMESSAGE,MyMessage) 
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()


3、子窗口下发送消息

::SendMessage(hMainWnd,WM_MYMESSAGE,10L, 5L);

================================================================================================================

如何向对话框发送自定义的消息?



展开阅读全文

没有更多推荐了,返回首页