일부 .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을 사용하거나하지 않는 여부에 따라 ICorePointerInputSource (CoreIndependentInputSource 등) 또는 ICoreWindow 일 수있다.
리소스를 DLL에 포함 할 수 있는지 또는 .exe 자체에 포함해야하는지 여부는 100 % 확실하지 않습니다.
ICoreCursorFactory와 RoGetActivationFactory를 사용하는 것이 좋습니다. 나는 그것들이 바뀔 수 있고 아마 너무 휴대 가능/안전하지 않은 개인용 API라고 생각한다. – mnovakovic
이러한 API는 비공개 API가 아닙니다. 그들은 공개적으로 사용하기에 완벽하게 안전합니다. 사실, 그게 C++/CX와.NET은 커버 뒤에 있습니다. – Sunius
DLL 파일에 일부 .cur 파일이 포함되어 있으며이를 UWP C++ 프로젝트에로드하고 사용하고 싶습니다. 가능한가요?
내 경험에 의하면 현재 불가능합니다. 여기 내 설명은 다음과 같습니다
이 article는 UWP 응용 프로그램에 대한 오래된 :
사용자 지정 설정 .CUR 파일을 사용하여 커서하는 방법에 대한하기 전에, 몇 가지 논의가있다 하지만 생각은 같습니다. 네이티브 리소스 라이브러리에 사용자 정의 커서를 정의하고 CoreWindow.PointerCursor
속성을 사용하여 커서를 설정합니다.
우리는 DLL에서 사용자 정의 커서 (범용 윈도우) 프로젝트, 대부분의 단계는 동일을 만들어야합니다. 나는에 리소스 파일을 패키지로 시도했습니다
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;
:
그런 다음 사용자 정의 커서를 설정하려면 다음 코드를 사용하여, 우리의 파일을 C++ UWP 응용 프로그램 .RC 기존 항목을 추가 Windows 런타임 구성은 참조로 추가되었지만 리소스를 올바르게 인식 할 수 없습니다.
그래서 우리는 특별한 요구 사항에 대한 우리의 uwp 응용 프로그램에 리소스를 통합해야합니다.
내 샘플을 참조하십시오 https://github.com/Myfreedom614/UWP-Samples/tree/master/UWPCreateCurCPPAPP1/UWPCreateCurCPPAPP1
UWP 캔트 사용는 Win32 DLL – lindexi
내가 그건 당신이 무엇을 의미하는지 경우 자원을 포함하는 UWP DLL을 만들 수 있습니까? – mnovakovic