我正在创建一个小型的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