我使用win32在原始C中編碼。在對話框基本單位和像素之間轉換
我想在運行時更改控件(按鈕)的位置,以正確保持其父對話框中的相對位置,該對象的大小可調整。 我通過資源腳本定義了對話框和按鈕,其中尺寸位於對話框基本單位中。
要在運行時更改大小,我必須處理SetWindowPos函數,它接受以像素爲單位的值,以便保持原始比例,我需要以像素爲單位將原始距離(以對話框基本單位)轉換。
我試過使用從GetDialogBaseUnits函數返回的值,並遵循使用MulDiv函數在參考頁面中報告的「轉換過程」(實質上是乘法和除法),但我得到是一個錯誤的值... 特別是我獲得:LOWORD(GetDialogBaseUnits())= 8和HIWORD(GetDialogBaseUnits())= 16,它用於MulDiv,在對話框基本單位中產生的大小正好是像素的一半(這在我的系統中是錯誤的)。
如何正確執行此轉換?
只需獲取WM_INITDIALOG中的實際位置並保存起始比率。在調整大小的時候使用它來將所有內容保持在相同的相對位置。 – HerrJoebob 2015-04-02 16:45:48