c语言winmain函数 c语言window函数

C语言中 main 是什么意思?

main不是关键字,你可以定义一个变量int main;而不会出错,\r\nmain函数是控制台程序的默认入口函数,win32app程序的入口函数是WinMain \r\nmain()称之为主函数,既可以是无参函数,也可以是有参的函数。main()函数的带参的形式: \r\nmain(argc,argv) \r\nint argc,char *argv[]; \r\n{ ..... } \r\n//int main(int argc, char *argv[]) { }\r\n不带参 main() { } \r\nmain()函数可以调用其他有参或无参函数。调用有参函数时,参数在调用时传递。 \r\n\r\n一个完整的C语言程序,是由一个main()函数和若干个其它函数结合而成的,或仅由一个main()函数构成。\r\n从main()函数开始执行当主函数执行完毕时,亦即程序执行完毕。\r\n习惯上,将主函数main()放在最前头。

为彝良等地区用户提供了全套网页设计制作服务,及彝良网站建设行业解决方案。主营业务为成都网站建设、成都网站制作、彝良网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

关于VC++的Winmain函数(WINAPI是什么?)

WinMain()函数等价于控制台程序中的main()函数。

该函数是执行开始的地方,也是为程序其余部分执行基本初始化工作的地方。

为了允许Windows传递数据,WinMain()函数有4个形参和一个int类型的返回值,其原型如下:

int WINAPI WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow

);

在返回类型说明符int的后面,有一个函数说明符WINAPI。WINAPI是一个Windows定义的宏,将使系统以特定于Windows

API函数的某种特殊方式处理函数名和实参。这种方式与C++通常处理函数的方式不同。具体的细节是不重要的——这只不过是Windows所要求的方式而

已,因此只需要将WINAPI宏名称放在由Windows调用的函数名前面即可。

如果确实想要了解调用约定,就查看随Visual

C++提供的文档,文档中有对调用约定的描述。WINAPI定义为__stdcall,将此修饰符置于函数名之前表明使用的是标准Windows调用约

定。这要求参数以相反的顺序被推入栈,被调用函数结束时清除栈。本章稍后将看到的CALLBACK修饰符也定义为__stdcall,因此与WINAPI

是等价的。标准C++调用约定由__cdecl修饰符指定。

Windows传递给WinMain()函数的4个参数包含着重要的数据:

hInstance属于HINSTANCE类型,是指向某个实例的句柄——

这里的实例是正在运行的程序。句柄是标识某种对象(这里是应用程序的实例)的整数值。句柄的实际整数值是多少并不重要。在任何给定时刻都可能有好几个程序

在Windows下执行,这就使相同应用程序可能有若干副本同时在活动,而这种情形需要识别出来。因此,hInstance句柄标识某个特定的副本。如果

启动某个程序的多个副本,则每个副本都有自己独特的hInstance值。正如我们很快就将看到的那样,句柄还用来标识各种其他事物。

hPrevInstance是从16位版本的Windows操作系统继承下来的,我们可以放心地对它置之不理。在当前版本的Windows中,该参数始终为空。

lpCmdLine是指向某个字符串的指针,该字符串包含启动程序的命令行字符。该指针允许挑出可能在命令行中出现的任何参数值。LPSTR类型是

另一种Windows类型,用来指定32位(long)的字符串指针,或者当以64位模式编译时,则用来指定64位的字符串指针。WinMain()的另

一个版本接收LPWSTR,用于使用Unicode。

nCmdShow决定着被创建窗口的外观。窗口可以正常显示,也可以最小化显示;例如,程序的快捷方式可能指定该程序在启动时应该最小化显示。该参

数可以是一组固定值之一,这些值是由像SW_SHOWNORMAL和SW_SHOWMINNOACTIVE这样的一些符号常量定义的。此类定义窗口显示方

式的常量还有9个,它们都以SW_开始。通常不需要检查nCmdShow的值,而是直接将其传递给负责显示应用程序窗口的Windows API函数。

程序中的WinMain()函数需要做以下4件事情:

告诉Windows该程序需要的窗口种类

创建程序窗口

初始化程序窗口

检索属于该程序的Windows消息

关于VC++的Winmain函数(WINAPI是什么?)

其实那是程序进入点:

正如在C程序中的进入点是函数main一样,Windows程序的进入点是WinMain,总是像这样出现:

int

WINAPI

WinMain

(

HINSTANCE

hInstance,HINSTANCE

hPrevInstance,

LPSTR

szCmdLine,int

iCmdShow)

它在WINBASE.H中声明如下:

int

WINAPI

WinMain(

HINSTANCE

hInstance,

HINSTANCE

hPrevInstance,

LPSTR

lpCmdLine,

int

nShowCmd

);

WinMain函数声明为返回一个int值。WINAPI标识符在WINDEF.H定义,语句如下:

#define

WINAPI

__stdcall

该语句指定了一个呼叫约定,包括如何生产机械码以在堆栈中放置函数呼叫的参数。许多Windows函数呼叫声明为WINAPI。

WinMain的第一个参数被称作「执行实体句柄」。在Windows程序设计中,句柄仅是一个应用程序用来识别某些东西的数字。在这种情况下,该句柄唯一地标识该程序,还需要它在其它Windows函数呼叫中作为参数。在Windows的早期版本中,当同时运行同一程序多次时,您便创建了该程序的「多个执行实体(multiple

instances)」。同一应用程序的所有执行实体共享程序和只读的内存(通常是例如菜单和对话框模板的资源)。程序通过检查hPrevInstance参数就能够确定自身的其它执行实体是否正在运行。然后它可以略过一些繁杂的工作并从前面的执行实体将某些数据移到自己的数据区域。

在32位Windows版本中,该概念已被抛弃。传给WinMain的第二个参数总是NULL(定义为0)。

WinMain的第三个参数是用于执行程序的命令列。某些Windows应用程序利用它在程序启动时将文件加载内存。WinMain的第四个参数指出程序最初显示的方式,可以是正常的或者是最大化地充满整个画面,或者是最小化显示在工作列中


文章名称:c语言winmain函数 c语言window函数
网页URL:http://ybzwz.com/article/ddippdj.html