《Windows程序设计》(第五版)勘误表

时间:2022-08-10 19:48:24

《Windows程序设计》一书,虽然被奉为Windows程序设计领域的经典,但在制作上却很不及格。我只看了上册(什么时候看的已经记不清了,大概是2002年的时候),现在把我认为有错误的地方罗列如下:

第61页倒数第二行,第一个DestroyWindow应改为DefWindowProc
第76页图中的tmExternalLeading应改为tmInternalLeading
第78页第一个文字行中的nLength应改为iLength
第89页图中第二个“单击此处上滚一页或一整屏内容”中的“上”应改为“下”
第115页倒数第二段最后一句话前面的“屏幕”和后面的“打印机”不相符
第122页第五段第二行“每英寸大概就为13象素”中的每英寸应改为10磅,第三行也一样
第123页图中的tmExternalLeading应改为tmInternalLeading
第243页第三段末尾的DestroyWindow应改为DestroyCaret
第260页中间的“那么双击鼠标右键时”中的右应改为“左”
第327页中FindWindowSize函数的代码中,第三行的CreateIC应改为CreateDC
第329页,同样的,CreateIC应改为CreateDC
第332页,倒数第三行中的“常用控制”应改为“特殊控制”
第475页中间的SendMessage(GetDlgItem(hDlg,id),id,wParam,lParam);中的第二个id应
       改为iMsg
第534页,有很多错误:
    1:第三行中的“不喜欢”应改为“喜欢”
    2:从第14行起开始令人费解,第15行中的两个GMEM_FIXED应改为GMEM_MOVEABLE
       而第17行的GMEM_MOVEABLE应改为GMEM_FIXED,否则你的头是大的
第541页,Windows大师也会犯错误啊!在对IDM_EDIT_PASTE的消息处理函数中,对内存锁
    定后开始执行粘贴操作,后来居然没有解锁!
    实际的代码应改为:
    case IDM_EDIT_PASTE:
               OpenClipboard (hwnd) ;

               if (hGlobal = GetClipboardData (CF_TCHAR))
               {
                    pGlobal = GlobalLock (hGlobal) ;

                    if (pText)
                    {
                         free (pText) ;
                         pText = NULL ;
                    }
                    pText = malloc (GlobalSize (hGlobal)) ;
                    lstrcpy (pText, pGlobal) ;
                    InvalidateRect (hwnd, NULL, TRUE) ;
                    GlobalUnlock(hGlobal);   //加上这一行
               }
               CloseClipboard () ;
               return 0 ;