CHtmlView Navigate2 和 ExecWB 执行

2023-12-15

这是链接到我之前的问题。

我已经成功地从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(使用前将#替换为@)

CHtmlView Navigate2 和 ExecWB 执行 的相关文章

随机推荐

  • Python 3 不带括号打印

    The print以前在Python 2中是一条语句 现在在Python 3中变成了一个需要括号的函数 Python 3 中是否有抑制这些括号的方法 也许通过重新定义打印功能 所以 而不是 print Hello stack over fl
  • 在 .NET 中处理令人难以置信的大量数据

    我正在努力解决以下问题投影网但我一直遇到一些问题 第一个是在 a 中存储大量元素的问题List
  • 有没有一种简单的方法来删除字符串中的多个空格?

    假设这个字符串 The fox jumped over the log 转变为 The fox jumped over the log 在不拆分和进入列表的情况下实现此目的最简单的 1 2行 是什么 gt gt gt import re g
  • 如何定义函数的返回类型/OutputType

    为什么下面的类型会改变 function SomeFunction SomeParameter return SomeParameter 我想我需要设置一个返回类型 但是如何设置呢 一个例子是使用 NewFolder Join Path C
  • XSLT 转换从元素创建新的 qname

    我需要转换 xml 输出中的数据表 如下所示 C1 列 1 c2 列 2 等
  • Anaconda Navigator 不显示新环境

    当我在 Anaconda Navigator 中添加新环境时 它将创建该环境 但不会在 UI 中显示 我可以通过提示看到环境 所以我知道它已经创建了 它只是不会在用户界面中显示它 我需要做什么才能让它显示在用户界面中 请通过运行更新 Ana
  • 如何在 ClearCase 中按文件扩展名删除文件元素?

    我有很多xxx cmd位于多个文件夹中的文件 例如child1 child2 child3等 他们有一个父文件夹parent 是否有一个cleartool命令可以在parent删除所有的文件夹 cmd所有子文件夹中的文件 不容易 因为在执行
  • 枚举当前 Visual Studio 项目中的所有文件

    我正在尝试编写一个简单的 Visual Studio 2012 扩展 我已经生成了扩展模板 并且可以从工具菜单中打开一个对话框 我想枚举当前打开的项目中的所有文件 然后根据一些规则过滤它们 我正在寻找的是返回 IEnumerable 的代码
  • 无法从我的 Flutter Web 访问 RestAPI (FastAPI) - 跨源请求被阻止

    我有一个 Linux 服务器 我有两个 Docker 容器 在第一个容器中 我部署 Flutter Web 在另一个容器中 我使用 FastAPI 运行 RestAPI 我将两个 Docker 容器设置在同一个网络中 因此通信应该可以正常工
  • 在 page_load 上的内容页上传递母版页控制值

    我在主页上有一个下拉列表 我想在加载内容页面时在内容页面上传递选定的值 我的问题是 只有当我更改下拉列表上的值时 该值才会传递 因此 当页面加载时 我必须从下拉列表中重新选择以捕获下拉列表的值 如果我正在浏览内容页面 则所选值不会在页面加载
  • 使用 Selenium WebDriver 直接操作剪贴板

    是否可以使用 Selenium WebDriver 用一些要粘贴的文本预先填充剪贴板 就像文本已复制到另一个应用程序中一样 最好使用 Python 绑定 不 似乎不是 作为一个browserSelenium 是一种操作工具 旨在执行浏览器特
  • Java连接多个数据库

    我正在创建一个连接到多个数据库的java应用程序 用户将能够从下拉框中选择他们想要连接的数据库 然后 程序通过将名称传递给创建初始上下文的方法来连接到数据库 以便它可以与 Oracle Web 逻辑数据源进行通信 public class
  • 编辑预定的待处理意向

    我编写了一个应用程序 可以在之前选择的预定时间打开 关闭 WiFi 它的工作方式非常简单 从时间选择器中选择时间 然后添加它 它以编程方式从时间选择器获取数据并设置和警报 我首先写下我的活动和广播接收器的代码 在这段代码下面我将写下我的问题
  • instanceof 抛出不兼容的类型

    我最近在以下代码片段中遇到了一个奇怪的编译错误 class A class B extends A class Example class Demo public static void main String args B b new B
  • android gridview 行分隔符/分隔符

    有没有办法在网格视图中的行之间显示 水平 分隔线 我尝试在每个网格项目下方放置一个小分隔符图像 但这不是解决方案 因为当一行未完全填充项目时 它不会跨越整行 有没有办法在每一行之间添加图像 我只能找到改变行间距的方法 如果您使用网格项目的自
  • 格式指定类型“unsigned Short”,但参数类型为“int”

    我有一个扫描字符串的方法 将任何新行转换为 br 对于 HTML 有问题的行是 NSCharacterSet newLineCharacters NSCharacterSet characterSetWithCharactersInStri
  • 如果是负数则删除行

    如果我的 data frame 看起来像 A B C 1 10 James Math 2 1 Tony Science 3 5 Kevin Math 4 11 Chris Math 5 13 Min English 我想删除行 如果A有一个
  • 如何自动化使用 Web 服务的任务

    我有一个winform应用程序需要消耗一个网络服务 Web 服务检查数据库中是否有任何更改 如果数据库中有任何更改 则应通知 winform 应用程序并相应地执行一些任务 我怎么做 我想在我的 winform 应用程序中使用计时器 然后每隔
  • 将 HTML 字符串转换为图像

    我有一个保存 HTML 标记的字符串变量 该 HTML 标记基本上代表了电子邮件内容 现在我想根据该字符串内容创建一个图像 该图像实际上包含 HTML 标记 我不想通过将此内容写入其中来创建 HTML 文件 我只想使用这个字符串创建一个图像
  • CHtmlView Navigate2 和 ExecWB 执行

    这是链接到我之前的问题 我已经成功地从CHtmlView对于我的应用程序生成的报告的新型视图 但我在新视图中发现了一些问题 class CMyHtmlView public CHtmlView protected create from s