@@ -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
88113EXTERN_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