好比你須要在視圖中獲取對話框窗口的句柄,那能夠直接在對話框類中什麼一個靜態成員變量函數
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
注意:模態對話框是不能傳遞消息的,非模態對話框之間是能傳遞消息的。