C++ WinAPI';s控制';定位不起作用吗?

C++ WinAPI';s控制';定位不起作用吗?,c++,winapi,controls,C++,Winapi,Controls,当我尝试将静态控制位置设置为0,0,并且大小与窗口大小相同时,一切正常。控件的位置与窗口的位置相同,但当我尝试将控件缩小并放置它时,控件的每一侧都有相等的空间,但它不起作用。顶部的空间大于底部,左侧的空间大于右侧。你能告诉我怎么做我想做的事吗?我使用的代码: 1: ghStatic = CreateWindowExW(WS_EX_CLIENTEDGE, L"STATIC", L"Foo", WS_CHILD | WS_VISIBLE | SS_CENTER, 0, 0, 300, 300, hw

当我尝试将静态控制位置设置为0,0,并且大小与窗口大小相同时,一切正常。控件的位置与窗口的位置相同,但当我尝试将控件缩小并放置它时,控件的每一侧都有相等的空间,但它不起作用。顶部的空间大于底部,左侧的空间大于右侧。你能告诉我怎么做我想做的事吗?我使用的代码:

1: ghStatic = CreateWindowExW(WS_EX_CLIENTEDGE, L"STATIC", L"Foo", WS_CHILD | WS_VISIBLE | SS_CENTER, 0, 0, 300, 300, hwnd, nullptr, hInstance, nullptr);

2: ghStatic = CreateWindowExW(WS_EX_CLIENTEDGE, L"STATIC", L"Foo", WS_CHILD | WS_VISIBLE | SS_CENTER, 75, 75, 150, 150, hwnd, nullptr, hInstance, nullptr);

您是否使用CreateWindowExW函数更改hwnd的大小?您不能使用此函数更改hwnd大小,它用于创建控件,因为它将尝试重新创建已创建的控件。 尝试使用MoveWindow函数更改hwnd的位置和大小:

MoveWindow(YourHWND, x, y, w, h, TRUE);
MoveWindow(ghStatic, 75, 75, 150, 150, TRUE);

简单的解释,通常是正确的,是你忘记了边界。要使控件居中,必须使用客户端区域大小,而不是窗口大小。“大小和窗户的大小一样”似乎只起作用,实际上它太大了。你们只是并没有注意到。我认为它起作用了,因为我把窗户的颜色设置成了深灰色并调整了大小。我能看到它在工作。我试试你的解决办法。编辑:你是对的。谢谢不,我不会那样做的。我只是在创建静态控件。