![](/img/trans.png)
[英]How to set checkbox as check by default in an MFC dialog application?
[英]How to set the default size in pixels of dialog in MFC
我想設置對話框的默認大小(以像素為單位),比如640像素寬和384像素高。 default
我的意思是,當第一次CXXXDlg::OnSize(UINT nType, int cx, int cy)
, cx
值為640, cy
值為384. scene的默認大小為對話框是對話框單元,我可以使用MapDialogRect()將對話框單位轉換為像素,我該怎么做呢? MoveWindow()
和SetWindowPos()
可以設置對話框的大小,但不能設置默認大小。 我也試過像這樣的GetDialogBaseUnits() :
DWORD dw = GetDialogBaseUnits();
WORD m_duXx4 = LOWORD(dw);
WORD m_duYx8 = HIWORD(dw);
int dialogUnitX = MulDiv(640, 4, m_duXx4);
int dialogUnitY = MulDiv(384, 8, m_duYx8);
事實證明, dialogUnitX
是320
,而dialogUnitY
是192
,但當我將對話框單元設置為320 * 192
,我在CXXXDlg::OnSize(UINT nType, int cx, int cy)
得到的不是640 * 384
但是560 * 336
。 有任何想法嗎?
窗口由客戶區和非客戶區組成 。
客戶端區域是應用程序顯示輸出的窗口的一部分,例如文本或圖形。
標題欄,菜單欄,窗口菜單,最小化和最大化按鈕,大小調整邊框和滾動條統稱為窗口的非客戶區域 。
Window Rect指定包含整個窗口的區域。 它包括客戶區域和非客戶區域。 可以通過調用GetWindowRect
(或其MFC等效項)來檢索它。 它還用作MoveWindow
或SetWindowPos
等函數的輸入。
Client Rect是非客戶區域未占用的窗口區域。 可以通過調用GetClientRect
來查詢它。 客戶端rect維度傳遞給WM_SIZE
消息處理程序。
如果應用程序需要特定大小的客戶區,則可以通過調用AdjustWindowRect
或AdjustWindowRectEx
來計算相應的窗口rect。
窗口rect通常以屏幕坐標表示,而客戶端rect使用客戶端坐標 。 兩個坐標系都代表設備像素。 原點位於屏幕坐標主顯示屏的左上角,客戶端坐標的客戶區左上角。 要在坐標系之間進行轉換,應用程序使用ClientToScreen
或ScreenToClient
。
對話框模板在對話框模板單元中指定尺寸和位置。 對話框模板單元與對話框的字體直接相關。 要在對話框模板單元和設備像素之間進行轉換,應用程序會調用MapDialogRect
。 沒有API調用來計算反向。 應用程序必須手動執行計算:
width = MulDiv(width, 4, baseunitX);
height = MulDiv(height, 8, baseunitY);
如果應用程序想要動態限制窗口大小,它可以處理WM_GETMINMAXINFO
消息並使用所需的維度填充MINMAXINFO
結構。 當窗口的大小或位置即將改變時,該消息被發送到窗口。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.