作者: 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 )