windows编程真是很难学,那些复杂的函数和参数,让我们习惯了高级编程之后感到很不适应。就连一个简单的Hello World都让我困惑了3、4天。下面是我对编写Hello World的一些总结。

1、第一个拦路虎就是这个函数消息映射表struct decodeUINT { // Structure associates
UINT Code;
LRESULT (*Fxn)(HWND, UINT, WPARAM, LPARAM);
};
const struct decodeUINT MainMessages[] = {

    WM_PAINT, DoPaintMain,//定义的结构体,使得windows的消息和用户自定义的函数相关联
    WM_DESTROY,DoDestroyMain,
};
这个decodeUINT结构体的使用,使得消息和函数相对应。有了这个消息函数映射表,使得消息能够直接和处理函数很好的关联在一起。

2、第二点是这个系统的入口函数

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,LPWSTR lpCmdLine, int nCmdShow)
在这个入口函数WinMain只进行三件事,1、初始化一个窗口。2、监听处理消息。(将消息分发到不同的窗口中进行处理)3、销毁实例。

3、第三点是WinMain的参数
    WPARAM:32位(双字节)的消息参数。值的格式和意思取决于主要的事件消息类型。在不同的情况下,WPARAM变元可能传输一个坐标点对,使用低字值标识次要的消息类型,提供某些其他的数据类型,或被完全忽略。在很多情况下,WPARAM值将被看成两个独立的字值,分别具有不
同的功能。

     LPARAM:32位(长整型)的消息参数。这个参数的值和意思取决于主事件消息类型。在不同的情况下,LPARAM变元可能提供一个字符串或记录结构的指针,分解为一组字、字节或标志值,或者往往完全没有用。系统的操作都是针对句柄的。由参数LPARAM可以得到此窗口的句柄。通过创建函数,能够得到创建对象的句柄。

4、第四是消息中的回调函数的处理

     当窗口得到消息时会自动调用MainWinProc函数,每个窗口都会有一个MainWinProc函数,来处理有Windows分发来的自己的消息。

 

5、第五是函数中的宏

宏定义使得参数变得见名知意。例如我们定义两个变量

int x,int y;我们并不知道他代表什么,

但是如果我们先定义连个宏
                                   #define int height
                                   #define int weight

再定义两个变量
                                   height x;
                                   weight y;

这样我们就能够很清楚的知道这两个变量所代表的意义

 

6、第六是系统中的常量

     开始时各种常量的定义:这样可以节省内存。不变的数据,像关联结构体、窗口句柄。这样程序可以在ROM中执行,而不是装载一个副本到RAM里,节约了宝贵的RAM资源。

 

7、第七是对在WindowsCE平台下编程的理解

    由于WindosCE支持MFC类库的子集,在WindowsCE下的开发,很大一部分是在和MFC打交道,所以在这里就先讲讲我对MFC的理解。
    MFC 是一套程序使用的架构,它规定了各种函数和方法的使用和使用顺序。这套架构,使得我们的操作更底层(可以修改的东西更多),但是同时它的使用方法也是很复杂的。MFC编程中我们要想操作系统变量要想从系统中取得,然后再根据自己的需要定制修改。这很能体现MFC的框架作用==填空
    从宏观上看MFC是一个应用程序框架,再此基础上,通过填空的方式能够,创建Windows下的应用程序。预定义的接口把具体应用程序特有的东西填入这个轮廓。
从微观上看MFC是对Win32的进一步封装,通过预定义宏和更高级的函数,实现了许多事件和消息的处理。

    说道这里,再澄清几个概念:我们的开发工具是.net、开发语言是C++、开发平台是Windows CE(当然对于手机开发,我们主要是应用Windows CE下的Windows Mobile这个平台)、开发框架是精简的MFC和Windows API


 

Posted on 2010-02-21 09:29  我不是牛人  阅读(249)  评论(0编辑  收藏  举报