Dell Customer Communication - Confidential > > From: Christopher Chavez > > To: tcltk > > I wanted to > share a way for using high-DPI appearance on Windows that I > > found, in case > anyone was interested. I have posted it to > > > https://www.perlmonks.org/?node_id=11101747
Thank you Pretty nice > > Before calling > MainWindow->new in Tk, use Win32::API to invoke > > SetProcessDPIAware(): > > > > if ($^O eq 'MSWin32') { > > use Win32::API; Here should be 'require', not 'use' > > # See > > https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setprocessdpiaware > > my $SetProcessDPIAware = Win32::API::More->new('User32', 'BOOL > > SetProcessDPIAware()'); > > $SetProcessDPIAware->Call() or warn 'Failed to set process DPI > > awareness'; > > } > > > > > > This isn't the approach Microsoft > recommends (they suggest using an > > application manifest instead), but this > seems to be an easy enough approach > > for standalone scripts. > > > > > > Recent > Tcl/Tk will enable high-DPI by default for scripts run using tclsh/wish, > > but > not the Tcl C API. I'm not sure this behavior should be the default in > > > Tcl::pTk, for compatibility (i.e. since Perl/Tk does not enable high-DPI) and > > > because certain elements like images will not be resized automatically. > > > > > Maybe Tcl::Tk would be more in favor of having this behavior by default (for > > > consistency with Tcl/Tk), but it might require XS or dependency on another > > > module like Win32::API. > > > > > > Christopher A. Chavez