回 帖 发 新 帖 刷新版面

主题:[Win32 SDK菜鸟详细教程]Win32 sdk学习感悟(1.2)

Win32 sdk学习感悟(1.2)   WinMain函数
    上次我从窗口怎样在系统里运行进行了大致说明,现在我们就用代码来具体实现一下。在实现的同时,我在说到每个函数时你要想到上次我们讲的一个窗口要显示需要的那些步骤。这些函数哪些是实现这些步骤的。
    
    首先我们来说入口函数 WinMain ,这个函数的原型是这样的:
int  WINAPI  WinMain (    HINSTANCEE   hlnstance,
HINSTANCE    hPrelnstance,
LPSTR         lpCmdLine,
Int             nCmdShow);

这个函数和其他函数一样,带四个参数。与其它函数步一样的是这个函数是系统自动调用的,而不是我们来调用它的。你现在可以结合我们上次说的这个函数,知道它为什么叫入口函数了吧。既然这个函数是系统自己调用,所以参数我们也可以步管它了,系统也会自动传递实参进来。 完全可以这么理解,这个函数在一般情况下就是固定的,不需要我们去为它再写东写西的了。

Int    这个是函数返回值的类型。(不用我多说了吧)

HINSTANCEE    这个你一定感到很陌生,怎么这么长,还是全部大写的,英语不好的你是不是就头昏了?
不用怕,其实它就和int 一样,理解成 是个数据类型吧,一个HINSTANCEE数据类型。它只是再win32里面才被这样定义的。hlnstance,就拥有了HINSTANCEE这个数据的类型。
就好比int totle 。hlnstance,用来做什么呢?totle可以用来保存整型数据诶。假如一层楼道里有4道门,每个门都有一个编号,也就是房间号,有了这些编号对应着各个门,我们以后写信等就方便多了。同样我们系统下面同时打开word程序,qq程序,那么就有word程序的窗口,qq的窗口,我们要在这些窗口之间相互切换等,系统怎么来分辨了,那么就是用窗口的句柄来识别了,窗口句柄你就把它理解为一个窗口的编号,好比上面说的门的编号一样。那么程序窗口在运行的时候系统就会自己给它产生一个与其他窗口不同的编号,(所以说这个函数的参数是系统自己传实参进来的嘛)这些编号就需要用hlnstance来保存。,所以hlnstance就是保存窗口句柄(编号)的。

HINSTANCE    hPrelnstance         这个我们现在应该说可以不需要了解了,它和第一个参数一样,只是它是在16位程序下才用的到。我们现在的程序都是32位的,所以我们不用,所以它总是NULL。

LPSTR         lpCmdLine            这个我们一般也不用,这个参数就好比是main()函数里的那个命令参数一样。为程序传递命令的。我只给你介绍一下LPSTR这个类型。LP 是LongPoint的缩写,翻译过来就是长指针的意思,STR这个是String 字符串的缩写。联起来就是一个指向字符串的指针类型。要是我们不传递命令,那么lpCmdLine参数就是指向一个空字符串的指针。这里你只要理解LPSTR这个类型是怎么一回事就行了。

Int            nCmdShow             这个nCmdShow参数的类型就不说了,这里主要说说这个参数作用是什么。从这个参数字面上就可以看出nCmdShow是指我们设计的窗口要如何显示。比如最大化,还是最小化等。具体这个参数有哪些值可以取你想详细了解那么可以查一下这个函数的详细说明。

好了,先说到这里了,对于初学的你应该理解这个函数了。因为我都感觉自己讲这个函数是最最详细的了。
其实这个函数很简单,其他教程都是一笔带过,我也不知道对于这个函数我说的是不是有很多废话,但是
我害怕想学win32 编程的朋友看不懂,免得一开始就一头雾水,所以很详细介绍。谢谢你的阅读,请多多
指教。先就说到这里吧,我们一点一点的来学习它,进度虽慢,但是要相信效果。
                             (请继续关注)


回复列表 (共9个回复)

沙发

这篇也不错!

板凳

怎么不继续写了?期待!

3 楼

没有下文了?

4 楼

期待中。。。。。。

5 楼

太累了

6 楼

恩,不错!应该继续....

7 楼

看不懂!

8 楼

看不懂,上次讲的在什么地方,可否告知。

9 楼

写得挺好啊,怎么不继续了呢,我也是初学者,期待。。。!

我来回复

您尚未登录,请登录后再回复。点此登录或注册