我想在基于CFormView类的SDI应用程序中加入真正的上下文帮助,但没有成功.
A:你应该重载CMyFormView类的OnHelpHitTest函数:
LRESULT CMyFormView::OnHelpHitTest(WPARAM, LPARAM lParam)
{
LRESULT lResult = (LRESULT)0x00;
CWnd* pWndChild = ChildWindowFromPoint(Cpoint(lParam),CWP_ALL|CWP_SKIPINVISIBLE);
if (pWndChild && ::IsWindow(pWndChild->m_hWnd))
{
lResult = ::GetWindowLong(pWndChild->m_hWnd, GWL_ID);
if (lResult)
lResult += HID_BASE_COMMAND;
}
if (lResult == (LRESULT)0x00)
lResult = ::GetWindowLong(m_hWnd, GWL_ID) + HID_BASE_RESOURCE;
return lResult;
}
然后你就可以使用平时用的帮助文件了,但你要保证有正确的前缀,请参照 TN028:Context-Sensitive Help Support.
例如:
ID_SOME_MENU_ITEM_OR_COMMAND_BUTTON
IDR_SOME_WINDOW_OR_DIALOG
IDP_PROMPT
IDW_CONTROL_THAT_IS_NOT_A_COMAND_BUTTON
你要确认你所使用的控件的ID包含在文件resource.hm中.