Windows Runtime Cpp Windowsランタイムテンプレートライブラリ 新しいページはコチラ
提供: yonewiki
(→文字列 HString) |
(→ComPtr スマートポインタによる文字列オブジェクト生成) |
||
121行: | 121行: | ||
生成されてポインタ変数を使って、Windowsランタイムオブジェクトを生成し、そのオブジェクト名を取得するメソッドを使う文字列操作のサンプルを以下に示します。 | 生成されてポインタ変数を使って、Windowsランタイムオブジェクトを生成し、そのオブジェクト名を取得するメソッドを使う文字列操作のサンプルを以下に示します。 | ||
+ | |||
+ | |||
+ | <syntaxhighlight lang="cpp" line start="1"> | ||
+ | #include <locale.h> | ||
+ | #include <wchar.h> | ||
+ | #include <stdio.h> | ||
+ | #include <crtdbg.h> | ||
+ | #include <roapi.h> | ||
+ | |||
+ | #include <wrl/client.h> | ||
+ | #include <wrl/wrappers/corewrappers.h> | ||
+ | #include <windows.ui.xaml.h> | ||
+ | |||
+ | using namespace Microsoft::WRL; | ||
+ | using namespace Microsoft::WRL::Wrappers; | ||
+ | using namespace ABI::Windows::UI::Xaml; | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | HRESULT HRESULT_Hr; | ||
+ | setlocale(LC_ALL, ""); | ||
+ | |||
+ | RoInitializeWrapper initialize(RO_INIT_TYPE::RO_INIT_MULTITHREADED); | ||
+ | if (FAILED(initialize)) { wprintf(L"WRLの初期化に失敗しました。\n"); } | ||
+ | else { wprintf(L"WRLの初期化に成功しました。\n"); } | ||
+ | |||
+ | |||
+ | ComPtr <IApplication> CoIApplicationObj; | ||
+ | |||
+ | HRESULT_Hr = RoActivateInstance(HString::MakeReference(RuntimeClass_Windows_UI_Xaml_Application).Get(),(IInspectable**)CoIApplicationObj.GetAddressOf()); | ||
+ | if (FAILED(HRESULT_Hr)) { | ||
+ | wprintf_s(L"Runtimeオブジェクトの生成に失敗しました。\n"); | ||
+ | _CrtDbgBreak(); | ||
+ | return 0; | ||
+ | } | ||
+ | else { | ||
+ | wprintf_s(L"Runtimeオブジェクトの生成に成功しました。\n"); | ||
+ | } | ||
+ | |||
+ | HString HString_StrClassName; | ||
+ | HRESULT_Hr = CoIApplicationObj.Get()->GetRuntimeClassName(HString_StrClassName.GetAddressOf()); | ||
+ | if (FAILED(HRESULT_Hr)) { | ||
+ | wprintf_s(L"HString ClassName文字列の生成に失敗しました。\n"); | ||
+ | _CrtDbgBreak(); | ||
+ | return 0; | ||
+ | } | ||
+ | else { | ||
+ | wprintf_s(L"HString ClassName文字列の生成に成功しました。\n"); | ||
+ | } | ||
+ | wprintf_s(L"\n"); | ||
+ | wprintf_s(L"HString HString_StrClassName=%s\n", HString_StrClassName.GetRawBuffer(nullptr)); | ||
+ | wprintf_s(L"\n"); | ||
+ | |||
+ | |||
+ | HString HString_Str; | ||
+ | HRESULT_Hr = HString_Str.Set(L"ワイド文字列HStringオブジェクト"); | ||
+ | if (FAILED(HRESULT_Hr)) { | ||
+ | wprintf_s(L"HStringオブジェクトの設定に失敗しました。\n"); | ||
+ | _CrtDbgBreak(); | ||
+ | return 0; | ||
+ | } | ||
+ | else { | ||
+ | wprintf_s(L"HStringオブジェクトの設定に成功しました。\n"); | ||
+ | } | ||
+ | |||
+ | wprintf_s(L"\n"); | ||
+ | wprintf_s(L"HString HString_Str=%s\n",HString_Str.GetRawBuffer(nullptr)); | ||
+ | wprintf_s(L"\n"); | ||
+ | |||
+ | HString_Str.Release(); | ||
+ | HString_StrClassName.Release(); | ||
+ | |||
+ | _wsystem(L"pause"); | ||
+ | return 0; | ||
+ | |||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | 実行結果 |