Yes, if both lpstrFile and lpstrInitialDir are empty, the initial folder is the personal folder. Fill the lpstrInitialDir member to set the initial directory. To get your program's folder, see this...
WindowProcedure is called MANY times, and each time the bmpExercising variable is created and not initialized. So what actually happen is that you load the image with LoadImage, but then the handle...
The NM_CUSTOMDRAW notification is sent whenever (or less) the listview is redrawn. If you read the docs, you'll see that NM_CUSTOMDRAW doesn't ask you to draw anything,...
LRESULT ( CALLBACK* OldListCtrlWndProc )( HWND, UINT, WPARAM, LPARAM );
Although this may be correct, why don't you use WNDPROC as you did with SetWindowLong?
Both DialogBox and CreateDialog are actually macros that calls respectively DialogBoxParam and CreateDialogParam. The additional parameter is passed along with the WM_INITDIALOG message in the lParam...
No, making the member function static wouldn't change anything, since they wouldn't have the this pointer too. And all the functions can be called from static functions, you just...
I don't quite understand what you mean with "message behavior". You can send messages across threads or processes, and since notifications are sent through WM_NOTIFY, this applies to notifications...
Practically speaking, notifications are the "messages" you get through the WM_NOTIFY message. In my experience, notifications are usually sent to the parent window when a child window receives a...