Click here to Skip to main content
12,761,018 members (31,238 online)
Rate this:
Please Sign up or sign in to vote.
See more: C++ MFC
I'm not certain what this method is used for and in what circumstances.

MSDN : "Determines whether the most recently executed command was sent from the specified toolbar button."

The only reference I have is from the VisualStudio MSDN sample :

The method is called when the user select a value in a combobox in a toolbar.

void CVisualStudioDemoDoc::OnDummySelectActiveConfiguration()
  CMFCToolBarComboBoxButton* pSrcCombo = NULL;

  CObList listButtons;
  if (CMFCToolBar::GetCommandButtons(ID_DUMMY_SELECT_ACTIVE_CONFIGURATION, listButtons) > 0)
    for (POSITION posCombo = listButtons.GetHeadPosition(); pSrcCombo == NULL && posCombo != NULL;)
      CMFCToolBarComboBoxButton* pCombo = DYNAMIC_DOWNCAST(CMFCToolBarComboBoxButton, listButtons.GetNext(posCombo));

      if (pCombo != NULL && CMFCToolBar::IsLastCommandFromButton(pCombo))
        pSrcCombo = pCombo;

  if (pSrcCombo != NULL)
    LPCTSTR lpszSelItem = pSrcCombo->GetItem();
    CString strSelItem = (lpszSelItem == NULL) ? _T("") : lpszSelItem;

    AfxMessageBox(_T("Show \"Set Active Configuration\" dialog...."));

Any clue/hints ?


Posted 7-Dec-12 10:54am
CPallini 7-Dec-12 16:55pm
"Determines whether the most recently executed command was sent from the specified toolbar button." looks clear enough to me. What is your doubt?
Maximilien 7-Dec-12 18:09pm
I can read the description, but I was looking for a test case to demonstrate why it should be used.

1 solution

Rate this: bad
Please Sign up or sign in to vote.

Solution 1

The function calls CWnd::GetCurrentMessage()[^]

to retrieve a MSG structure that describes the "current message" (which is only valid "when in an OnMessage handler").

It then compares the hwnd of the button against the hwnd and lParam of the current message to see if the current message orignated from the button.

I can think of a couple of different scenarios where one might use this:

a) You have the same message handler invoked for several different buttons. In which case you might enumerate the buttons and test them to find out the specific one that was invoked.

If you dynamically create new buttons and add them to the toolbar then you can't have a separate handler for all possible buttons, instead you'd have a single handler that did different things based on data associated with the button itself.

b) The same message might be coming from the toolbar, or a menu item or a keyboard shortcut. You want to do the same thing no matter where it came from, but maybe there is some visual cue you want to play depending on if it was the button that was pressed or not.
Maximilien 7-Dec-12 18:10pm
Thanks, I will look at those scenarios next week, I think I understand better (scenario A).

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

    Print Answers RSS
Top Experts
Last 24hrsThis month

Advertise | Privacy | Mobile
Web02 | 2.8.170217.1 | Last Updated 8 Dec 2012
Copyright © CodeProject, 1999-2017
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100