子視窗與父視窗的訊息傳遞

2021-06-17 23:27:00 字數 489 閱讀 9041

昨天碰到乙個問題,如果乙個dialog上有乙個edit控制項,這時候對edit輸入文字是edit先得到的按鍵訊息還是父視窗先得到?

如果要攔截乙個edit的回車訊息,在沒有為edit派生新的類的情況下,網上大部分的做法是過載父視窗的pretranlatemessage(),在這裡對按鍵訊息進行攔截,但是大部分對這個都沒有說明原因。

找了下資料大致的情況就是子視窗與父視窗共用乙個訊息佇列。在按鍵的時候,getmessage() 中msg裡的hwnd指向的是子視窗,在下面的**中看到(mfc訊息迴圈),在訊息從佇列中取出後,在沒有分發前,先呼叫了afxpretranslatemessage,在這裡面會調到各視窗的pretranslatemessage(),如果返回true則不分發,如果返回false則交由相應的訊息處理函式。(描述粗燥,僅做記錄)

bool cwinthread::pumpmessage() 

return true;

}

MFC中父視窗和子視窗訊息的傳遞

在mfc程式中,經常會遇到這樣的問題,父視窗需要子視窗的值進行更新,或者新建立的子視窗需要一些父視窗的控制項變數。遇到這個問題,一般有兩種方式,一種是建立訊息,宣告乙個新的系統訊息及訊息響應函式,通過訊息觸發響應函式進行工作。第二種就是筆者比較傾向的一種,在子視窗類中建立父視窗類的指標物件,然後在父...

子視窗向父視窗傳送訊息

1.自定義對話方塊中,m pview 是父視窗的指標 void cex07cdialog onbnclickedok else 2.父視窗響應 begin message map cex07cview,cview on wm lbuttondown on wm rbuttondown on mess...

子視窗呼叫父視窗

相信學計算機的大學生都碰過這樣的程式設計作業吧 程式執行後主視窗隱藏,然後彈出登入框,輸入賬號密碼登陸成功後再關閉登陸框,然後讓之前隱藏的主視窗重新顯示。沒錯,我當時就是這麼笨,怎麼都想不到好的解決辦法 當時的同學都是不管之前隱藏的主視窗,而是直接新建了乙個主視窗 剛好昨晚在做專案時碰到類似的情況,...