1,P208  CClientDC dc(this);  说明dc是对象,但是下面::GetTextMetrices(dc,&tm);中的第一个参数应该是HDC类型,怎么会用dc对象呢?
2,p200实例程序中有::SetTimer函数,为什么没有::KillTimer函数啊?
3,p201 afx_msg表示什么意思?不写可不可以?
4,p203   ::DrawText函数可不可以换成TextOut函数?
十分感谢!!!

解决方案 »

  1.   

    1 CDC有 operator HDC( ) const;这个成员,会给你转化相应类型的
    3 一个空的宏,就是占位符号,现在没用,将来可能有用
    4 要是仅仅输出的话,没啥区别,但明显DrawText功能更强大一些.
      

  2.   

    1.dc本来就是对象,CClientDC从CDC派生,CDC的第一个成员变量就是m_hDC,所以::GetTextMetrices(dc,&tm);中的dc引用的就是这个m_hDC这是HDC类型
    2.没看过这本书,看下面怎么说
    3.afx_msg表示一个函数是消息处理函数,定义如下:
    #define afx_msg
    它可以不写,定义它只是说明函数是消息处理函数,让人看起来一目了然,也可能以后的版本中会用到
    4.两个函数功能上有点区别TextOut能在指定的位置输出,DrawText能在一个区域内输出并指明对齐方式
      

  3.   

    3.一个空的宏,就是占位符号,现在没用,将来可能有用 
    4.DrawText和TextOut明显不一样啊
    第一个是在一个矩形内输出,如果字符过多,矩形小的话,只能输出矩形大小的那一部分字符
    第若个是从起始点输出,完全输出到屏幕上
    DrawText可以用于卡拉OK那种字幕的移动!
      

  4.   

    2、如果定时器需要持续执行,可以不执行KillTimer,线程关闭时会自动清理定时器。其它:1楼都说了。
      

  5.   

    先不要看完那个 王艳平的 它涉及到MFC
    最好先看Windows程序设计第5版 petoze