Improve company productivity with a Business Account.Sign Up

  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 986
  • 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?
Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

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.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

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