您的位置:首页 > 其它

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: