没有水平滚动条的列表控件的最小宽度

时间:2015-06-04 06:45:11

标签: winapi listcontrol

我在报告模式下有一个列表控件。

我用数据填充此列表控件,然后使用{{1}}自动调整所有列的大小。根据数据,列表控件可能会以水平滚动条结束。

到目前为止一切顺利。但是现在我想获得列表控件应该具有的最小宽度,因此不需要水平滚动条。知道这个大小我可以调整列表控件的大小,以摆脱水平滚动条。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

由于您已经知道所需的宽度,因此您可以使用该信息并让系统为您计算相应的窗口宽度。可以使用以下任一API:AdjustWindowRectAdjustWindowRectEx。高度可以忽略不计。

int requiredWidth = 0;
for ( int index = 0; index < itemCount; ++index ) {
    // calculate item width
    requiredWidth += itemWidth;
}

RECT r = { 0, 0, requiredWidth, 1 };
DWORD style = (DWORD)::GetWindowLongPtr( hList, GWL_STYLE );
DWORD styleEx = (DWORD)::GetWindowLongPtr( hList, GWL_EXSTYLE );

::AdjustWindowRectEx( &r, style, FALSE, styleEx );

int windowWidth = r.right - r.left;

答案 1 :(得分:-1)

懒惰的解决方案是增加宽度,直到滚动条消失。

ng-class