#include<Microsoft.UI.Xaml.Window.h>voidApp::OnLaunched(LaunchActivatedEventArgsconst&){autoappTitleBar{window_.Content().as<Page>().GetAppTitleBar()};if(AppWindowTitleBar::IsCustomizationSupported()){// 检测是否支持,Windows 11autoappWindow{window_.AppWindow()};appWindow.TitleBar().ExtendsContentIntoTitleBar(true);appWindow.Changed({this,&App::AppWindow_Changed});autotitleBar{appWindow.TitleBar()};titleBar.ExtendsContentIntoTitleBar(true);appTitleBar.Loaded({this,&App::AppTitleBar_Loaded});appTitleBar.SizeChanged({this,&App::AppTitleBar_SizeChanged});}else{// In the case that title bar customization is not supported, fallback to WindowChromewindow_.ExtendsContentIntoTitleBar(true);window_.SetTitleBar(appTitleBar);}}voidApp::AppTitleBar_Loaded(IInspectableconst&,RoutedEventArgsconst&){assert(AppWindowTitleBar::IsCustomizationSupported());SetDragRegionForCustomTitleBar();}voidApp::AppTitleBar_SizeChanged(IInspectableconst&,SizeChangedEventArgsconst&){assert(AppWindowTitleBar::IsCustomizationSupported());assert(window_.AppWindow().TitleBar().ExtendsContentIntoTitleBar());SetDragRegionForCustomTitleBar();}voidApp::SetDragRegionForCustomTitleBar(){assert(AppWindowTitleBar::IsCustomizationSupported());autotitleBar{window_.AppWindow().TitleBar()};assert(titleBar.ExtendsContentIntoTitleBar());autoscaleAdjustment{GetScaleAdjustment(window_)};autoappTitleBar{window_.Content().as<Page>().GetAppTitleBar()};autorect{RectInt32{}};rect.X=static_cast<int32_t>((titleBar.LeftInset()+48)*scaleAdjustment);rect.Y=0;rect.Height=static_cast<int32_t>(48*scaleAdjustment);#if defined _DEBUG
// make application tool bar clickablerect.Width=static_cast<int32_t>(appTitleBar.ActualWidth()*scaleAdjustment/3);#else
rect.Width=appTitleBar.ActualWidth()*scaleAdjustment-rect.X-titleBar.RightInset();#endif
titleBar.SetDragRectangles(winrt::array_view(&rect,&rect+1));}HWNDGetHandleFromWindow(winrt::Microsoft::UI::Xaml::Windowconst&window){autohWnd{HWND{}};window.as<::IWindowNative>()->get_WindowHandle(&hWnd);returnhWnd;}doubleGetScaleAdjustment(winrt::Microsoft::UI::Xaml::Windowconst&window){autodpiX{::GetDpiForWindow(GetHandleFromWindow(window))};autoscaleFactorPercent{(dpiX*100+(96>>1))/96};returnscaleFactorPercent/100.;}