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

2021-06-19 23:07:37 字數 719 閱讀 9703

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

class  cfather

void cfather::某函式

...................................

cchild  dlg;

dlg.m_pmain=this;//將父視窗類的指標賦給子類中定義的父類物件

dlg.domodal();

......................................

class cchild

public:

...................................

cfather  *m_pmain;

.....................................

這種方式有兩種好處,首先可以將父視窗中的控制項變數直接傳遞到子視窗中去,通過定義的m_pmain指標物件,可以獲取任何父類變數,再者可以呼叫父視窗的某些函式,執行一些操作,當然不要忘了在子視窗類中新增父視窗類的標頭檔案。

子視窗向父視窗傳送訊息

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

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

昨天碰到乙個問題,如果乙個dialog上有乙個edit控制項,這時候對edit輸入文字是edit先得到的按鍵訊息還是父視窗先得到?如果要攔截乙個edit的回車訊息,在沒有為edit派生新的類的情況下,網上大部分的做法是過載父視窗的pretranlatemessage 在這裡對按鍵訊息進行攔截,但是大...

父視窗和子視窗的互調

1.jquery 在iframe子頁面獲取父頁面元素 如下 objid parent.document 2.jquery在父頁面 獲取iframe子頁面的元素 如下 objid document.frames iframename document 3.js 在iframe子頁面獲取父頁面元素 如下...