MFC(C++):如何按设计设置ListBox的宽度?

MFC (C++): how to set the width of ListBox as designed?

我按照这个 link 来动态设置 ListBox 的高度 ()。但是,同时我想保持宽度固定(即 rc 中最初指定的值)。但我不知道如何检索值和设置宽度。

我想实现的是根据项目的数量调整ListBox的高度,同时保持设计中指定的宽度固定。我几乎遵循这里的解决方案 ()。它改变了高度但也修改了宽度,这是不可接受的。

以下行通过考虑修复问题的滚动条宽度来调整宽度。

    rc.right += (GetSystemMetrics(SM_CXEDGE) * 2);
+   if ((list.GetStyle() & WS_VSCROLL) != 0)
+       rc.right += GetSystemMetrics(SM_CXVSCROLL);

或者按照评论中的建议,

-   rc.right += (GetSystemMetrics(SM_CXEDGE) * 2);
    rc.bottom += GetSystemMetrics(SM_CXEDGE) * 2;

+   RECT window_rc;
+   ::GetWindowRect(hWndLB, &window_rc);

    // resize
-   ::SetWindowPos(hWndLB, 0, 0, 0, rc.right, rc.bottom, SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);
+   ::SetWindowPos(hWndLB, 0, 0, 0, window_rc.right - window_rc.left, rc.bottom, SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);