2010-04-09 7 views
1

작성한 콤보 상자의 높이가 12 대화 상자 단위로 고정되어있는 것 같습니다. 대화 상자의 컨트롤 간격 및 크기 조정에 대한 Microsoft의 지침에 따르면 콤보 상자의 높이는 14 대화 상자이어야합니다.VS 대화 상자 편집기에서 콤보 상자의 높이를 변경할 수 없습니다.

리소스 편집기를 열지 않고도 메모장에서 리소스 파일을 편집하고 Visual Studio에서 다시 컴파일 해 보았습니다. 그러나 콤보 상자는 여전히 잘못된 크기입니다!

아이디어가 있으십니까?

답변

0

당신은 당신의 OnInitDialog()에서 WTL :: CComboBox와 콤보 구성 요소의 Hwnd과 크기 :: GetComboBoxInfo(), 예를 들어를 얻을 수 있습니다 :

COMBOBOXINFO cbi = {sizeof COMBOBOXINFO}; 
CComboBox(GetDlgItem(ID_MYCOMBO)).GetComboBoxInfo(&cbi); 
CRect rComboEdit = cbi.rcItem; 
// adjust rComboEdit to your needs 
CEdit(cbi.hwndItem).MoveWindow(rComboEdit); 
+0

이 중 하나가 작동하지 않습니다 - MoveWindow는 위치와 폭에 영향을 미칠 것은 높이가 동일하게 유지됩니다. –

+0

미안 : (ATL :: CWindow :: SetWindowPos() 대신 ATL :: CWindow :: MoveWindow()를 사용하십시오. –

+0

동작은 SetWIndowPos와 동일합니다 ... 이것은 ComboBox의 버그 일뿐입니다. Microsoft는 ComboBoxes가 14 DLU 인 것을 권장하며 Win32 API를 통해서도 가능하지 않습니다 .Oh, 시도해 주셔서 감사합니다. –

1

필자의 경우, WM_WINDOWPOSCHANGING 메시지를 처리하고 WINDOWPOS 구조의 cy 멤버를 변경했습니다. 작동하지만 도움이 될 수 있습니다.

0

이제 드롭 다운 영역 (버튼을 누를 때 나타나는 목록)의 크기를 변경한다고 가정 해 보겠습니다. 콤보 상자는 이전에 편집 상자와 함께 붙어 있던 목록이었던 것을 기억하십시오. 따라서 우리는 총 너비/높이를 어떻게 든 변경해야합니다.

한 가지 방법은 RC 파일의 너비/높이를 직접 편집하는 것입니다.

VS 대화 상자 편집기의 놀라운 점은 기본적으로 거의 0 픽셀의 기본 "드롭"영역을 생성한다는 것입니다. 목록을 전혀 볼 수 없습니다!

대화 상자 편집기에서 마우스 커서가 남향 유형이 될 때까지 드롭 다운 버튼 위에 마우스 커서를 올려 놓습니다. 그런 다음을 클릭하면 실제 경계가 표시되고 영역을 수정할 수 있습니다.

예 :

Dialog editor trick

관련 문제