好比你须要在视图中获取对话框窗口的句柄,那能够直接在对话框类中什么一个静态成员变量函数
static CWnd *Left_cwnd;//用来记录左边对话框的句柄this
而后在对话框初始化函数BOOL CLeftDockDialog::OnInitDialog()中赋值Left_cwnd = this;it
就能够了。变量
当须要在其余窗口访问对话框句柄时,直接访问该静态成员变量就行了static
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
注意:模态对话框是不能传递消息的,非模态对话框之间是能传递消息的。