MFC 如何获取各类窗口的句柄并用PostMessage发送消息
2018-03-06 20:55
429 查看
摸索了两天后,发现了一个简便方法,
比如你需要在视图中获取对话框窗口的句柄,那可以直接在对话框类中什么一个静态成员变量
static CWnd *Left_cwnd;//用来记录左边对话框的句柄
然后在对话框初始化函数BOOL CLeftDockDialog::OnInitDialog()中赋值Left_cwnd = this;
就可以了。
当需要在其他窗口访问对话框句柄时,直接访问该静态成员变量就好了
HWND h = CLeftDockDialog::Left_cwnd->GetSafeHwnd();
然后其他窗口向对话框发送消息:
PostMessage(h, WM_COMMAND, MAKEWPARAM(IDOK, BN_CLICKED), NULL);
附带窗口类和窗口句柄的转换:
窗口类就是CWnd,窗口句柄就是HWND。CWnd和HWND之间互相转换代码如下:
CWnd *pWnd;
HWND hWnd;
hWnd = pWnd->GetSafeHwnd(); //CWnd->HWND
pWnd = CWnd::FromHandle(hWnd); //HWND->CWnd
比如你需要在视图中获取对话框窗口的句柄,那可以直接在对话框类中什么一个静态成员变量
static CWnd *Left_cwnd;//用来记录左边对话框的句柄
然后在对话框初始化函数BOOL CLeftDockDialog::OnInitDialog()中赋值Left_cwnd = this;
就可以了。
当需要在其他窗口访问对话框句柄时,直接访问该静态成员变量就好了
HWND h = CLeftDockDialog::Left_cwnd->GetSafeHwnd();
然后其他窗口向对话框发送消息:
PostMessage(h, WM_COMMAND, MAKEWPARAM(IDOK, BN_CLICKED), NULL);
附带窗口类和窗口句柄的转换:
窗口类就是CWnd,窗口句柄就是HWND。CWnd和HWND之间互相转换代码如下:
CWnd *pWnd;
HWND hWnd;
hWnd = pWnd->GetSafeHwnd(); //CWnd->HWND
pWnd = CWnd::FromHandle(hWnd); //HWND->CWnd
相关文章推荐
- 在java程序中如何能获取到另一个程序的windows句柄,又如何使用这个句柄向这个窗口发送消息
- C#可调用API接口来获取窗口句柄,发送消息控制其余程序窗体大小
- 不知道在MFC中如何从线程工作函数中向窗口发送消息?用好一个指针就够了
- 【转】MFC窗口句柄各类指针获取函数
- MFC自定义控件如何向父窗口发送自定义消息
- MFC将某一Cwnd类获取的消息传递给别的窗口响应
- 在MFC中从一个线程工作函数中向窗口发送消息以及窗口到窗口消息传送方法
- 在MFC中获取窗口\视图句柄 &获取当前活动的CView
- MFC中获取各个窗口(对话框)之间的指针、对象、句柄
- [转]在MFC中获取窗口句柄
- MFC窗口消息PostMessage和SendMessage
- 如何获取控制台窗口句柄 (HWND)
- 如何在mfc中通过线程向主窗口发送数据或者是访问控件
- 如何根据进程id获取该进程的主窗口句柄
- 在MFC中获取窗口句柄
- Process 后, 如何获取打开窗口的句柄(根据进程句柄获取窗口句柄)
- MFC中获取窗口句柄及相关函数
- MFC框架中获取窗口/视图句柄
- MFC—— 窗口句柄获取
- MFC注册窗口类以及FindWindow按窗口类名查询(避免用#32770获取窗口句柄)