2008-09-12 8 views
2

combobox을 새 값으로 업데이트해야 해당 텍스트에 반영된 텍스트가 변경됩니다. 이를 수행하는 가장 확실한 방법은 combobox이 초기화 된 후 메시지로 수행하는 것입니다.프로그래밍 방식으로 콤보 상자 변경

그래서 combobox을 포함하는 hwnd에 postmessage을 작성하려고합니다.

그래서 메시지를 보내려는 경우 현재 선택한 항목을 n 번째 항목으로 변경하면 postmessage은 어떻게 보이나요?

나는 그것이 ON_CBN_SELCHANGE을 포함 할 것이라고 추측하고 있지만 제대로 작동하지는 않습니다. 수동으로도 오히려 sendMessage 첨부를 원할 것

m_combo.SetCurSel(2); 

내가 상상 당신이 그 일을하는 경우 :

ComboBox_SetCurSel(hWndCombo, n); 

를하거나이 MFC의 CComboBox 컨트롤이 있다면 아마 당신은 할 수 있습니다 :

+0

당신의 예를 찾고있는 특히 언어가 새로운 문자열이 아닌 이미 할당 된 콤보 요소의 선택이 있습니다를 닫을 때? C++? – GEOCHET

+0

실마리가 MFC 태그에 있습니다. –

답변

8

당신은 ComboBox_SetCurSel합니다 PostMessage보다. CBN_SELCHANGE는 선택 항목이 변경되면 컨트롤이 으로 다시 보냅니다 알림입니다.

마지막으로이 질문에 C++ 태그를 추가 할 수 있습니다.

1

간결한 버전 : 잘못 갈 수 무엇

const int index = 0; 
m_comboBox.PostMessage(CBN_SELCHANGE, index); 
0

은 선택이 또 다른 선택 변경 메시지가 발생할 선택 변경 메시지 핸들러 내에서 변경되는 것입니다. 아래 그림과 같이이 원치 않는 피드백 루프 해결하기 위해

한 가지 방법은 선택 변경 메시지 핸들러에 감시를 추가하는 것입니다

void onSelectChangeHandler(HWND hwnd) 
{ 
    static bool fInsideSelectChange = 0; 

    //-- ignore the change message if this function generated it 
    if (fInsideSelectChange == 0) 
    { 
    //-- turn on the sentinel 
    fInsideSelectChange = 1; 

    //-- make the selection changes as required 
    ..... 

    //-- we are done so turn off the sentinel 
    fInsideSelectChange = 0; 
    } 
} 
-1

당신은 제목을 변경하려면 (fx)가있는 경우 - 선이다 콤보 박스가 닫혀있을 때 표시되면 다음을 수행 할 수 있습니다.

m_ComboBox.DeleteString (0); // 먼저 문자열을 삭제하면 0 = 시각적 문자열 m_ComboBox.AddString (_T ("Hello there"));

fx에 넣으십시오. OnCloseupCombo에서 - 이벤트가 dropdownbox 화재

ON_CBN_CLOSEUP(IDC_COMBO1, OnCloseupCombo) 

이 변경

+0

투표를 통해 의견을 제시해 주시면 감사하겠습니다. 그렇지 않은 경우 심각하게 생각하지 않습니다. – serup

관련 문제