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

MFC GetSystemMetrics 參數詳解:邊框厚度與標題按鈕尺寸

     編輯:程式設計疑難解答

SM_CXSIZEFRAME vs SM_CYSIZEFRAME

參數含義典型值
SM_CXSIZEFRAME可調整大小視窗的左右垂直邊框寬度(像素)4~8
SM_CYSIZEFRAME可調整大小視窗的上下水平邊框高度(像素)4~8

簡單說:CX = 水平尺寸(左右邊框寬),CY = 垂直尺寸(上下邊框高)。兩者通常相等,但高 DPI 或主題下可能不同。

SM_CXSIZE vs SM_CYSIZE

  • 標題列按鈕(最小化/最大化/關閉)的寬度與高度。
  • 系統強制所有標題按鈕尺寸一致,由標題列字體大小與系統度量決定,程式碼無需區分哪個按鈕。
  • 典型值:SM_CXSIZE ≈ SM_CYSIZE ≈ 16~32 像素(視 DPI)。

實務建議

  1. 勿硬編碼:佈局計算時呼叫 GetSystemMetrics(SM_CXSIZEFRAME) 取得當前系統真實值。
  2. 非客戶區繪製:OnNcCalcSize 調整客戶區矩形時,需扣除邊框厚度與標題列高度(SM_CYCAPTION)。
  3. 高 DPI 感知:Win10+ 應用程式宣告 Per-Monitor DPI Aware,度量值會隨縮放比例自動調整。

常用相關參數速查

SM_CXBORDER      // 固定單線邊框寬 (通常 1)
SM_CYBORDER
SM_CXEDGE        // 3D 邊框寬
SM_CYEDGE
SM_CYCAPTION     // 標題列高度
SM_CXSMICON      // 小圖示寬度 (標題列圖示)

掌握這些系統度量參數,才能編寫適應不同解析度、DPI、主題的健壯 MFC 介面。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved