2012-07-26 4 views
0

이미지를 표시하는 사용자 지정 컨트롤이 있습니다. 이미지가 표시 가능한 크기를 초과하면 스크롤바가 표시됩니다. 어떤 이유로 스크롤 막대가 가로 또는 세로로 표시되는지 여부를 알고 싶습니다. CWnd 클래스에서 직접적인 기능을 찾을 수 없습니다.CWnd 스크롤바가 표시되는지 확인하는 방법은 무엇입니까?

나는 GetScrollBarInfo을 찾았지만 행운을 확인하지 않았습니다. 코드는 다음과 같습니다.

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

도와주세요!

+1

'이'란 무엇입니까? 어떤 개체 인스턴스가 가리 킵니까? 'GetScrollBarInfo' 함수에 스크롤바가 들어있는 윈도우 핸들을 넘겨야합니다. –

+0

구조가 초기화되고 있습니까? –

+0

@CodyGray'this'는 스크롤바가 들어있는 창 –

답변

0

GetSystemMetrics를 사용하여 시스템 스크롤 막대 너비의 크기를 가져옵니다. GetWindowRect와 GetClientRect 사이의 사용자 지정 컨트롤의 크기를 비교하십시오. 차이점이 스크롤 막대 폭보다 큰 경우 is가 표시됩니다.

+1

음, 그 공간을 차지하고있는 창의 클라이언트가 아닌 영역에 스크롤바 * 이외의 다른 것이 있다면? –

관련 문제