这里所指的windows程序是传统的win32应用程序,使用windows API编写.首先,先来看一个简单的例子:

#include<Windows.h>
int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nShowCmd)
{MessageBox(NULL, L"Visual C++", L"窗口消息", 0);return 0;
}

这是一个最简单的windows程序,显示一个消息窗口

仔细看看,大家会发现这里有一个似曾相识的函数WinMain(),是不是和初学C++时的入口函数main()很相似呢。大家不难猜出它的作用,WinMain函数是wndows程序的入口函数,是所有windows程序的核心。

WinMain前的WINAPI是一个宏定义,查看定义:

可以发现WINAPI其实就是__stdcall,__stdcall表示的是一种调用的约定,使编译器以windows兼容的方式来产生机器指令。此外,我们在图中可以看到CALLBACK,APIPRIVATE等具有和WINAPI相同的宏定义,因此,可以使用它们代替WINAPI。

WinMain函数的参数中都用一个_In字段,表示的是需要我们自行输入参数,可以理解为宏。

第一个参数hInstance,h表示的是handle即句柄,句柄是个什么东西呢?大家把它看作是程序的唯一标识就好了。就像我们有时候去超市,当我们存东西到储物柜时,储物柜会给我们一个号码,用来区分不同用户的存储信息。Instance是实例的意思,合起来就是实例句柄,hInstance就是一个数值,当一个程序在windows下运行时,它对应唯一一个运行实例。只有运行中的实例才能分配到实例句柄,一个程序可以运行多个实例,每个运行实例都可以分配到句柄。

第二个参数hPreInstance也是实例句柄,但表示的是当前实例的上一个实例的实例句柄。win32环境下,该参数总为null。不起任何作用,但书写代码时还是要写出来。

第三个参数LpCmdLine,它是LPSTR类型,LP表示指针,STR明显示字符串,LPSTR就是字符串指针,cmdLine表示命令行 LpCmdLine表示的一个以空终止的字符串,指定传递给程序的命令行参数实际上是命令行字符串的起始地址。

第四个参数nShowCmd指的是窗口应该如何显示,是最大化,最小化还是隐藏等。

接下来简单介绍一下MessageBox函数,首先还是查看定义:

MessageBox函数有两种形式,这里只讲第一种。
In_opt :opt为option即可选,In_opt即为可选输入参数,当我们不想填任何信息时可以填NULL,

第一个参数hWnd表示父窗口的句柄,即消息框所属窗口,当没有父窗口时设为NULL.

第二个参数LPCSTR类型的lpText,表示一个以空结尾的字符串,消息框要显示的消息。实际上是字符串的起始地址。

第三个参数LPCSTR类型lpCaption,表示一个以空结尾的字符串,消息框的标题。实际上是字符串的起始地址。

第四个参数UINT类型的uType,表示是窗口的样式和显示图标的类型。

