Skip to content

Commit b17e9ce

Browse files
committed
Introduce ToDesktopWindowXamlSourceWindowHandle for simplifying the implementation.
1 parent ea63e85 commit b17e9ce

1 file changed

Lines changed: 30 additions & 45 deletions

File tree

‎Mile.Xaml.Native/Mile.Xaml.cpp‎

Lines changed: 30 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,31 @@ namespace
8383
? XamlSource.try_as<IDesktopWindowXamlSourceNative>()
8484
: nullptr;
8585
}
86+
87+
HWND ToDesktopWindowXamlSourceWindowHandle(
88+
_In_ HWND WindowHandle)
89+
{
90+
winrt::DesktopWindowXamlSource XamlSource =
91+
::ToDesktopWindowXamlSource(WindowHandle);
92+
if (!XamlSource)
93+
{
94+
return nullptr;
95+
}
96+
97+
winrt::com_ptr<IDesktopWindowXamlSourceNative> XamlSourceNative =
98+
::ToDesktopWindowXamlSourceNative(XamlSource);
99+
if (!XamlSourceNative)
100+
{
101+
return nullptr;
102+
}
103+
104+
HWND XamlWindowHandle = nullptr;
105+
if (S_OK != XamlSourceNative->get_WindowHandle(&XamlWindowHandle))
106+
{
107+
return nullptr;
108+
}
109+
return XamlWindowHandle;
110+
}
86111
}
87112

88113
EXTERN_C HWND WINAPI MileXamlGetCoreWindowHandle()
@@ -214,24 +239,12 @@ EXTERN_C LRESULT CALLBACK MileXamlContentWindowDefaultCallback(
214239
}
215240
case WM_SETFOCUS:
216241
{
217-
winrt::DesktopWindowXamlSource XamlSource =
218-
::ToDesktopWindowXamlSource(hWnd);
219-
if (!XamlSource)
220-
{
221-
break;
222-
}
223-
224-
winrt::com_ptr<IDesktopWindowXamlSourceNative> XamlSourceNative =
225-
::ToDesktopWindowXamlSourceNative(XamlSource);
226-
if (!XamlSourceNative)
242+
HWND XamlWindowHandle = ::ToDesktopWindowXamlSourceWindowHandle(hWnd);
243+
if (!XamlWindowHandle)
227244
{
228245
break;
229246
}
230247

231-
HWND XamlWindowHandle = nullptr;
232-
winrt::check_hresult(
233-
XamlSourceNative->get_WindowHandle(&XamlWindowHandle));
234-
235248
::SetFocus(XamlWindowHandle);
236249

237250
break;
@@ -246,47 +259,19 @@ EXTERN_C LRESULT CALLBACK MileXamlContentWindowDefaultCallback(
246259
break;
247260
}
248261

249-
winrt::DesktopWindowXamlSource XamlSource =
250-
::ToDesktopWindowXamlSource(hWnd);
251-
if (!XamlSource)
252-
{
253-
break;
254-
}
255-
256-
winrt::com_ptr<IDesktopWindowXamlSourceNative> XamlSourceNative =
257-
::ToDesktopWindowXamlSourceNative(XamlSource);
258-
if (!XamlSourceNative)
262+
HWND XamlWindowHandle = ::ToDesktopWindowXamlSourceWindowHandle(hWnd);
263+
if (!XamlWindowHandle)
259264
{
260265
break;
261266
}
262267

263-
HWND XamlWindowHandle = nullptr;
264-
winrt::check_hresult(
265-
XamlSourceNative->get_WindowHandle(&XamlWindowHandle));
266-
267268
::SetFocus(XamlWindowHandle);
268269

269270
break;
270271
}
271272
case WM_SIZE:
272273
{
273-
winrt::DesktopWindowXamlSource XamlSource =
274-
::ToDesktopWindowXamlSource(hWnd);
275-
if (!XamlSource)
276-
{
277-
break;
278-
}
279-
280-
winrt::com_ptr<IDesktopWindowXamlSourceNative> XamlSourceNative =
281-
::ToDesktopWindowXamlSourceNative(XamlSource);
282-
if (!XamlSourceNative)
283-
{
284-
break;
285-
}
286-
287-
HWND XamlWindowHandle = nullptr;
288-
winrt::check_hresult(
289-
XamlSourceNative->get_WindowHandle(&XamlWindowHandle));
274+
HWND XamlWindowHandle = ::ToDesktopWindowXamlSourceWindowHandle(hWnd);
290275
if (!XamlWindowHandle)
291276
{
292277
break;

0 commit comments

Comments
 (0)