Making a Windows demo with CEF in the GDI Scaling mode looks well on my 4K monitor
Budget: $30 – $250 USD
I'd like a Windows developer to make a demo with Visual Studio 2019 or 2022 on Windows 10 for me.
The demo should be written in C++ with pure Win32 APIs and/or the Microsoft Foundation Class (MFC) Library.
You may want to build the demo based on the official "cef-project" of the Chromium Embedded Framework (CEF).
The official "cef-project" can build several mini applications embedding CEF windows that look like Chrome. However, the text in the embedded CEF windows looks blurry on my 4K monitor after I changed their mode to GDI Scaling.
It's known that "There is new functionality in the Creators Update that results in text and primitives rendering crisply on high-DPI displays for GDI-based apps only. For applications that are GDI-based Windows can now DPI scale these on a per-monitor basis. This means that these applications will, magically, become per-monitor DPI aware. Now keep in mind that this solution is not a silver bullet. There are some limitations:
- GDI+ content doesn’t DPI scale
- DX content doesn’t DPI scale
- Bitmap-based content won’t be crisp
- It won’t be possible for end users to determine which apps will benefit from this feature without trying it out on an app-by-app basis."
There might be some ways to solve the problem. For example, the SetThreadDpiAwarenessContext API might be able to override the GDI Scaling mode of the embedded CEF windows.
All biddings are welcome. ;-)
References:
- https://docs.microsoft.com/en-us/cpp/mfc/mfc-desktop-applications?view=msvc-170
- https://bitbucket.org/chromiumembedded/
- https://bitbucket.org/chromiumembedded/cef-project/src/master/
- https://docs.microsoft.com/en-us/windows/win32/sbscs/application-manifests#gdiScaling
- https://www.codeproject.com/articles/1105945/embedding-a-chromium-browser-in-an-mfc-application
- https://mariusbancila.ro/blog/2021/05/19/how-to-build-high-dpi-aware-native-desktop-applications/
- https://blogs.windows.com/windowsdeveloper/2017/04/04/high-dpi-scaling-improvements-desktop-applications-windows-10-creators-update/
- https://blogs.windows.com/windowsdeveloper/2017/05/19/improving-high-dpi-experience-gdi-based-desktop-apps/
- https://github.com/Microsoft/Windows-classic-samples/tree/main/Samples/DPIAwarenessPerWindow
- https://blogs.windows.com/windowsdeveloper/2016/10/24/high-dpi-scaling-improvements-for-desktop-applications-and-mixed-mode-dpi-scaling-in-the-windows-10-anniversary-update/
- https://social.msdn.microsoft.com/Forums/windows/en-US/1a69f1a8-a8ac-49ac-a6bc-e0c57922f99f/how-to-disable-gdidpiscaling-programmatically?forum=windowscompatibility
- https://www.briskbard.com/forum/viewtopic.php?t=484
The demo should be written in C++ with pure Win32 APIs and/or the Microsoft Foundation Class (MFC) Library.
You may want to build the demo based on the official "cef-project" of the Chromium Embedded Framework (CEF).
The official "cef-project" can build several mini applications embedding CEF windows that look like Chrome. However, the text in the embedded CEF windows looks blurry on my 4K monitor after I changed their mode to GDI Scaling.
It's known that "There is new functionality in the Creators Update that results in text and primitives rendering crisply on high-DPI displays for GDI-based apps only. For applications that are GDI-based Windows can now DPI scale these on a per-monitor basis. This means that these applications will, magically, become per-monitor DPI aware. Now keep in mind that this solution is not a silver bullet. There are some limitations:
- GDI+ content doesn’t DPI scale
- DX content doesn’t DPI scale
- Bitmap-based content won’t be crisp
- It won’t be possible for end users to determine which apps will benefit from this feature without trying it out on an app-by-app basis."
There might be some ways to solve the problem. For example, the SetThreadDpiAwarenessContext API might be able to override the GDI Scaling mode of the embedded CEF windows.
All biddings are welcome. ;-)
References:
- https://docs.microsoft.com/en-us/cpp/mfc/mfc-desktop-applications?view=msvc-170
- https://bitbucket.org/chromiumembedded/
- https://bitbucket.org/chromiumembedded/cef-project/src/master/
- https://docs.microsoft.com/en-us/windows/win32/sbscs/application-manifests#gdiScaling
- https://www.codeproject.com/articles/1105945/embedding-a-chromium-browser-in-an-mfc-application
- https://mariusbancila.ro/blog/2021/05/19/how-to-build-high-dpi-aware-native-desktop-applications/
- https://blogs.windows.com/windowsdeveloper/2017/04/04/high-dpi-scaling-improvements-desktop-applications-windows-10-creators-update/
- https://blogs.windows.com/windowsdeveloper/2017/05/19/improving-high-dpi-experience-gdi-based-desktop-apps/
- https://github.com/Microsoft/Windows-classic-samples/tree/main/Samples/DPIAwarenessPerWindow
- https://blogs.windows.com/windowsdeveloper/2016/10/24/high-dpi-scaling-improvements-for-desktop-applications-and-mixed-mode-dpi-scaling-in-the-windows-10-anniversary-update/
- https://social.msdn.microsoft.com/Forums/windows/en-US/1a69f1a8-a8ac-49ac-a6bc-e0c57922f99f/how-to-disable-gdidpiscaling-programmatically?forum=windowscompatibility
- https://www.briskbard.com/forum/viewtopic.php?t=484