2011-01-14 4 views
1

비표준 스크롤바가있는 경우 WinAPI를 감지하는 방법이 있습니까? 예를 들어 창에서 표준 스크롤바 대신 스크롤바를 그릴 수 있습니까?비표준 스크롤바 감지

답변

1

어떻게 할 수 있는지 알기가 어렵습니다. 컨트롤은 자체 캔버스에 스크롤 막대를 페인트하고 히트 테스트를 수행하며 어떻게 알 수 있습니까? 스크롤 막대에 대해 별도의 HWND를 만들지 않고도이 모든 작업을 수행 할 수 있습니다.

당신이 왜 이것을 알고 싶어하는지 말할 수 있다면 더 흥미로운 것이있을 것입니다.

2

정상적으로 작동하는지 잘 모르겠지만 아이디어 일뿐입니다. 스크롤 막대는이 스타일을 사용하도록 설정해야하는 창에 속합니다. 따라서 윈도우에 WS_VSCROLL 스타일이 있는지 확인할 수 있습니다. 그렇다면 표준 스크롤바입니다. 상대방은 다른 누군가에 의해 그려진다.

이 길을 확인할 수 있습니다

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

그런 다음 윈도우 스타일을 사용하는 것이 아니라 '스크롤 막대 컨트롤'을 사용하는 경우가있다. Dunno * 비표준 스크롤바 *로 간주한다면. +1 그럼에도 불구하고, 나는 이것이 모두 할 수 있다고 생각합니다. –

+0

이 코드는 표준 스크롤바에서만 작동합니다. – clumpter

+1

@clumpter - 요점입니다. 스크롤 바가 표준 인 경우, bStandard는 true가됩니다. 그렇지 않은 경우 (windown hWnd의 비표준 스크롤 바, 스크롤 바가없는 경우)는 false가됩니다. 즉, hWnd에 스크롤 막대가 포함되어 있는지 확인해야하며, 이것이 표준 스크롤 막대인지 확인하는 방법입니다. – Vladimir