检测非标准滚动条

时间:2011-01-14 23:03:41

标签: c++ windows winapi scrollbar

如果窗口有非标准滚动条,有没有办法用WinAPI检测(例如,窗口可以自己绘制滚动条而不是使用标准滚动条)?

2 个答案:

答案 0 :(得分:2)

我不太确定这是否有效,但这只是一个想法。 滚动条属于必须在启用此样式的情况下创建的窗口。因此,您可以检查您的窗口是否包含WS_VSCROLL样式,如果是,则这是标准滚动条。在对方中,它是由其他人绘制的。

你可以这样检查:

// Assume that a window handle hWnd is known
int style = GetWindowLong(hWnd, GWL_STYLE);
BOOL bStandard = ((style & WS_VSCROLL) != 0);

答案 1 :(得分:1)

很难看出你如何做到这一点。一个控件可以在自己的画布上绘制滚动条,进行自己的命中测试,你怎么可能知道。您可以在不为滚动条创建单独的HWND的情况下完成所有这些操作。

更有意思的是,如果你能说出为什么你想知道这一点。