【Window程序设计:第五版】翻译勘误 转载

出处 http://www.cnblogs.com/volcanol/tag/Windows%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1/

Exp1:用词不精确

书中正文14页

“1.3.4 程序入口

     正像main是C程序的入口一样,windows程序的入口是WinMain,它总是以下面的面目出现:”

 这里用语就不是很精确, “面目”这个词,用在这里不妥当,我认为改为“形式” 较为妥当。

 

Exp2: 用语太口语话

正文第15页

         “多半儿你已经察觉到我在HelloMsg.c中稍稍做了写改动”

这里“多半儿” 太口语话, 建议这样的文章翻译的时候尽量不要口语话, 改为“也许”或者“或许”估计比较合适。

 

Exp3: 技术性错误

正文第17页, 原文如下

    “MessageBox函数也可能返回ISYES、ISNO、IDCANCEL、IDABORT、IDRETRY或者IDIGNORE”

我费了半天的力气,怎么样也没有在VS 2008环境中找到预定义的 ISYES、ISNO宏。

这里应该为IDYES和IDNO; 英文原版的书就是IDYES、IDNO,原版的书我也有。


    下面说一说第三章中存在的不足:

Exp1: 技术性错误

正文   40页

      在40也中的程序实例中用了两个消息:MWM_PAINT   和 MWM_DESTROY ; 很显然这不对,因为根本就没有以

MWM_ prefix开头的消息。

      如果译者非要自定义宏,那我也没办法,谁叫译者们时间多呢? 但是那不就完全与原著不符吗...............

 

Exp2:技术性错误

正文  44页

  “这两个标示符都被定义为__stdcall,它指定了在windows和应用程序之间函数调用的特定次序”。

       很显然这里是一个认识上的错误, 因为__stdcall 根本不指定windows和应用程序之间函数的调用的特定次序; windows和应用

程序之间的调用关系根本不是由 __stdcall 指定的; __stdcall 指定的不过是参数传递时的压栈顺序, 就像PASCAL中的pascal

调用约定,或者cdecl调用约定一样。

 

Exp3: 技术性错误

正文 44页

 “WinMain中使用前两种数据结构定义了名称为msg和wndclass的两个结构。”

      这是我第二次在清华大学出版社出版的书籍中看到类似的描述了,将数据类型描述为变量,或者将变量描述为数据类型; 我想只要

学过C的人都知道, 结构(或者结构体)是数据类型, 而结构体变量怎么能成为数据类型呢? 看来清华大学的教授们对这个地方的教学和

我们通常的认识出入很大,大神就是大神,认识就是不一样。

 

Exp4:遣词造句的啰嗦

正文 44页     

“在本章结束前,你还将会碰到HICON(图标的句柄)、HCURSOR(鼠标指针的句柄)、HBRUSH(图形画刷的句柄)”

     这里有凑字数的嫌疑, 直接图标句柄、光标句柄、画刷句柄,多简洁明了;明显没有到达“信、雅、达”的高度; 信

是有了,完全直译,根本没有意译; 

      同时这里我还有一点迷惑, 鼠标指针的句柄 ? 怎么这么别扭,鼠标有指针吗?按照一般的理解就是:鼠标有一个指针,

然后这个指针还有一个句柄;  完全不知怎么搞的。

 

Exp5: 遣词造句的啰嗦

正文  48页 

 “而在从保存在磁盘中的应用程序的可执行文件中加载自定义图标时,该参数必须设为hInstance”

    这话读起来真是别扭。改为下面我看不会这么别扭:

   “而从保存在磁盘中的应用程序可执行文件加载自定义图标时,该参数必须赋值为hInstance”。

1、将“设为”改为 “赋值为”明确, “设为”,我还以为数学证明呢,设x为某某某。

2、将 “在” 和不必要的“的”字删除;读起来明显顺畅。

 

Exp6:技术性错误

