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

c++ 专栏收录该内容
54 篇文章 0 订阅

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

自定义消息
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
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值