2012-01-31 3 views
0

대화 상자가 포함될 최소 및 최소 크기를 모두 계산하려고합니다. GetClientRect를 사용하여 너비와 높이를 결정했습니다. 그런 다음 가로 스크롤 막대가 필요할 때 너는 GetSystemMetrics (SM_CXVSCROLL) + GetSystemMetrics (SM_CXSIZEFRAME)를 추가했지만 짧은 픽셀을 몇 개 올리는 것처럼 보인다.대화를 포함하는 데 필요한 최소 크기 계산

스크롤 막대가 있거나없는 가로 및 세로 치수 모두에 대해 알아야 할 GetSysMetrics는 무엇입니까?

답변

0

창 테두리 및 기타 클라이언트가 아닌 공간을 고려해야합니다. 가장 쉬운 방법은 AdjustWindowRect() 또는 AdjustWindowRectEx()을 사용하는 것입니다. documentation에서

: 그러나, 당신은 여전히 ​​스크롤 막대를 직접 처리해야합니다

AdjustWindowRectEx 기능은 계정에 WS_VSCROLL 또는 WS_HSCROLL 스타일을지지 않습니다. 스크롤 막대를 설명하려면 SM_CXVSCROLL 또는 SM_CYHSCROLL을 사용하여 GetSystemMetrics 함수를 호출하십시오.

그래서, 단계는 다음과 같습니다

  1. GetClientRect()은 최소 크기의 클라이언트 영역을 얻을 수 있습니다.

  2. AdjustWindowRectEx() 클라이언트 스타일을 창 스타일에 따라 창 크기로 변환하십시오.

  3. 스크롤 막대의 계정에 대한 추가 조정 (GetSystemMetrics()SM_CXVSCROLL 및/또는 SM_CYHSCROLL)을 적용하십시오.

+0

감사합니다. 수직 스크롤 막대를 추가하면 가로 스크롤 막대가 필요할 수 있기 때문에 머리가 아플 수 있습니다. –

관련 문제