【问题标题】:In C++, CMailItem::Display(VARIANT &Modal) what is the VARIANT variable it is looking for?在 C++ 中,CMailItem::Display(VARIANT &Modal) 它要查找的 VARIANT 变量是什么?
【发布时间】:2016-09-04 07:17:30
【问题描述】:

我正在编写一个程序,该程序将预先填写要发送数据的电子邮件。但是,我想在实际发送之前向用户显示电子邮件。 C++ 的 MailItem 类中包含的显示方法需要一个 VARIANT 变量。我对 C++ 比较陌生,所以我以前从未处理过 VARIANT 变量。根据我的研究,我发现 this 解释了 Variant 是什么。

当我声明一个变体并将其用于参数时,我只会收到错误“变量类型错误”。我使用的代码如下。我知道那行不通,但老实说,我不知道用什么来填充变体以使其工作。 The site for the MailItem class 表示不需要变体变量,但没有它我的代码将无法编译。该站点似乎是针对 Visual Basic 的,它不能帮助我使用 C++ 工作。

    VARIANT modal;
    olMailItem.Display(modal);

你们有没有这方面的经验,可以指出正确的方向?我很感激。

【问题讨论】:

  • 这不是 C++ 代码,它是 VBA。 VARIANT 也是 VBA 类型。
  • 请仔细阅读文档(例如msdn.microsoft.com/en-us/library/windows/desktop/…) - 它不是那么简单。 VARIANT 需要通过 VariantInit 初始化,或者你应该使用 variant_tCComVariant 包装器来处理这个问题。
  • Zdeslav Vojokiv,那个 variant_t 包装器做到了!很抱歉问这么简单的问题,但你们太棒了!
  • 当您标记此 MFC 时,您可能希望使用类 COleVariant。这个类提供了几个重载的构造函数来构造不同类型的变体,比如字符串或整数。
  • 如果不了解 C++ 或 Windows API,就无法同时掌握 MFC 和 COM。祝你好运。除非你打下坚实的基础(Windows API、COM、C++),否则你会浪费很多时间。

标签: c++ mfc com mailitem


【解决方案1】:

只是猜测,将您的变量声明为像这样传递:

_variant_t modal(VARIANT_TRUE);// probably looking for a VARIANT_BOOL

【讨论】:

    【解决方案2】:

    不错的猜测!我已经在上面的反应中测试了答案,它确实是正确的! “_variant_t modal(VARIANT_TRUE);”

    您可以将它与我使用过的工作示例结合使用:在 Visual Studio 中使用 C++ 自动化 Outlook。 https://support.microsoft.com/en-us/kb/2575036

    …
    _variant_t modal(VARIANT_TRUE); 
    yourCMailItem.Display(modal); // The e-mail appears
    …
    

    【讨论】:

      猜你喜欢
      • 2017-03-18
      • 2017-03-05
      • 2012-04-07
      • 2015-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多