您的位置:首页 > 大数据 > 人工智能

Win32程序入口函数

2016-11-27 09:38 288 查看
每一个Win32程序都有一个入口函数,一般来说入口函数的名字是WinMain

在大多数的Win32程序中,WinMain函数要为应用程序完成以下几个步骤:

      1.注册窗口类

      2.创建主窗口

      3.创建消息循环

1.注册窗口类

      每个窗口必须有一个窗口类。窗口类定义了一个窗口的属性,例如样式,图标,光标,菜单名称和窗口过程名称。

      第一步是用类信息填充一个WNDCLASS结构。然后把WNDCLASS结构传递给RegisterClass函数。示例程序创建窗口类GenericAppClass的过程如下:

    wc.lpszClassName="GenericAppClass";

    wc.lpfnWndProc=MainWndProc;

    wc.style=CS_OWNDC | CS_VREDRAW | CS_HREDRAW;

    wc.hInstance=hInstance;

    wc.hCursor=LoadIcon(NULL,IDI_APPLICATION);

    wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);

    wc.lpszMenuName="GenericAPPMenu";

    wc.cbClsExtra=0;

    wc.cbWndExtra=0;
    RegisterClass(&wc);
 
2.创建主窗口

      你可以通过调用CreatWindow函数来创建窗口,示例程序创建窗口
4000
的过程如下:
      hWnd = CreateWindow( "GenericAppClass",

                                              "Generic Application",

                                              WS_OVERLAPPEDWINDOW|WS_HSCROLL|WS_VSCROLL,

                                              0,

                                              0,

                                              CW_USEDEFAULT,

                                              CW_USEDEFAULT,

                                              NULL,

                                              NULL,

                                              hInstance,

                                              NULL

                                             );
       第一个参数是之前注册过的类的名字。剩下的参数指定了其它窗口属性。调用这个函数可以创建一个窗口,但是你只有在这之后调用ShowWindow这个函数,系统才会显示之前创建的窗口。示例程序显示窗口过程如下:

    ShowWindow(hWnd,nCmdShow);

  

3.创建消息循环

      一旦主窗口被创建和显示,WinMain函数可以执行它的主任务,即从示例程序消息队列中读取消息,然后把消息分配给适合的窗口处理。

      系统不会直接把输入传递给应用程序。它会把用户通过鼠标和键盘的输入的消息同系统消息,其它应用程序消息一起,放到消息队列中。示例程序必须从消息队列中获取这些输入消息,然后分配给可以处理这些消息的窗口处理过程。

     示例程序使用的消息循环如下:
    while( GetMessage( &msg, NULL, 0, 0 ) ){
          TranslateMessage( &msg );

          DispatchMessage( &msg );

          

          }
 
    GetMessage函数可以从消息队列中获取消息。DispatchMessage函数可以把消息分配给合适的窗口处理过程。TranslateMessage函数可以把虚拟键码(virtual-key)翻译成字符消息。
原文地址:http://blog.csdn.net/jian_chi/article/details/7933787
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  win32 WinMain