1,windows对程序错误的处理,
int APIENTRY _tWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow)
调试时,在Watch窗口输入“@err,hr”,就可以显示线程的最后错误代码的号码和该错误的描述信息。

VC6.0还带了一个实用小程序,可以用来将错误代码转换为相应的文本描述信息。

书中给出了一个模仿VC6自带的那个Error Lookup实用程序的示例:
#define ESM_POKECODEANDLOOKUP (WM_USER + 100) //用户自定义消息
const TCHAR g_szAppName[] = TEXT("Error Show");

BOOL Dlg_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
这里用到了几个宏定义,下面这个是用来指定消息处理函数的
// The normal HANDLE_MSG macro in WindowsX.h does not work properly for dialog
// boxes because DlgProc returns a BOOL instead of an LRESULT (like
// WndProcs). This chHANDLE_DLGMSG macro corrects the problem:
#define chHANDLE_DLGMSG(hWnd, message, fn) \
case (message): return (SetDlgMsgResult(hWnd, uMsg, \
HANDLE_##message((hWnd), (wParam), (lParam), (fn))))
下面这个是用来为窗口设置大/小图标
// Sets the dialog box icons
inline void chSETDLGICONS(HWND hWnd, int idi)