1. 程式人生 > >MFC 如何獲取各類視窗的控制代碼並用PostMessage傳送訊息

MFC 如何獲取各類視窗的控制代碼並用PostMessage傳送訊息

個人分類: MFC

版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/weixin_41485242/article/details/79463551

摸索了兩天後,發現了一個簡便方法,

比如你需要在檢視中獲取對話方塊視窗的控制代碼,那可以直接在對話方塊類中什麼一個靜態成員變數

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