Theming & Visual Styles in Windows 8

The following is based on the Windows Developer Preview and might not accurately represent the final version of Windows 8. A significant change in Windows 8 is the removal of support for Windows classic theming. In the Windows Developer Preview, there is no Windows Classic theme, and all themes (including Windows Basic and the four… Continue reading Theming & Visual Styles in Windows 8

Windows Theme Fonts Redux & Sample Code

View source on GitHub. In a post earlier this year, I investigated how to retrieve information about theme fonts in Windows. Briefly, the Visual Styles APIs can be used when visual styles are enabled, but values need to be hard-coded (to some extent) otherwise. Andrew Powell commented on my previous post noting difficulties in implementing… Continue reading Windows Theme Fonts Redux & Sample Code

Windows Theme Fonts

View source on GitHub. Update: See this post for a sample implementation in WPF. Have you ever wondered how to access the various font colours and styles found throughout Windows, such as that of the ‘Main Instruction’ text in the Task Dialog shown above? If you are using WPF, the SystemFonts class might sound promising… Continue reading Windows Theme Fonts

SetDPI Utility

View source on GitHub. Updated 2013-01-06. Ken Silverman’s PNG compression tool PNGOUT (complemented nicely by the free .NET frontend PNGGauntlet) can be remarkably effective at trimming the size of PNGs without altering the image described within. However, in its quest to remove anything non-essential, PNGOUT by default strips out the image’s DPI (in fact PPI)… Continue reading SetDPI Utility

Pixel Measurements in WPF

Part of the beauty of the Windows Presentation Foundation is that it is designed to be resolution independent – that is, a WPF application should scale perfectly no matter the system’s DPI setting (excluding any bitmap graphics, which mightn’t look as nice as the vector parts). Instead of measuring things in pixels, WPF uses Device… Continue reading Pixel Measurements in WPF

Small Icon Size & DPI in Windows

The GetSystemMetrics function in Windows retrieves system metrics and configuration settings. One such metric is the recommended size (width and height) of ‘small icons’: Small icons typically appear in window captions and in small icon view. Another place where small icons show up is the notification area. MSDN contains a guide to Creating DPI-Aware Applications.… Continue reading Small Icon Size & DPI in Windows

Windows 7-style Notification Area Applications in WPF: Recap & Sample

View source on GitHub. Over the past month I’ve looked at how to implement a Windows 7-style notification area application in WPF. I covered 6 different topics: Part 1: Removing Border Resize Part 2: Notify Icon Position – Windows 7 Part 3: Taskbar Position Part 4: Multiple Monitors & Working Area Part 5: Fixing Aero… Continue reading Windows 7-style Notification Area Applications in WPF: Recap & Sample

Windows 7-style Notification Area Applications in WPF: Part 6 (Notify Icon Position: Pre-Windows 7)

View source on GitHub. In Part 2 of this series I demonstrated how to use the Shell_NotifyIconGetRect function to find the position of a notify icon. This function is new to Windows 7, however, and we must find a different solution for earlier versions of Windows. This turns out to be quite difficult. A post… Continue reading Windows 7-style Notification Area Applications in WPF: Part 6 (Notify Icon Position: Pre-Windows 7)

Windows 7-style Notification Area Applications in WPF: Part 5 (Fixing Aero Borders)

View source on GitHub. An issue that came to my attention only recently is that the borders of WPF (update: WPF is not actually to blame) windows without captions/title-bars (that is, with ResizeMode set to ‘CanResize’ and WindowStyle set to ‘None’) are drawn incorrectly when the DWM (read: Aero Glass) is enabled. Specifically, the upper… Continue reading Windows 7-style Notification Area Applications in WPF: Part 5 (Fixing Aero Borders)

Windows 7-style Notification Area Applications in WPF: Part 4 (Multiple Monitors)

View source on GitHub. At the end of Part 3 in this series, I noted that the window positioning logic depends on accurately getting the bounds of the monitor where the notify icon is located. Specifically, we require the bounds of the working area (the space on the monitor excluding the taskbar and other docked… Continue reading Windows 7-style Notification Area Applications in WPF: Part 4 (Multiple Monitors)