这是链接到我之前的问题。
我已经成功地从CHtmlView
对于我的应用程序生成的报告的新型视图,但我在新视图中发现了一些问题
class CMyHtmlView : public CHtmlView
{
protected: // create from serialization only
CMyHtmlView();
DECLARE_DYNCREATE(CMyHtmlView)
// Attributes
public:
CReportDoc* GetDocument();
CString m_sFileName;
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMyHtmlView)
public:
virtual void OnDraw(CDC* pDC); // overridden to draw this view
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:
virtual void OnInitialUpdate(); // called first time after construct
virtual void OnFilePrintPreview();
virtual void OnFilePrint();
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CMyHtmlView();
//{{AFX_MSG(CMyHtmlView)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
void CMyHtmlView::OnFilePrintPreview()
{
// Before this I will call a Function Generate a HTML File in a Location and Updated in m_sFileName
Navigate2(m_sFileName);
ExecWB(OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_PROMPTUSER, NULL, NULL );
}
void CMyHtmlView::OnInitialUpdate()
{
CHtmlView::OnInitialUpdate();
Navigate2(_T("about:blank"));
}
void CMyHtmlView::OnFilePrint()
{
// Before this I will call a Function Generate a HTML File in a Location and Updated in m_sFileName
Navigate2(m_sFileName,NULL,NULL);
CHtmlView::OnFilePrint();
}
在本次印刷中OnFilePrint()
工作没有任何问题。但问题存在于OnFilePrintPreview()
.
问题是这样的:
来电时ExecWB()
之后Navigate()
仅在应用程序中创建基于 HTML 视图的窗口,不显示打印预览窗口
我做错了什么吗?
我找到了一种方法来解决 Navigate() 之后的打印和打印预览问题。正如 user1793036 提到的,这是一个异步调用,我需要等待该操作完成。这就是打印预览和打印加载空白页面的原因。
我找到了这个活动OnNavigateComplete2()并按如下所示进行覆盖,以实现无忧的打印/预览操作。
void CMyHtmlView::OnNavigateComplete2(LPCTSTR strURL)
{
if(m_ePrintMode == PREVIEW)
ExecWB(OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_PROMPTUSER, NULL, NULL );
else if(m_ePrintMode == PRINT)
CHtmlView::OnFilePrint();
else
return;
}
并将我的打印和打印预览事件修改为
void CMyHtmlView::OnFilePrintPreview()
{
OnSaveHtmlReport();
m_ePrintMode = PREVIEW; // an Enum
Navigate2(m_sFileName);
}
void CMyHtmlView::OnFilePrint()
{
OnSaveHtmlReport();
m_ePrintMode = PRINT; // an Enum
Navigate2(m_sFileName,NULL,NULL);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)