windows程序设计一 最简单的windows程序相关推荐

  1. Windows socket之最简单的socket程序

    Windows socket之最简单的socket程序 原文:Windows socket之最简单的socket程序 最简单的服务器的socket程序流程如下(面向连接的TCP连接 ): 1. WSA ...

  2. Windows程序设计:一个完整的Windows程序

    C语言Windows编程的主要工作:进行窗体设计.消息循环控制和窗口过程的处理. 图解:Windows编程模型图解 #include <windows.h> #include <tc ...

  3. windows程序设计(6):基本画图

    windows程序画图,大体上有3种方法: (1)你告诉系统点的坐标和颜色,系统通过SetPixel来画.类似的,通过GetPixel来获取某一点像素值. (2)使用MoveToEx.LineTo来划 ...

  4. MFC Windows 程序设计[315]之磁盘文件列举器(附源码)

    MFC Windows 程序设计[315]之磁盘文件列举器 程序之美 前言 主体 运行效果 核心代码 逻辑分析 结束语 程序之美 前言 MFC是微软公司提供的一个类库(class libraries) ...

  5. MFC Windows 程序设计[233]之CPP十六进制编辑器(附源码)

    MFC Windows 程序设计[233]之CPP十六进制编辑器 程序之美 前言 主体 运行效果 核心代码 逻辑分析 结束语 程序之美 前言 MFC是微软公司提供的一个类库(class librari ...

  6. MFC Windows 程序设计[九十一]之取色盘(附源码)

    MFC Windows 程序设计[九十一]之取色盘 程序之美 前言 主体 运行效果 核心代码 逻辑分析 结束语 程序之美 前言 MFC是微软公司提供的一个类库(class libraries),以C+ ...

  7. MFC Windows 程序设计[263]之音量控制器例程(附源码)

    MFC Windows 程序设计[263]之音量控制器例程 程序之美 前言 主体 运行效果 核心代码 逻辑分析 结束语 程序之美 前言 MFC是微软公司提供的一个类库(class libraries) ...

  8. MFC Windows 程序设计(三)-锦上添花(附源码)

    MFC Windows 程序设计(三)-锦上添花(附源码) 程序之美 所话说,爱美之心人皆有之,不管是对于男人,女人,还是小孩,都有对美的一种向往,美好的事物,给人一种动力,一种希望,一种期盼,一种留 ...

  9. Windows程序设计学习笔记(1):一个简单的windows程序

    <Windows程序设计>(第五版)(美Charles Petzold著) 1 #include<windows.h> 2 3 LRESULT CALLBACK WndProc ...

  10. createprocess重启程序_C++_VC程序设计中CreateProcess用法注意事项,对于windows程序设计来说,启动 - phpStudy...

    VC程序设计中CreateProcess用法注意事项 对于windows程序设计来说,启动一个进程有三种方法:WinExec,ShellExecute,CreateProcess.这里仅对Create ...

最新文章

  1. Android 通过创建一个类来传递对象
  2. 视频用户行为及推荐系统评价KPI-部分
  3. CVE-2010-0249 极光
  4. 【Flutter】开发之功能篇(七)
  5. 网络虚拟化有几种实现方式_停车场管理系统的防砸车功能有几种方式?如何实现?...
  6. 双缝干涉实验,在双缝之后加一个反射,会怎样
  7. 后期强蒙版大师破解版
  8. 【力扣 912】十大排序算法
  9. 【数据产品案例】美团外卖O2O的用户画像实践
  10. Ubuntu HDMI连接后没有声音解决办法
  11. SMS短信PDU编码详细解析
  12. java二面_快手Java面试题分享,一二面(面经面试题附部分答案)
  13. 大一上學期學習生活情況總結
  14. Windows 10:开机显示C:\WINDOWS\system32\config\systemprofile\Desktop不可用 的解决方法
  15. SQL Server 学习 SQL 语句 ( 二 )
  16. JAVA-------封装+Private关键字+权限修饰符+This关键字
  17. 开源自定义表单提交系统源码 支持自定义字段功能强大
  18. 隐式类型转换——C语言中的整型提升
  19. 【牛客网面试必刷TOP101】链表篇(一)
  20. 计算机等级考试中南,关于2019年上半年全国计算机等级考试报名的通知

热门文章

  1. http代码_ssssssss 0.0.1 发布,无需代码的 HTTP 接口快速开发框架
  2. 搜狗浏览器智慧版_4月浏览器份额榜单出炉:Edge登上第二、Chrome第一无人撼动...
  3. java string to bit_Java Convert String to Binary
  4. hql 占位符_hibernate中如何使用占位符拼接HQL
  5. Introduction to Computer Networking学习笔记(三):IP与子网掩码
  6. groovy+mysql数据库_groovy - groovy连接数据库
  7. Lambda表达式只是一颗语法糖?
  8. JSCore浅析及其在iOS上的使用
  9. 必做作业3:原型化系统---乘车app
  10. sqlserver常用语法