いくつかの.curファイルがDLLファイルに埋め込まれているため、UWP C++プロジェクトで読み込んで使用したいと考えています。これはすべて可能ですか?UWPのdllからリソースをロードする方法は?
私は、Win32ではLoadImageまたはLoadCursorを使用できますが、そのAPIはUWPでは使用できないことを知っています。 LoadPackagedLibraryを使用してDLLを読み込むことはできますが、そこからカーソルを取得する方法はわかりません。
いくつかの.curファイルがDLLファイルに埋め込まれているため、UWP C++プロジェクトで読み込んで使用したいと考えています。これはすべて可能ですか?UWPのdllからリソースをロードする方法は?
私は、Win32ではLoadImageまたはLoadCursorを使用できますが、そのAPIはUWPでは使用できないことを知っています。 LoadPackagedLibraryを使用してDLLを読み込むことはできますが、そこからカーソルを取得する方法はわかりません。
これを行うには、CoreCursor APIを使用することができます。
template <typename T>
HRESULT RestoreCursor(T* cursorOwner, uint32_t resourceId)
{
using namespace ABI::Windows::UI::Core;
using namespace Microsoft::WRL;
using namespace Microsoft::WRL::Wrappers;
ComPtr<ICoreCursorFactory> cursorFactory;
hr = RoGetActivationFactory(HStringReference(L"Windows.UI.Core.CoreCursor").Get(), __uuidof(ICoreCursorFactory), &cursorFactory);
if (FAILED(hr)) return hr;
ComPtr<ICoreCursor> cursor;
hr = cursorFactory->CreateCursor(CoreCursorType_Arrow, resourceId, &cursor);
if (FAILED(hr)) return hr;
return cursorOwner->put_PointerCursor(cursor.Get());
}
ここでTは、あなたがXAMLを使用したりしていないかどうかに応じて、(CoreIndependentInputSourceなど)ICorePointerInputSourceまたはICoreWindowかもしれません。
リソースをDLLに含めることができるかどうか、またはそれらを.exe自体に含める必要があるかどうかは、100%肯定的ではありません。
ICoreCursorFactoryとRoGetActivationFactoryを使っても問題ありませんか?私はそれらが変わることができるプライベートAPIであり、おそらくポータブル/安全ではないような気がしますか? – mnovakovic
これらはプライベートAPIではありません。彼らは一般に公開されており、使用するのに完全に安全です。実際には、それはC++/CXと。NETはカバーの背後にあります。 – Sunius
私はいくつかの.curファイルをDLLファイルに埋め込んでおり、UWP C++プロジェクトで読み込んで使用したいと思います。これはすべて可能ですか?
私の経験から、現在は不可能です。ここに私の説明は、次のとおりです。
.CURファイルを使用してカーソルカスタム設定方法については、前にいくつかの議論があります。このarticleはUWPアプリのために古くなっ
ネイティブリソースライブラリにカスタムカーソルを定義し、CoreWindow.PointerCursor
プロパティを使用してカーソルを設定する
私たちはステップのほとんどが同じで、DLL(ユニバーサル・Windowsの場合)プロジェクトにカスタムカーソルを作成する必要があるが、は上記記事にカスタムカーソルパーツを作成参照してください。
その後、カスタムカーソルを設定するには、次のコードを使用して、私たちのC++ UWPアプリに.rcファイル既存のアイテムを追加します。
Windows::UI::Core::CoreCursorType cursorType = Windows::UI::Core::CoreCursorType::Custom;
CoreCursor ^* theCursor = new CoreCursor^(nullptr);
*theCursor = ref new CoreCursor(cursorType, 101); //101 is the resource id number
CoreWindow::GetForCurrentThread()->PointerCursor = *theCursor;
私はにリソースファイルをパッケージ化しようとしましたWindowsランタイムコンポーネントは、参照として追加されていますが、リソースを正しく認識できません。
私たちはこのような特別な要件のために私たちのuwpアプリケーションでリソースを統合する必要があります。
私のサンプルを参照してください:https://github.com/Myfreedom614/UWP-Samples/tree/master/UWPCreateCurCPPAPP1/UWPCreateCurCPPAPP1
UWPカント利用のWin32 DLL – lindexi
私はそれはあなたが何を意味するのかである場合は、リソースが含まれているUWP DLLを作成することができますか? – mnovakovic