MFC 如何獲取各種窗口的句柄

好比你須要在視圖中獲取對話框窗口的句柄,那能夠直接在對話框類中什麼一個靜態成員變量函數

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

注意:模態對話框是不能傳遞消息的,非模態對話框之間是能傳遞消息的。

相關文章
相關標籤/搜索