• 第一课——从main到WinMain


    一、Visual C++6.0

    • 由微软公司推出的基于Windows系统的可视化集成开发环境(IDE)
    • 微软公司为其开发了功能强大的MFC(Microsoft Foundation Class,微软基础类库)
    • 开发Windows应用程序的最佳选择
    • 利用类将与用户界面设计有关的Windows API函数封装起来,通过MFC类库的方式提供给开发人员,大大提高了程序代码的可重用性
    • 提供了功能强大的应用程序生成向导(AppWizard),能帮用户自动生成一个应用程序框架

    二、Windows编程基础

    基于Windows的两种编程方式:

    (1)使用Windows的API函数,通常用C/C++语言按相应的程序框架进行编程。这些程序框架往往就程序应用提供相应的文档、范例和软件开发工具包

    (2)使用“封装”方式,将SDK中的绝大多数函数、数据等按C++“类”的形式进行封装,并提供相应的应用程序框架和编程操作

    重点是:

    (1)程序入口

    (2)窗口、资源等的创建和使用

    (3)键盘、鼠标等所产生的事件或其他消息的接收和处理

    三、第一个Windows程序

    #include <windows.h>
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int nCmdShow)
    {
            MessageBox(NULL, TEXT("Hello, World!"), TEXT("Hello"), 0);
            return 0;
    }

    注:上面的C源程序是基于Win32应用程序的

    1. Windows.h头文件

    (1)定义了Windows的所有数据类型、函数调用、数据结构和符号常量

    (2)它们是Windows应用程序文档中的一个重要部分

    2. Windows程序的入口函数

    (1)C/C++程序的入口函数是main,而Windows程序则是WinMain

    (2)函数原型:int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd);

    (3)WINAPI是一个“调用约定”宏,等价于__stdcall,其功能是规定参数从右向左压入堆栈、函数自身修改堆栈、机器码中的函数名前面自动加下划线、函数后面接@符号和参数的字节数。即则是一个函数调用约定“协议”,当然还有其他的协议,如MFC方式采用__cdecl调用约定(其功能就和__stdcall不同)

    (4)第一个和第二个参数都是HINSTANCE(实例句柄)类型。HINSTANCE中,H代表Handle,是“句柄”的意思。句柄是一个应用程序用来识别某些资源、状态、模块等数字。由于句柄唯一标识着对应的资源、状态、模块等,因而使用句柄就是使(调)用相应的资源、状态、模块。

    (5)参数lpCmdLine用来指定程序的命令行,类型为LPSTR,但在C源程序中将其改为PSTR。这两种数据类型都合法且都是指向字符串的指针类型。其中STR是“STRING,字符串”的含义,是指以结尾的字符串,LP前缀表示“长指针”,在Win32中它与“P”前缀表示的“指针”含义相同

    (6)参数nShowCmd用来指定程序最初显示的方式,它可以是正常、最大化或最小化来显示程序窗口

    3. MessageBox函数

    (1)一个Win32API函数,用来弹出一个对话框窗口,显示短信息

    (2)原型:int MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);

    (3)参数hWnd用来指定父窗口句柄(即对话框所在的窗口句柄)

    (4)第二个和第三个参数用来指定显示的消息内容和对话框窗口的标题

    (5)参数uType用来指定在对话框中显示的预定义的按钮和图标标识,它们是在winuser.h定义的一组以MB_开始的常数组合

    (6)调用的实参中还涉及TEXT宏,它是用来对UNICODE编码的字符串的支持,此外还有_TXET和_T宏等,在Visual C++中,它们的作用是等同的

    补充

    【Win32】

    Visual C++ 6.0仅支持32位的Windows程序开发,由于其Windows平台就称为Win32,故这里的Windows编程可直接理解为Win32编程。

  • 相关阅读:
    php之基础深入---类与对象篇
    php之cURL惯用
    php之header的不同用法
    java的图形界面初学惯用
    java 的http请求方式:HttpURLConnection和HttpClient
    数据挖掘-推荐算法入门
    性能测试平台效率优化的一次经验(python版)
    AndroidTest工程的自定义gradle task
    Robotium源码解读-native控件/webview元素的获取和操作
    工作中一些环境问题解决记录
  • 原文地址:https://www.cnblogs.com/xzxl/p/7927361.html
Copyright © 2020-2023  润新知