MFC 下自定义消息中获取 Tab Control的子对话框的 句柄

来源:互联网 发布:个人简历免费下载软件 编辑:程序博客网 时间:2024/06/08 08:20

首先是自定义消息的步骤;

自定义消息
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"

0 0
原创粉丝点击