有没有办法有条件地检查窗口是否正在使用滚动条
Is there a way to conditionally check if a window is using a scroll bar?
在我正在处理的应用程序中,相对于直接位于左侧的CListBox
(我们称之为myListBox
(在屏幕上绘制了 2 个按钮。
按钮根据从myListBox.GetClientRect()
检索的值放置。但是,当滚动条出现在myListBox
中时,这些按钮的位置不正确,因为GetClientRect
没有考虑滚动条之类的东西。
我很好奇是否有一种条件方法可以检查列表框当前是否正在使用滚动条,如果这有意义的话。这样,我可以将差异应用于移动按钮的功能,以便无论是否存在滚动条,我都可以实现正确的放置。
我尝试了GetWindowRect
,但我想封装列表框的窗口比列表框本身大得多(事后看来这是显而易见的(。
if (scrollbarinfo.rgstate[0] == (STATE_SYSTEM_INVISIBLE ||
STATE_SYSTEM_UNAVAILABLE))
{
visible = false;
}
您可以使用
CWnd::GetScrollBarInfo
函数并检查其SCROLLBARINFO
检索的结构rgstate
成员。
SCROLLBARINFO sbi { };
LONG lScrollBar = OBJID_VSCROLL; //can also be OBJID_HSCROLL or OBJID_CLIENT
GetScrollBarInfo(lScrollBar, &sbi);
if (sbi.rgstate[0] & STATE_SYSTEM_INVISIBLE)
{
//Scroll bar is not visible at the moment.
}
else if (sbi.rgstate[0] & STATE_SYSTEM_UNAVAILABLE)
{
//Scrol bar is disabled, but might be visible.
}
对于可能看到这篇文章的其他任何人的参考,考虑到@Jovibor所说的,这是我的原始代码对我有用的:
int info = scrollbarinfo.rgstate[0];
if ((info & (STATE_SYSTEM_INVISIBLE | STATE_SYSTEM_UNAVAILABLE)) != 0)
{
visible = false;
}
相关文章:
- QScrollArea:由垂直滚动条引起的水平滚动条
- 跟踪滚动条上的鼠标事件
- 如何在不使用滚动条的情况下使视图更改
- 通过水平滚动条更改标签
- Qt:无法直接为带有子项的小部件添加滚动条
- OnVScroll : 从 CSpinButtonCtrl 或垂直滚动条调用?
- win32 滚动条在 C/C++ 程序中不起作用
- 外观 MFC 滚动条
- 停止 QTextCursor::insertText() 修改 QTextDocument 滚动条范围
- 如何在wxRadioBox中添加滚动条
- QPainter的QWidget滚动条
- 将水平滚动条添加到控制台
- QT - 如何创建具有长 int(而不是 int)步长的滚动条?
- QListWidget 水平滚动条会导致选择消失在视野之外
- 有没有办法有条件地检查窗口是否正在使用滚动条
- 如何检查编辑控件的滚动条是否位于底部
- 如何知道CWnd滚动条是否可见
- 如何使用他的HWND检查窗口是否有可见的滚动条
- 在c++中是否有一种方法可以在不使用windows api的情况下制作带有按钮和滚动条的自定义gui ?
- 如何知道水平滚动条是否显示在QPlainTextEdit继承的类中