首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

MFC 中 OnSize 與 MoveWindow 的調用關係釐清

     編輯:程式設計疑難解答

問題

是否調用 `OnSize` 會自動觸發 `MoveWindow`,而不需額外調用?

正確關係

恰好相反:調用 `MoveWindow` 會觸發 `WM_SIZE` 訊息,進而呼叫 `OnSize` 函數。

  • `MoveWindow`:改變視窗位置、大小,發送 `WM_WINDOWPOSCHANGING`、`WM_WINDOWPOSCHANGED`、`WM_MOVE`、`WM_SIZE` 等訊息。
  • `OnSize`:`WM_SIZE` 訊息的處理函數,通常在視窗大小改變**後**被呼叫,用於重新佈局子控制項。

實務建議

  1. 若需在視窗大小改變時調整子控制項,請在 `OnSize` 中編寫佈局代碼。
  2. 若程式碼主動呼叫 `MoveWindow`/`SetWindowPos` 改變大小,**不必**手動呼叫 `OnSize`,系統會自動觸發。
  3. 避免在 `OnSize` 中再次呼叫 `MoveWindow`/`SetWindowPos` 導致無限遞迴。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved