Win32

Balloon Tooltips
Win32 c win32
Published: 2008-06-12
Balloon Tooltips
In the Windows XP login screen, the password text box will warn you with a balloon tooltip if you accidentally turn Caps Lock on. The balloon tooltip appears to be a Windows tooltip common control with the TTS_BALLOON style. To replicate this functionality, I decided to write a function called ShowMsgBalloon() which, given a control and the various balloon tooltip parameters, creates and shows the balloon tooltip below the control. Read more...
Custom-Drawn Win32 Tooltips
Win32 c win32
Published: 2007-08-29
Custom-Drawn Win32 Tooltips
Like many common controls, the tooltip control supports custom drawing for maximum flexibility. This is a quick tutorial on how to use the tooltip custom draw facility. First, start with the following scratch program (which is a slightly modified version of Raymond Chen’s scratch program): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 #define STRICT #include <windows. Read more...
Win32: Getting LOGFONT from HFONT
Win32 win32
Published: 2007-08-22
Win32: Getting LOGFONT from HFONT
To convert a HFONT to a LOGFONT, use the GDI function GetObject(), as in: 1 2 3 LOGFONT lf; int ret = GetObject(hfont, sizeof(lf), &lf); // Be sure to check the return value of GetObject The code is trivial but the function took me forever to find.
Vista Does Not Virtualize Creation Of Shell Links
Win32 vista win32
Published: 2007-05-24
Vista Does Not Virtualize Creation Of Shell Links
Windows Vista developers beware: Vista does not perform file virtualization on the creation of shell links. Consider the following code: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 // Creates a shell link (a.k.a. shortcut) located at swzLinkFile that points to // szTargetFile with a description of szDescription. Read more...
Debugging Crashes in Windows Applications: The Null Pointer Dereference
Win32 c debugging win32
Published: 2007-04-25
Debugging Crashes in Windows Applications: The Null Pointer Dereference
Windows C++ developers remain all too familiar with the standard Windows crash dialog. This post is an attempt to teach developers how to understand the data the crash dialog reports to diagnose difficult issues. A basic understanding of assembly language is assumed; for more background on these topics please read Matt Pietrek’s “Under The Hood” articles in the Microsoft Systems Journal February 1998 and June 1998 issues. To begin with, let’s write an application that crashes with a null pointer dereference: Read more...
Win32 Shell Lightweight Utility API (shlwapi.dll)
Win32 win32
Published: 2007-02-01
Win32 Shell Lightweight Utility API (shlwapi.dll)
The Win32 shell lightweight utility API (shlwapi.dll) is a cornucopia of useful functions. It appears to be Microsoft’s “dumping ground” for functions without a better home. (I believe Microsoft internal DLL ownership also played a part.) Had I known about shlwapi years ago, it would have saved me considerable programming effort. Particularly useful are SHCreateStreamOnFile, the path family of functions (e.g. PathCombine), and the registry family of functions (e.g. SHRegGetPath). Read more...
Beware File Open/Save Dialogs: They May Change The Current Directory
Win32 c mfc win32
Published: 2005-09-08
Beware File Open/Save Dialogs: They May Change The Current Directory
On some Windows operating systems (primarily Windows 95, 98, and ME), GetOpenFileName() and GetSaveFileName() (and wrappers of these functions such as MFC’s CFileDialog) will permanently change the process’s current working directory unless the OFN_NOCHANGEDIR option is specified. As you can imagine, this can easily break your application if you ever rely on the current working directory being set to a particular value (such as if you open files using relative paths). Read more...