【问题标题】:Outlook Addin - Get current selected calendar date in C++Outlook 插件 - 在 C++ 中获取当前选定的日历日期
【发布时间】:2014-08-25 18:18:09
【问题描述】:

我想以编程方式在我正在修补的 C++ Outlook 插件中获取选定的日历日期。 这大概涉及到使用 CalendarView 对象的 SelectedStartTime 和 SelectedEndTime 属性。

我搜索了 SO(和网络)并在 VB 和 C# 中找到了解决方案,但我在将实现迁移到 C++ 时遇到了麻烦。我能够获取视图对象 - 但我不知道如何获取 calendarView 对象。

这是 C# 中的原始 SO 问题: Outlook Addin - Get current selected calendar date

这是我(到目前为止)在 C++ 中的实现。请注意,它是不完整的:

CComPtr<Outlook::_Explorer> spExplorer;
Outlook::MAPIFolder * pFolder;
CComPtr<Outlook::View> view;



hr = m_pHostApp->ActiveExplorer(&spExplorer);   
if (SUCCEEDED(hr) && spExplorer)
{
    hr =  spExplorer->get_CurrentFolder(&pFolder);
    if ((SUCCEEDED(hr)) && pFolder)
    {
        hr = pFolder->get_CurrentView(&view);
        if (SUCCEEDED(hr))
        {
            Outlook::OlViewType viewType;
            hr = view->get_ViewType(&viewType);
            if (SUCCEEDED(hr))
            {
                if (viewType == Outlook::olCalendarView)
                {
                      //the vb/C# solutions suggest that I need a calendar 
                      //view object here and somehow get its           
                      //SelectedStartTime and SelectedEndTime. 
                      //However I suspect there's no such object.. so I must be doing
                      //something wrong.
                }
            }
        }
    }
}

【问题讨论】:

    标签: c++ com outlook-addin


    【解决方案1】:

    在视图变量上调用 QueryInterface 来查询 CalendarView 接口,然后使用 CalendarView::SelectedStartTime / SelectedEndTime 属性。

    【讨论】:

    • 哈!这是有道理的——我一直在寻找一种“投射”对象的方法——而且比使用 COM 的投射机制更自然。谢谢你,先生。我明天试试这个,然后回来接受你的回答。
    • 所以。我会接受你的回答——它是正确的。我仍然无法实现这一点。具体来说,我的代码中不存在该接口。我是否需要在 .idl 文件中声明 _CalendarView 接口及其属性?我只是不太了解 COM :/
    • 您是否使用#import 导入了 Outlook 类型库?
    • 再次感谢您的帮助。我只是在维护这个软件,所以我没有所有的答案。但似乎我们正在导入一个“OUTL.OLB”——我想就是这样。但是,它是从 2004 年开始的 - 也许我需要获得一个更新的版本并尝试一下。
    • 好的。我已经确认新版本的 OLB 文件包含缺少的 CalendarView 类型 - 所以我现在应该没问题。再次感谢!
    猜你喜欢
    • 2011-10-30
    • 2015-11-20
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 2019-09-12
    • 1970-01-01
    相关资源
    最近更新 更多