Go Premium for a chance to win a PS4. Enter to Win

  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 953
  • Last Modified:


i currently use a combobox control, and some code is executed on the "onchange" event. well, now i want to dynamicly change the selection of the combo. so i call the SetCurSel method, but the "onchange" event isn't sent anymore. (i tyed combo->PostMessage(CBN_SELCHANGE), it doesn't work (i think the message is pending).

regards, Ralph
  • 5
  • 2
1 Solution
Call the onchange yourself after calling the SecCurSel.
Don't post the message.
Add a function to the  CBN_SELCHANGE message in ClassWizard.
Then call it from the other function you use to SetCurSel();

I made a CFormView app for this test.
// Here is the message map showing the trapping of the CBN_SELCHANGE message
// The app also has a button that I use to set the current
// selection to offset #2.

BEGIN_MESSAGE_MAP(CMy20288603View, CFormView)

// CMy20288603View message handlers

void CMy20288603View::OnSelchangeComboChangeMe()
     // TODO: Add your control notification handler code here

void CMy20288603View::OnButtonChange()
ralph78Author Commented:
well... there is a little problem:
i can't use this method because i only get a CWnd* (so i cast it to CComboBox* when i'm sure it's a combobox, but i can't call a function defined in one particular dialog)...
any idea?
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

The function is defined in whatever holds the control (View or Dialog).
If you're using a modeless dialog, I believe you can still call public functions defined in it.

What is the action that you want to trigger the change?
ralph78Author Commented:
well, actually, i'm working with the viavoice sdk. so when i got a vocal event (a user message is sent to the dialog), i would like to change the value of a combo box. however, i can't use directly this combo. for instance, i can receive the vocal message "setcombo 1015 2" (i'm notified when this sentence is told). so i want the combobox which has the id 1015 change its selected item to its 2sd element.
((CComboBox *)curdlg->GetDlgItem(1015))->SetCurSel(2);
//curdlg is the current dialog box

this way, i cant change the value of the selected item in my combobox, exactly as if i had clicked on it, but the "OnSelChange" function isn't called.
I sincerely don't believe you will be able to force that foreign dialog to recognize the change.
Hi ralph78
try out this
i have created a dialogbased application.

void CTempDlg::OnButton1()
     CComboBox* pCombo = (CComboBox*)GetDlgItem(IDC_COMBO1);

     WPARAM wParam;
     LPARAM lParam;
     lParam = (LPARAM)pCombo->m_hWnd;

void CTempDlg::OnSelchangeCombo1()
     AfxMessageBox("Sel Change");    

hope this will help you
Ralph, you may want to reject my proposed answer if it's not what you're looking for.
If you do, your question will get more exposure and a maybe a better answer.

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

  • 5
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now