zoukankan      html  css  js  c++  java
  • VC++技术内幕(一)

    第一天:

    WINDOWS应用程序一定要有WinMain函数,该函数用来完成一些特殊的任务,象创建程序的主窗口,主窗口用来处理消息的代码。MFC将WinMain隐藏在框架中,不象写SDK程序时可以很容易的找到它。

     

    WINDOWS采用的消息处理机制也交给了程序框架,我们不必担心如何使这些消息和代码联系起来。并且WINDOWS定义好了一些消息,当窗口被创建时系统就会发送WM_CREATE消息,当点击鼠标左键时便系统会发送WM_LBUTTONDOWN消息,当用户按下键盘时系统会发送WM_CHAR消息,当用户关闭窗口时系统会发送WM_CLOSE消息,当用户进行菜单项选择或单击按钮时系统会发送WM_COMMAND消息,什么都不做系统还会发送WM_TIMER消息。

    :WM_TIMER:定时器消息,当你用SetTimer来设置一个定时器时,假设你设置的时间间隔是1秒,那么你就会每隔1秒收到一个WM_TIMER消息。你对这个消息加以处理,就可以实现每隔1秒运行某段代码了。

    WINDOWS提供通用的图形设备接口(GUI),我们通过调用(GDI)函数和硬件打交道,不必理会设备环境,WINDOWS会自动将设备环境结构映射到相应的物理设备,这应该就是设备无关性吧。

    注:图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。

    GDI是图形设备接口的英文缩写(Graphics Device Interface).

     

    动态连接库(DLL)应该是代码重用的典型例子(不知道可不可这样说),把一些模块、自己新编的类单独调试并编译成DLL,及增加代码的可读性也提高了程序模块的灵活性。

     

    用Developer Studio建立项目Developer Studio会创建很多中间文件,这些文件还是有必要说一下的。

    APS //支持ResourceView

    BSC //浏览器信息文件

    CLW //支持ClassWizard

    DSP //项目文件,不能删除和用文本编辑器编辑

    DSW //工作空间文件,不能删除和用文本编辑器编辑

    MAK //外部的创建文件

    NCB //支持ClassView

    OPT //保存工作空间的配置

    PLG //建立日志文件

    这些文件都有一定的作用,拿CLW来说,如果你有一个新类,需要加到ClassWizard中,除了将相应的.h 和.cpp加到DSP中还需要重新编译CLW。PLG文件记录着你的项目配置信息。

     

    VC++的源程序浏览器能够使我们从类或函数的角度来了解或编辑程序,而不是直接从文件入手。在看别人的源代码时如果能熟练的使用源代码浏览器将会事倍功半。源程序浏览器主要的查看状态有以下几种:

    Definitions and References——选择任何函数、变量、类型、宏定义可以看到它在项目中的定义,并且在何处和什么地方用到它。

    Call Graph/Caller Graph——对于所选择的函数,给出它的调用与被调用函数的图示。

    Derived Class Graph/Base Class Graph——给出类层次关系的图形表示,可以看到所选择的类的派生类和基类以及成员。

    File Outline——对于所选的文件,列出文件中的类、函数和数据成员,同时还显示它们定义的位置和使用位置。

    可见Source Brower比起Class View来功能多了很多也更加好用,以前我就不知道,因为一般的VC++书没有讲或根本没有注意这块,看到讲菜单、操作界面、编辑器时总是跳过,心想“没吃过猪肉还没见过猪跑?这种东西不用学就会”。可实际上还是应该仔细的看看的。

    ------------------------------------------------------------------------------------------------------------------------------------------------

         刚入门windows编程的时候,只会在vc IDE里拖拖控件,编译运新一下,能弹出个对话框,就以为自己会windows编程了。现在想起来觉得很可笑。参加工作后,接触和使用过开发工具PB,VB,Delphi,VC,慢慢对windows编程有了个大致的了解。由于工作的需要,近期着重于GDI的编程,有点小体会,就此抛砖引玉。

         注意windows的dc是有很多种的。具体可以参照一下microsoft的WTL里的atlgdi.h 文件。它把dc主要分为3种:CPaintDC,CClientDC,CWindowDC etc.其实这些dc都是不同应用环境下的。从本质上讲,是一样的。了解dc是进入gdi领域的关键,gdi是window比较核心的一部分,是window窗口的基础东西。

  • 相关阅读:
    严重: Parse error in application web.xml file at jndi:/localhost/ipws/WEBINF/web.xml java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml
    Failed to install .apk on device 'emulator5554': timeout解决方法
    java.lang.NoClassDefFoundError:org.jsoup.Jsoup
    Conversion to Dalvik format failed: Unable to execute dex:解决方法
    apache Digest: generating secret for digest authentication ...
    Description Resource Path Location Type Project has no default.properties file! Edit the project properties to set one.
    android service随机自启动
    MVC3 安装部署
    EF 4.3 CodeBased 数据迁移演练
    SQL Server 2008开启sa账户
  • 原文地址:https://www.cnblogs.com/lxshanye/p/3088565.html
Copyright © 2011-2022 走看看