1. 程式人生 > >注意mfc下oninitdialog()和onsize()的呼叫順序

注意mfc下oninitdialog()和onsize()的呼叫順序

BOOL dddd::OnInitDialog()

{

       // 程式碼區1
      CDialog::OnInitDialog();     // 注:句1

       // 程式碼區2
}

void dddd::OnSize(UINT nType, int cx, int cy)

{

}

猜測:在程式呼叫的時候,OnInitDialog函式與OnSize()應該相當於兩個執行緒如:

{

     Beginthread( OnInitDialog );

     Beginthread( OnSize );

}

所以:程式執行時如果一個實體(比如說控制元件)在OnInitDialog 中還沒有建立,但是在OnSize 中已經設定位置了,那麼就會出現錯誤---gwse.exe。

注:

1.在句1執行之前是執行1次OnSize(),在句子執行之後是還要執行OnSize()的。

2.注意程式碼區1和程式碼區2。有些程式碼應該寫在程式碼區域2中:

比如說:

2.1m_wndCommandBar

2.2// 右上角按鈕變成叉  ::SHDoneButton(m_hWnd,SHDB_HIDE)

等。