首先是自定义消息的步骤;
自定义消息
1.发送消息的对话框的.h文件中添加:
#define WM_USERMESSAGE WM_USER+n //WM_USERMESSAGE为自己定义的消息名称,n>100。
2.在需要发送消息的地方添加
::SendMessage(hwnd,WM_USERMESSAGE,XXXX,XXXX);hwnd是要接收消息的窗口的句柄;GetSafeHwnd()或者FindWindow()获取,第二个参数是消息的名称,第三个参数是WPARAM wParam, 第四个是LPARAM lParam就是需要输的数据(0,0)的时候没有,单纯的触发消息。Cstring 转换为LPARAM (LPARAM)(LPCTSTR)str或者(WPARAM)(LPCTSTR)str
3.在需要接受的对话框中的头文件中添加:
#define WM_USERMESSAGE WM_USER+n //WM_USERMESSAGE为自己定义的消息名称,n>100。
afx_msg LRESULT ReceiveMessage(WPARAM wParam, LPARAM lParam); //添加自定义消息声明,其他代码行为程序原有
4.然后在接收消息对话框的源文件中找到消息映射宏部分,加入我们自定义的消息映射宏,代码如下:
ON_MESSAGE(WM_USERMESSAGE,ReceiveMessage) // 添加自定义消息映射宏,其他代码行为程序原有
5.最后在源文件中自定义消息接收函数ReceiveMessage中添加接收消息处理函数,例如下:
LRESULT CreDlg::ReceiveMessage(WPARAM wParam, LPARAM lParam)
{
//int recvint = wParam;
CString recvstr = (LPCTSTR)wParam;
AfxMessageBox(recvstr);
return true;
}
注意单文档 自己创建的类向view类发送消息 获取view类的句柄:( (CFrameWnd * )AfxGetMainWnd() )->GetActiveFrame()->GetActiveView()->m_hWnd
在Tab Control中获取子对话框句柄的步骤:
1.因为在使用 Tab Control的时候需要创建子对话框的对象变量 ,所以利用这个变量就可以获取句柄了。 利用GetSafeHwnd()函数
::SendMessage(m_androidDlg.GetSafeHwnd(),WM_USERMESSAGE,0,0); //AndroidDlg m_androidDlg; #include "AndroidDlg.h"