2011-08-31 12 views
1

사용자가 드롭 다운 메뉴에서 옵션을 선택하고 Win32 API C++ 프로그래밍을 사용하여 선택한 항목을 검색 할 수 있도록 콤보 상자를 설정하려고합니다. MFC. 나는 John의 게시물 here을 읽었으며 아무 것도 할 수 없었습니다. 콤보 상자의 텍스트를 설정할 수 있지만 사용자가 선택한 항목을 검색 할 수 없습니다. 여기에 내가 시도 몇 가지 방법은 다음과 같습니다콤보 상자의 텍스트 가져 오기 Win32 API C++ (NO MFC)

   LPTSTR buf; 
       ComboBox_GetText(hwnd, buf, 9); 
       MessageBox(NULL, buf, NULL, MB_OK); 

그리고

   char* buf; 
       GetDlgItemText(hwnd, IDC_COMBO1, buf, 9); 
       MessageBox(NULL, buf, NULL, MB_OK); 

IDC_COMBO1 콤보 상자의 ID이며 hwnd 현재 대화 상자의 HWND입니다. 콤보 상자 내 대화 상자의 코드는 다음과 같습니다 나는이 작업을 수행하는 리소스 파일을 사용하고

LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL IDD_DIALOG4 DIALOG 0, 0, 424, 181 STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_SYSMENU CAPTION "Dialog" FONT 8, "Ms Shell Dlg" { COMBOBOX IDC_COMBO1, 113, 31, 119, 19, CBS_DROPDOWN | CBS_HASSTRINGS PUSHBUTTON "Button1", IDC_BUTTON1, 188, 112, 50, 14 }

. 미리 감사드립니다.

+0

어떤 방식으로 작동하지 않습니까? 어떻게 실패합니까? 오류 코드 란 무엇입니까? –

+0

그것은 어떤 데이터도 제공하지 않습니다. 오류 코드가 표시되지 않고 제대로 컴파일되어 메시지 상자를 호출 할 때 텍스트 상자의 데이터를 반환하지 않습니다. – llk

답변

4

ComboBox_GetText에 대한 호출의 경우 hwnd 매개 변수는 대화 상자가 아닌 콤보 상자 자체의 핸들이어야합니다. GetDlgItem(hwnd, IDC_COMBO1);

으로 HWND를 얻을 수도 있습니다. 또한 초기화되지 않은 포인터를 두 함수에 전달할 수 없습니다. 여러분이 만든 버퍼에 대한 포인터를 전달해야한다. 만약 내가 올바르게 기억

  char buf[10]; 
      GetDlgItemText(hwnd, IDC_COMBO1, buf, 9); 
      MessageBox(NULL, buf, NULL, MB_OK); 
+0

사실,하지만 반드시 GetDlgItemText가 작동합니까? –

+0

나는'char * buf; HWND Cbobox; Cbobox = GetDlgItem (hwnd, IDC_COMBO1); ComboBox_GetText (Cbobox, buf, 9); MessageBox (NULL, buf, NULL, MB_OK); '하지만 그 곳은 나에게 아무런 영향을 미치지 않았지만 여전히 빈 반환 문자열이되었습니다. 그게 니가 염두에 두었던거야? – llk

+1

@Shadowalker, 내 의견을보기 전에 잠시 문제를 깨달았습니다. –