我有一个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);
}
}
这很好用。我没有问题。问题是如果用户右键单击实际视图并从那里选择打印:
我不知道如何截取此菜单条目。理想情况下,它需要将操作重定向回我的主对话框,以便它可以正确地进行打印预览。
我不想禁用上下文菜单,因为它有其他有用的选项,比如查看源代码。但我想在上下文菜单打印和打印预览操作中添加自己的行为。
这可能吗?