1

我有一个显示图像的自定义控件。当图像超过可显示尺寸时显示滚动条。出于某种原因,我想知道是否显示水平或垂直滚动​​条。CWnd我在课堂上找不到任何直接功能。

我发现GetScrollBarInfo但没有运气检查。这是代码:

SCROLLBARIINFO stHSBInfo;
GetScrollBarInfo( this->GetSafeHwnd(), OBJID_HSCROLL, &stHSBInfo );
if(  !( STATE_SYSTEM_INVISIBLE &stHSBInfo.rgstate[0] )) // Always true
{
    // Code
}

请帮忙!

4

2 回答 2

0

使用 GetSystemMetrics 获取系统滚动条宽度的大小。比较 GetWindowRect 和 GetClientRect 之间的自定义控件的大小。如果差异大于滚动条宽度的大小,则 是可见的。

于 2012-07-26T19:19:41.287 回答
0

文档指出,“在调用GetScrollBarInfo函数之前,设置cbSizesizeof(SCROLLBARINFO).”

您的代码应更新为:

SCROLLBARIINFO stHSBInfo;
stHSBInfo.cbSize = sizeof(SCROLLBARINFO);
GetScrollBarInfo( this->GetSafeHwnd(), OBJID_HSCROLL, &stHSBInfo );
if(  !( STATE_SYSTEM_INVISIBLE &stHSBInfo.rgstate[0] )) // Always true
{
    // Code
}
于 2021-10-28T20:25:28.643 回答