[英]win32 controls: different coordinates in resource.rc and CreateWindow?
我正在創建一個小的win32應用程序。 目前我在資源文件中編碼了6個文本標簽,如下所示:
IDD_MAIN DIALOGEX 0, 0, 465, 279
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "SpiderPigOverseer"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
CONTROL "sample text",IDC_STATIC1,"Static",SS_SIMPLE | WS_GROUP,344,70,33,8
[...]
END
但我想在for循環中訪問這些,所以我想我會用這段代碼動態創建它們(?):
IRValues[i] = CreateWindow("static", "sample text", SS_SIMPLE | WS_VISIBLE | WS_CHILD, 344, 70+10*i, 33, 8, hDlg, NULL, NULL, NULL);
但是,這使文本更大。 x和y位置遠小於使用資源文件創建的位置,寬度和高度似乎也不同。 為什么是這樣?
編輯:我嘗試使用以下代碼進行轉換,但無法完全匹配。
HDC hdc = GetDC(hWnd);
TEXTMETRIC tm;
GetTextMetrics(hdc, &tm);
cxAveChar = tm.tmAveCharWidth;
cyAveChar = tm.tmHeight + tm.tmExternalLeading;
ReleaseDC( hWnd, hdc );
.rc文件中的坐標表示為不等於像素的對話單位 。 它用於根據系統字體大小自動調整控件大小。 您可以將對話框單位轉換為像素,如下所示:
pixelX = MulDiv(templateunitX, LOWORD(GetDialogBaseUnits()), 4);
pixelY = MulDiv(templateunitY, HIWORD(GetDialogBaseUnits()), 8);
或者只是使用MapDialogRect()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.