CHtmlView和打印预览和上下文菜单

时间:2017-10-19 15:40:19

标签: mfc webbrowser-control print-preview

我有一个CHtmlView派生类。我的菜单有一个Print Preview菜单项。该事件处理程序创建一个特殊的打印预览派生文档,然后显示它:

void CChristianLifeMinistryHtmlView::DoPrintPreview()
{
    HWND      HWND_PP, HWND_FG ;
    TCHAR     szClassName[256] ;
    ULONGLONG t1, t2 ;
    RECT      workArea;

    ExecWB(OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_PROMPTUSER, nullptr, nullptr);

    HWND_PP = nullptr ;
    t1 = ::GetTickCount64();
    t2 = ::GetTickCount64(); // Extra line required for 'while' rearrangement.
    while (HWND_PP == nullptr && t2 - t1 <= 6000) // if found or Timeout reached...
    {
        HWND_FG = ::GetForegroundWindow(); // Get the ForeGroundWindow
        if (HWND_FG != nullptr)
        {
            ::GetClassName(HWND_FG, szClassName, 256 );
            if (lstrcmp(szClassName, IE_PPREVIEWCLASS) == 0) // Check for Print Preview Dialog
                HWND_PP = HWND_FG ;
        }

        theApp.PumpMessage();
        t2 = ::GetTickCount64();
    }

    if (HWND_PP != nullptr)
    {
        // AJT V3.01 BUG Fix - showing maximized crops bottom of preview dialog
        ::SystemParametersInfo( SPI_GETWORKAREA, 0, &workArea, 0 );
        ::MoveWindow(HWND_PP, workArea.left, workArea.top,
            workArea.right - workArea.left, workArea.bottom - workArea.top, TRUE);

    }

}

这很好用。我没有问题。问题是如果用户右键单击实际视图并从那里选择打印:

Context Menu

我不知道如何截取此菜单条目。理想情况下,它需要将操作重定向回我的主对话框,以便它可以正确地进行打印预览。

我不想禁用上下文菜单,因为它有其他有用的选项,比如查看源代码。但我想在上下文菜单打印和打印预览操作中添加自己的行为。

这可能吗?

0 个答案:

没有答案