我想在基於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中.