首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有cppwinrt库的Toast通知Windows 10

带有cppwinrt库的Toast通知Windows 10
EN

Stack Overflow用户
提问于 2017-05-13 13:36:07
回答 1查看 2K关注 0票数 1

我找到了一个在c++上的Windows 10中如何制作烤面包通知的例子

https://github.com/WindowsNotifications/desktop-toasts/blob/master/CPP/DesktopToastsSample.cpp

在我看来,这段代码有C风格,而不是C++,我觉得它看起来不太好。

我在winrt上为с++ https://github.com/Microsoft/cppwinrt找到了一个包装器

现在,我正在尝试编写类似于示例中的类似代码,但使用winrt。

例如,有行

代码语言:javascript
复制
ComPtr<IToastNotificationManagerStatics> toastStatics;
HRESULT hr = Windows::Foundation::GetActivationFactory(
   HStringReference(RuntimeClass_Windows_UI_Notifications_ToastNotificationManager).Get(),
&toastStatics);

我开始写代码

代码语言:javascript
复制
#include "winrt/Windows.UI.Notifications.h"
#include "winrt/Windows.Foundation.h"
using namespace winrt::Windows::UI::Notifications;
using namespace winrt::Windows::Foundation;
void main() {
    auto igetaf = IGetActivationFactory();
    igetaf.GetActivationFactory(???);
  1. 如何将字符串转换为winrt::hstring
  2. 如何转换RuntimeClass_Windows_UI_Notifications_ToastNotificationManager hstring

文档甚至没有说明我可以使用什么字符串

learn.microsoft.com/en-us/uwp/api/windows.foundation.igetactivationfactory (声誉不足:()

你能给我一个工作代码的例子吗??

EN

回答 1

Stack Overflow用户

发布于 2017-05-13 16:41:35

目前有三种使用C++运行时类的主要方法。首先是使用ABI,即你发现的。正如你所发现的,这是非常麻烦的。

第二个是C++/CX,它使用^符号来表示Windows类。您可以在UWP示例回购中看到这种样式的示例。

第三是C++/WinRT。在C++/WinRT中,对象直接表示为类。有导论迁移指南

在C++/WinRT中,您根本不使用类工厂。(因此不需要为类名创建hstring,也不需要创建IGetActivationFactory。)

涵盖所有C++/WinRT的内容超出了本站点的范围,但下面是一个草图:

代码语言:javascript
复制
using winrt::Windows::UI::Notifications::ToastNotification;
using winrt::Windows::UI::Notifications::ToastNotificationManager;
using winrt::Windows::Data::Xml::Dom::XmlDocument;

XmlDocument doc;
doc.LoadXml(L"<toast...>...</toast>");
ToastNotification toast(doc);
ToastNotificationManager::CreateToastNotifier(L"appid").Show(toast);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43953779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档