在 MFC(Microsoft Foundation Classes)中,CFrameWnd 类的 OnContextHelp 方法通常用于处理上下文帮助请求。上下文帮助是指用户点击窗口中的一个元素并请求帮助时所触发的事件。

以下是该方法的声明:
afx_msg BOOL OnContextHelp(CWnd* pWnd, CPoint point);

该方法接受两个参数:

  •  pWnd:指向窗口对象的指针,它表示用户点击的窗口元素所在的窗口。

  •  point:表示用户点击的窗口元素的屏幕坐标。


使用示例:
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
    ON_WM_CONTEXTMENU()
    ON_WM_HELPINFO()
    // 其他消息映射...
END_MESSAGE_MAP()

void CMainFrame::OnContextMenu(CWnd* pWnd, CPoint point)
{
    // 在用户右键点击时调用,用于显示上下文菜单或执行其他上下文相关的操作
    // 可以调用 TrackPopupMenu() 来显示上下文菜单
}

BOOL CMainFrame::OnHelpInfo(HELPINFO* pHelpInfo)
{
    // 在用户请求帮助时调用,用于处理上下文帮助请求
    CPoint point;
    ::GetCursorPos(&point);
    ScreenToClient(&point);

    if (OnContextHelp(this, point))
        return TRUE;  // 如果处理成功,返回 TRUE

    // 如果未处理上下文帮助请求,返回父类的处理结果
    return CFrameWnd::OnHelpInfo(pHelpInfo);
}

afx_msg void CMainFrame::OnContextMenu(CWnd* pWnd, CPoint point)
{
    // 在用户右键点击时调用,用于显示上下文菜单或执行其他上下文相关的操作
    // 例如,可以使用 TrackPopupMenu() 来显示上下文菜单

    CMenu menu;
    menu.LoadMenu(IDR_CONTEXT_MENU);
    CMenu* pContextMenu = menu.GetSubMenu(0);

    if (pContextMenu)
    {
        // 将菜单与框架窗口关联,以便帮助处理 WM_COMMAND 消息
        pContextMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);
    }
}

afx_msg BOOL CMainFrame::OnContextHelp(CWnd* pWnd, CPoint point)
{
    // 在用户点击窗口元素并请求上下文帮助时调用
    // 可以在这里执行帮助操作,或者将帮助请求传递给其他窗口或控件

    // 示例:显示一个消息框,表示处理了上下文帮助请求
    MessageBox(_T("Context Help Requested!"), _T("Context Help"), MB_OK | MB_ICONINFORMATION);

    // 返回 TRUE 表示已经处理了上下文帮助请求
    return TRUE;
}

在上述示例中,OnHelpInfo 方法用于处理用户请求帮助的事件。


转载请注明出处:http://www.zyzy.cn/article/detail/17885/MFC/CFrameWnd