void CMainFrame::OnHelpInfo(HELPINFO* pHelpInfo)
{
LONG32 contextType = pHelpInfo->iContextType;
LONG32 ctrlId = pHelpInfo->iCtrlId;
HANDLE hItem = pHelpInfo->hItemHandle;
DWORD contextId = (DWORD)pHelpInfo->dwContextId;
SHORT keyStateF1= ::GetKeyState(VK_F1);
SHORT keyStateShift = ::GetKeyState(VK_SHIFT);
hItem; // just to keep compiler from complaining
if ((contextType == HELPINFO_WINDOW)
&& (keyStateF1 < 0)
&& (keyStateShift >= 0)) { //User Pressed F1 in dialog, Show Full Help
OnHelp();
return;
}
if (contextType == HELPINFO_MENUITEM) {
if (contextId == 0) {
contextId = ctrlId;
}
contextId += HELP_ADD_FACTOR;
}
AfxGetApp()->WinHelp(contextId, HELP_CONTEXTPOPUP);
}
"Jonathan Wood" <jwood@softcircuits.com> wrote in message
news:eLLFNltYJHA.5520@TK2MSFTNGP02.phx.gbl...
"L.Allan" <lynn.d.allan@gmail.com> wrote in message
news:OilSp%23rYJHA.2620@TK2MSFTNGP02.phx.gbl...
I'm trying to get "What's This ?-Mark" WinHelp to work with buttons in a
ToolBar. I'm unclear how to distinquish which of the buttons was
selected for WinHelp.
The app has 4 ToolBars. The pHelpInfo->iCtrlId has the same value for
all the buttons in a particular ToolBar (59637, 59638, 59639, and 59640)
Is there a call to make to figure out which button was clicked? Do I
have to use the pHelpInfo->MousePos and do some kind of HitTest?
Why do you need this? This is already implemented by the framework, which
determine the command ID of the specified toolbar button. If you have a
help topic associated with that command, it is opened automatically.
Can you clarify what you are trying to do?
One issue: If you have a ribbon bar instead of a regular toolbar, then
this doesn't work. I wrote about this at
http://www.softcircuits.com/Blog/post/2008/11/25/Ribbon-And-ID_CONTEXT_HELP.aspx.
--
Jonathan Wood
SoftCircuits Programming
http://www.softcircuits.com