模擬按鈕控件BN_CLICKED消息事件


一、 現有一對話框如下

單擊按鈕會彈出Hello消息框,如下圖所示:

現要在點擊按鈕時模擬的單擊響應事件,實現代碼如下:

void CTestDlg::OnBnClickedBtnTest()

{

    // TODO: Add your control notification handler code here

    WPARAM wParam;

    wParam = BN_CLICKED;

    wParam <<= 16;   // 左移16位

    wParam |= IDC_BTN_SAY_HELLO;    // 按位或

    LPARAM lParam;

    lParam = (LPARAM)::GetDlgItem(this->GetSafeHwnd(), IDC_BTN_SAY_HELLO);

    ::PostMessage(this->GetSafeHwnd(), WM_COMMAND, wParam, lParam);

}

如此,單擊按鈕就會彈出Hello消息框。

 

二、 現有如下兩個對話框程序Test.exeHisin.exe

單擊按鈕會彈出Hello消息框,如下圖所示:

 

現要實現點擊Hisin對話框中的按鈕,模擬Test對話框中的單擊事件。實現代碼如下:

void CHisinDlg::OnBnClickedBtnTest()

{

    // TODO: Add your control notification handler code here

    HWND hWndDlgTest = ::FindWindow(NULL, TEXT("Test"));

    HWND hWndBtnSayHello = ::FindWindowEx(hWndDlgTest, NULL, NULL, TEXT("Say   Hello"));

    WPARAM wParam;

    wParam = BN_CLICKED;

    wParam <<= 16;   // 左移16位

    wParam |= ::GetDlgCtrlID(hWndBtnSayHello);

    LPARAM lParam;

    lParam = (LPARAM)hWndBtnSayHello;

    

    ::PostMessage(hWndDlgTest, WM_COMMAND, wParam, lParam);

}

如此,單擊Hisin對話框中的按鈕就會使Test對話框中彈出Hello消息框。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM