한 일년만에 다시 WinUI3를 만지게 되서 “앱 시작 창크기 조절” 를 전에 했던거 보고 적용할려니…
PInvoke.User32 패키지가 버려졌으니 대신 CsWin32를 쓰라고 합니다. (참고로 CsWin32는 현재 prerelease 버전 밖에 없어서 위에 “include prerelease”에 체크 안하면 안나옵니다)
아무튼 CsWin32를 설치하면 바로 사용할 수 있는건 아니고 프로젝터 폴더에 NativeMethods.txt 파일을 만들고 그 안에 사용할 함수명을 적어줘야 합니다. (설명을 제대로 안 읽는 바람에 이걸 안해서 한참 삽질함)
GetDpiForWindow SetWindowPos
윈도우 창 크기 조절하는데는 필요한 함수는 두개뿐입니다.
private void SetWindowSize(IntPtr hwnd, int width, int height) { var dpi = PInvoke.GetDpiForWindow((Windows.Win32.Foundation.HWND)hwnd); float scalingFactor = (float)dpi / 96; width = (int)(width * scalingFactor); height = (int)(height * scalingFactor); var HWND_TOP = new Windows.Win32.Foundation.HWND((IntPtr)0); var SWP_NOMOVE = Windows.Win32.UI.WindowsAndMessaging.SET_WINDOW_POS_FLAGS.SWP_NOMOVE; PInvoke.SetWindowPos((Windows.Win32.Foundation.HWND)hwnd,HWND_TOP,0, 0, width, height, SWP_NOMOVE); }
App.xaml.cs 파일에 위 함수를 추가해줍니다. (윈도우 사이즈 조절 함수)
protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args) { m_window = new MainWindow(); //---------------------------------------------------------------------------- //여기입니다. var hwnd = new Windows.Win32.Foundation.HWND(WinRT.Interop.WindowNative.GetWindowHandle(m_window)); SetWindowSize(hwnd, 800, 600); //여기입니다. //---------------------------------------------------------------------------- m_window.Activate(); }
그리고 App.xaml.cs 파일의 Onlaunched 함수에서 시작시 원하는 창 사이즈를 적어주면 됩니다.
답글 남기기