ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 유니티 화면 비율 고정 처리...17
    일지 2021. 11. 2. 22:58

    화면 사이즈 변경 처리 방법

    코드를 보면 사이즈를 변경한 뒤 직접 사이즈를 설정하는 게 아니라 원래의 WinProc에 변경된 사이즈를 가지고 이벤트를 넘겨주는 방식으로 사이즈를 변경하도록 만들고 있다.

     

    이렇게 한 이유는 기존 WinProc에서 진행되어야 할 이벤트를 빼먹지 않고 진행하도록 하기 위한 것으로 보인다.

     

    wndProc

                // Write back changed window parameters.
                Marshal.StructureToPtr(rc, lParam, true);
            }
    
            // Call original WindowProc function.
            return CallWindowProc(oldWndProcPtr, hWnd, msg, wParam, lParam);

     

    또, WinProc의 등록은 단순히 SetWindowLong에서 GWLP_WNDPROC를 플래그러 넘기면서 새로운 WinProc을 등록하고 있는 것으로 보이며 종료 시 기존 값으로 다시 복원시키기 위해 기존 WinProc 값을 저장해 두고 있다.

     

    SetWindowLong

            wndProcDelegate = wndProc;
            newWndProcPtr = Marshal.GetFunctionPointerForDelegate(wndProcDelegate);
            oldWndProcPtr = SetWindowLong(unityHWnd, GWLP_WNDPROC, newWndProcPtr);

    댓글

Designed by Tistory.