@James,
Put the call to SetProcessDPIAware in WinMain, not in a place where is not executed.
function WinMain ( byval hInstance as HINSTANCE, _
byval hPrevInstance as HINSTANCE, _
byval szCmdLine as zstring ptr, _
byval iCmdShow as integer ) as integer
EZP_SetProcessDPIAware
print EZP_IsProcessDPIAware ' check if it has been set
In EZP_ControlAdd, you're using
IF hWnd THEN SendMessage hWnd, WM_SETFONT, SendMessage(cast(HWND,hDlg), WM_GETFONT, 0, 0), 0
but has you have not set the size of the font for the dialog in the dialog template, the call to WM_SETFONT, SendMessage(cast(HWND,hDlg), WM_GETFONT, 0, 0) will return NULL, that means that it is using the system font.
IF hWnd THEN SendMessage hWnd, WM_SETFONT, SendMessage(cast(HWND,hDlg), WM_GETFONT, 0, 0), 0
print "Font: ", SendMessage(cast(HWND,hDlg), WM_GETFONT, 0, 0)
See in the capture how small (half the size) appear the controls in my monitor.
Dialogs don't work like SDK windows. They scale automatically according the size of its font.
Maybe Pierre, that is the only SDK'er that I know that likes dialogs, can help you to properly fill the dialog template.
Almost nobody is paying the due attention to DPI awareness. One day they will regret it and ask for an "easy" solution. You know, there are always "easy" solutions to any problem. What happens is that SDK'er like to complicate things
