我正在創建一個小型的win32應用程序。目前我有6個文本標籤的資源文件編碼,就像這樣:win32控件:resource.rc和CreateWindow中的不同座標?
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);
你不需要創建它們,使用'GetDlgItem'。 – 2011-05-15 16:11:08
@purecuteness說什麼:你不需要自己創建窗口,只要你可以在for循環中使用它們。你可以給它們所有的ID並使用GetDlgItem,或者甚至用GW_CHILD/GW_HWNDNEXT的GetWindow()來循環它們。 – BrendanMcK 2011-05-16 00:35:46