正文   51页

 “需要说明的是,事实上还有另外两个用于创建窗口的函数,即CreateWindowA和CreateWindowW,”

     从上面这句话来看,这意思,译者是把 CreateWindow 当成一个函数了;这个我真的很无语,随便一个了解

Widnows程序编程的人都知道 CreateWindow 只是一个宏, 我想宏和函数的区别不至于小到无法分辨吧。

 

Exp7:技术性错误

正文  51页  

#define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED     | \
                             WS_CAPTION        | \
                             WS_SYSMENU        | \
                             WS_THICKFRAME     | \
                             WS_MINIMIZEBOX    | \
                             WS_MAXIMIZEBOX)  | \

    这我就不知道了,C语言的续行符号,怎么就敢这么大胆的加呢? 这程序要是能编译通过,估计译者要对VS环境的头文件

进行重构了。 

 

Exp8:技术性错误

正文  57 页

“GetClientRect函数将依据窗口尺寸来对这4个字段进行设置”

     我们知道这一章的实例中,程序的窗口是有  WS_CAPTION 风格/样式的; 怎么到了这里客户区大小和窗口大小就一样了呢?

而且我还发现,译者对结构体的成员变量,译作了字段, 让我感觉很别扭, 我还以为关系数据库呢; 怎么就不意译呢?

 

Exp1:  技术性错误

正文  61页   (这是第三章的内容)

    “这就意味着当一个程序正完成一项非常耗时的工作时,windows允许用户将控制权切换给其他程序”

  首先,不说windows运行机制的理解问题,先说一下作为汉语语法的不妥之处: “正完成一项非常耗时的工作时”; 既然工作已经完成,怎么能正完成?

其次从这个语境来看,译者想表述的意思是工作正在进行当中,而没有完成工作,真是“前后自相矛盾一至于此”。

      再说:  允许用户将控制权切换给其他程序。 我们知道整个系统控制权的切换通常不是由用户来控制,用户只是发出切换的请求,而控制权的切换

是由windows作为系统控制者来完成的。

     因此我个人认为这一句改为下面的可能更合理:

    “这就意味着当一个程序正进行一项非常耗时的工作时,windows允许将控制权由一个程序切换给其他程序”

 

Exp2:描述不精确

正文  74页

 “在窗口中,每一行文本显示在上一行文本下方cyChar个像素处”

  这句话的意思,我怎么读怎么感觉会无缘无故的多出一个空行来?

 

Exp3:技术性错误

正文  82页

“下面的公式可以计算出客户区可以显示的整行的字符数

                   cyClient / cyChar

 ”

   这里就不多说了:  cyClient表示的客户区的y轴方向的大小, 而 cyChar 表示的是每个字符在 y 轴方向的高度; 怎么经过这一计算就

得出了 x 方向的字符个数。

 

Exp4:技术性错误

正文   86页

"程序可以处理SB_THUMBTRACK或者SB_THUMBPOSITION消息,但很少会同时处理两者“  

  这让我很疑惑,明明在85页,这两个宏被译者称作消息的通知码;这里怎么就直接晋升为消息了呢? 高手可能很容易理解,这里是指通知码为

这两个宏的消息,但是我可是花了整整15分钟来分辨这两个东西。

 

Exp5:技术性错误

正文  86页

”但是,如果滚动条是应用程序窗口的一部分,就不会收到这些通知码“

  这句话,更直接的让我崩溃,如果滚动条是窗口的一部分,就不会收到这些通知码(指SB_TOP、SB_BOTTOM、SB_LEFT、 SB_RIGHT)??

这是微软错了,还是我错了,亦或者是如来错了??

       我说,要说能不能把话说明白: 当滚动条作为子窗口控件成为应用程序窗口一部分的时候,消息的附加参数将会收到这些通知码。

       我说你们能不能不学莎士比亚的名言 ”but no but“,行不行?  ” 但是“?? 那哪么多的但是?


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值