WinRT создает «Windows.UI.Popups.MessageDialog» в настольном приложении не удается

Любые идеи, почему приведенный выше код не может создать экземпляр класса. Я пытаюсь использовать WinRT в приложении для Windows, и здесь приведен фрагмент кода, он терпит неудачу, когда комментируется с помощью «!»:

#include <Roapi.h>
#include <Winstring.h>
#include <Windows.h>
#include <windows.ui.popups.h>
#include <windows.foundation.h>

inline void CheckHresult(HRESULT hr)
{
if (FAILED(hr))
{
DebugBreak();
}
}

int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow)
{
CheckHresult(RoInitialize(RO_INIT_MULTITHREADED));

static const wchar_t ClassName[] = L"Windows.UI.Popups.MessageDialog";

HSTRING hClassStr, hStr;

CheckHresult(WindowsCreateString(ClassName, sizeof(ClassName) / sizeof(ClassName[0]) - 1, &hClassStr));

ABI::Windows::UI::Popups::IMessageDialog* pClass;
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
CheckHresult(RoActivateInstance(hClassStr, (IInspectable**)&pClass)); //here it fails with E_NOTIMPL !!!!!!!!!!

WindowsDeleteString(hClassStr);

static const wchar_t msgTitleName [] = L"Metro Message Box!";

CheckHresult(WindowsCreateString(msgTitleName, sizeof(msgTitleName) / sizeof(msgTitleName[0]) - 1, &hStr));

CheckHresult(pClass->put_Title(hStr));

WindowsDeleteString(hStr);

static const wchar_t msgContent [] = L"Hello Metro.";

CheckHresult(WindowsCreateString(msgContent, sizeof(msgContent) / sizeof(msgContent[0]) - 1, &hStr));

CheckHresult(pClass->put_Content(hStr));

WindowsDeleteString(hStr);

CheckHresult(pClass->ShowAsync(nullptr));
}

Я понятия не имею, почему это происходит.

РЕДАКТИРОВАТЬ:

Функция «RoActivateInstance» не удается активировать экземпляр класса с именем ‘Windows.UI.Popups.MessageDialog’ с HRESULT ‘E_NOTIMPL’.

0

Решение

Если вы посмотрите внизу страницы MSDN, на которую вы ссылаетесь, то там написано, что Минимально поддерживаемый клиент — Windows 8 Магазин приложений только.

API не поддерживается в обычной настольной программе.

0

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector