Programming/C Win32 MFC2017. 11. 10. 18:27

win10 에서는 바로 적용되는 hidpi의 적용과

win7에서는 최소한 로그아웃해야 하는 녀석이긴 하지만


아무튼 win32 에서도 dpi 변경시에 이벤트가 날아 온다는 거군..

다만 win32는 vs2012 이후에 적용이 되는 것 같은데


찾다보니 win7 대응으로 vs2010 이고

win8  이후에 대응을 위해 vs2012 출시 된 거 같으니

그런 지원 기능 차이가 생기는 걸려나?


그래서 vs2008이 vista 대응이라 개판인건가!?

(찾아보니. 비스타 지원용.. 그래서 그렇게 vs2008도 망작이었던 게냐...)

[링크 : https://en.wikipedia.org/wiki/Microsoft_Visual_Studio#2008]


case WM_DPICHANGED

    // Find the button and resize it 

    HWND hWndButton = FindWindowEx(hWnd, NULL, NULL, NULL); 

    if (hWndButton != NULL) 

    { 

        UpdateButtonLayoutForDpi(hWndButton); 

    } 

}  

[링크 : https://msdn.microsoft.com/ko-kr/library/windows/desktop/dn312083(v=vs.85).aspx]


어? 지원범위로는 win7 에서는 해당 이벤트가 발생하지 않을테니..

초기 실행시 CreateWindow에서 

Minimum supported client Windows 8.1 [desktop apps only]


이 놈도.. win8 이상..

GetDpiForMonitor()

[링크 : https://msdn.microsoft.com/ko-kr/library/windows/desktop/dn280510(v=vs.85).aspx]


이 놈은 win10 이상.. -_-

GetDpiForWindow()

[링크 : https://msdn.microsoft.com/en-us/library/windows/desktop/mt748624(v=vs.85).aspx]


[링크 : https://msdn.microsoft.com/en-us/library/windows/desktop/mt843498(v=vs.85).aspx] win32

   [링크 : https://blogs.msdn.microsoft.com/vcblog/2010/03/11/mfc-applications-now-default-to-being-dpi-aware/]

[링크 : https://docs.microsoft.com/en-us/dotnet/framework/winforms/high-dpi-support-in-windows-forms] winform

[링크 : https://msdn.microsoft.com/ko-kr/library/windows/desktop/ee308410(v=vs.85).aspx] wpf


+

2017.11.13

GetDeviceCaps(hdcScreen, LOGPIXELSX);

GetDeviceCaps(hdcScreen, LOGPIXELSY); 

[링크 : https://stackoverflow.com/questions/12652835/getting-actual-screen-dpi-ppi-under-windows]


int GetDeviceCaps(

  _In_ HDC hdc,

  _In_ int nIndex

);


LOGPIXELSX

Number of pixels per logical inch along the screen width. In a system with multiple display monitors, this value is the same for all monitors.

LOGPIXELSY

Number of pixels per logical inch along the screen height. In a system with multiple display monitors, this value is the same for all monitors.


Minimum supported client

Windows 2000 Professional [desktop apps only] 

[링크 : https://msdn.microsoft.com/ko-kr/library/windows/desktop/dd144877(v=vs.85).aspx]


음.. win7 에서는 96dpi로 기본 설정된다고 하는데

변경하면 저게 다르게 나오려나?

[링크 : https://www.techrepublic.com/.../get-a-better-view-in-windows-7-by-adjusting-dpi-scaling/]

'Programming > C Win32 MFC' 카테고리의 다른 글

정체 불명의.. 메시지 WM_DEVMODECHANGE  (0) 2017.11.13
윈도우 ini 파일 사용하기  (0) 2017.11.13
cedit ctrl-a 단축키 사용하기  (0) 2017.11.08
mfc sleep 주의  (0) 2017.11.08
win32 usb class  (0) 2017.11.03
Posted by 구차니