精華區beta CompBook 關於我們 聯絡資訊
作者: jjhou (jjhou) 標題: 【<深入淺出 MFC> 2/e 各刷變化(bug fix)】 時間: Tue Dec 1 23:41:50 1998 <深入淺出 MFC> 2/e 各刷變化(bug fix) 侯俊傑 jjhou@ccca.nctu.edu.tw 1998.12.01 第一次發表於 清大.楓橋驛站(140.114.87.5).電腦書訊版(CompBook) ---------------------------------------------------- 過去,我對每本作品(著譯皆然),總是把握新刷機會,修正 書中的錯誤或不妥。偶也在不影響頁次的情況下,做一些內容 補充。但是並未系統化地將這些動作記錄下來。 由於經驗的累積,逐漸知道,應該有系統地將書籍的各刷變化 提供給讀者。 在我陸續建立起晚近各書的 bug fix 資料後,有不少讀者關心 <深入淺出 MFC> 2/e 的各刷變化。於是我回頭整理下來,供 讀者參考。 各位手上若為 x 刷,即應注意下列 x+1 刷之變化。 如何判別手上書籍的刷次?很簡單,翻到書後版權頁,上面即註 明有 x 版 x 刷。不過,本書 <深入淺出 MFC> 雖在封面上明白 顯示為二版,版權頁上卻總是寫初版。這是不正確的寫法。 以下為各刷變化情況。 ★ <深入淺出 MFC> 二版1刷 ★ 出版日期:1997/05 1997/05 出版 ★ <深入淺出 MFC> 二版2刷 ★ 出版日期:1997/07 本刷修改1刷錯別字(均為易判讀之錯別字),並從 p541 開始 對 chap08 做補充(約半頁),提示如何為 Scribble 程式加上 新形狀,因此 p541~p545 版面略有更動。 當時我對 bug fix 的作法,都是在出版公司通知新刷時,根據個人 平時記錄於書中的心得直接在 Word 檔上修改,直接交給出版公司。 由於未思及有系統地為讀者提供 bug fix 資訊,因此未將修正 頁次完整記錄下來,很抱歉。幸均為易判讀之錯別字。 ★ <深入淺出 MFC> 二版3刷 ★ 出版日期:1997/10 本刷與2刷內容完全相同,唯因出版過程誤失,漏植一張 MFC 全圖。 以下為發現後之當時公告(永遠有效)。 --------------------------------------------------↓ 各位親愛的讀友: 我是侯俊傑。最近我開一個課程,使用 <深入淺出 MFC> 2/e 做教材(ISBN 957-22-2518-9,松崗書號 2101629), 發現本書第3刷缺少一張跨頁彩色圖,此圖應該出現在封面 之後的扉頁位置。第1刷和第2刷均有此圖,獨第3刷漏失。 此圖為 MFC 4.21 類別階層架構圖,至為重要。我個人 以及松崗公司對此裝訂上的疏失深感懊惱與抱歉。松崗 公司為維護讀者權益,決定加印此圖,免費提供給 <深入淺出 MFC> 二版3刷之讀者索取。索取方式有三: 1. 親至松崗各門市索取。 2. 進入松崗網頁(www.unalis.com.tw),對客服部留言函索。 3. FAX 至松崗客服部(02-23257956)函索此圖。 以 2 或 3 方式索取者,請留下您的郵寄地址;松崗將以 郵遞方式將圖寄給您。您不必出示任何讀者證明。 因此疏失而為您帶來麻煩,我與松崗公司謹至最大的歉意。 雖然疏失的發現時機有點遲,我們願盡最大的努力彌補。 同時也請您將此訊息告訴您的朋友。 我與松崗公司均力圖在每一次可能的機會中,修正內容誤失, 力求讓此書更美好。我要藉此機會感謝每一位寫信給我, 向我指正或給我意見的讀友。 -- 侯俊傑 1998.05.16 --------------------------------------------------↑ ★ <深入淺出 MFC> 二版4刷 ★ 出版日期:1998/?? 本刷內容與3刷完全相同。 ★ <深入淺出 MFC> 二版五刷 ★ 出版日期:1998/09 ●新增 讀者來函 i~xvi(16 頁) 二版五刷感言 4 頁 ●模糊不清 重製(括號內為 chap1 之前的頁次): (11,17,18,19,26,28,33,) 1,35,53,68,81,83,84,101,119,121,137,147,149, 269,293,296,641,771,779,784,795,834,839 ●內容誤失: 頁次:p9 方塊內 L5 原文: eneric.res : generic.rc generic.h 更正:generic.res : generic.rc generic.h 頁次:p16 圖1-3 左下 L-6 原文:CW_USEDEFAULT, // hieght 更正:CW_USEDEFAULT, // height 頁次:p27 中段程式碼 L2 片段 原文:if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) 更正:if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) { 頁次:p58 原文:#0029 更正:#0029 { 頁次:p65 中段程式碼片段 原文:void setComm(float comm); 更正:void setCommission(float comm); 頁次:p74 L8 原文:蹤合 更正:綜合 頁次:p75 第四段 L3 原文:CYaohoo 更正:CYahoo 頁次:p94 L-1 原文:vitual 更正:virtual 頁次:p132 Frame3 範例程式 之前 L-3 原文:Cobject 更正:CObject 頁次:p262 L2 原文:預設市關閉狀態 更正:預設是關閉狀態 頁次:p408 程式碼片段 L5 原文:filename = dlg.GetPathNMe(); 更正:filename = opendlg.GetPathNMe(); 頁次:p408 程式碼片段下第一行 原文:opdndlg 構建式的第一個參數被指定為... 更正:opendlg 構建式的第一個參數被指定為... 頁次:p493 L-4 尾 原文:Document/View/Frmae 更正:Document/View/Frame 頁次:p535 L-6 原文:包容 DYNCREATION 巨集,並且在... 更正:包容 DYNCREATE 巨集,並且在... 頁次:p541 L-1,L-3 原文:圖10-a 更正:圖8-10a ★ 以下為將於 <深入淺出 MFC> 二版6刷 更新之部份: 頁次:p72 L12 原文:pEmp = &aBoss; 更正:pEmp = &aManager; 在 <深入淺出 MFC> 1e, chap3 中,我曾以 frame7 和 frame8 兩個 小小的 DOS-like 程式模擬 MFC 的 msggage mapping 和 command routing。 這程式在當時(VC4.0)是好的,但當我撰寫 <深入淺出 MFC> 2e,這兩個程式 過不了 VC4.2 和 VC5.0 的關口。當時一下子找不出 bug,自忖 這只是份模擬,設計架構和模擬結果也都交待很清楚了,只是移植有問題, 所以也就打了個馬虎眼,附上的仍是 VC40 所編譯的可執行檔。 原因出在,我為了模擬 msggage mapping 和 command routing,必須設計 一些 structures 以及 macros,那是從 MFC source afxmsg_.h 中學來的。 而為了與 MFC 儘量雷同,我連我自己的檔名也叫做 afxmsg_.h。 壞就壞在應該 #include "afxmsg_.h" 的地方,我卻寫成 #include <afxmsg_.h>。 這在 VC40(MFC40)陰錯陽差地 OK 了,但在 VC42+(MFC42)中則因為 MFC 內部 的變化,導至 error msg C2102 : & on constant. 所以,只要把書中的 #include <afxmsg_.h> 改為 #include "afxmsg_.h", 就 OK 了。但又陰錯陽差地,由於我曾在程式中使用 CN_COMMAND 這個常數, 卻忘記在自己的 afxmsg_.h 中定義,所以一者是加上這個定義(隨便定義為 什麼常數都行,因為其實它在程式中沒有實際用途),一者是把程式中 的 CN_COMMAND 全改為 0。 整理如下: 頁次:p173 中段 原文: { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)id, AfxSig_vv, ... } 更正: { WM_COMMAND, 0, (WORD)id, (WORD)id, AfxSig_vv, ... } 頁次:p175 上圖 更正: 圖中的 CN_COMMAND 改為 0 頁次:p182 原文: #0061 #include <afxmsg_.h> 更正: #0061 #include "afxmsg_.h" 頁次:p185 AFXMSG_.h 原文: #0008 { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)id, AfxSig_vv, ... } 更正: #0008 { WM_COMMAND, 0, (WORD)id, (WORD)id, AfxSig_vv, ... } 頁次:p204 原文: #0070 #include <afxmsg_.h> 更正: #0070 #include "afxmsg_.h" 頁次:p208 AFXMSG_.h 原文: #0008 { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)id, AfxSig_vv, ... } 更正: #0008 { WM_COMMAND, 0, (WORD)id, (WORD)id, AfxSig_vv, ... } --- the end  -- ※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ Mail: jjhou@ccca.nctu.edu.tw ※ X-Info: Mave -> ric.bbs@ptt.csie.ntu.edu.tw ※ X-Sign: 0ROABMFPHDXvpDsa/bkA (99/07/09 7:05:51 )