1.1第一个实例程序

1.1.1 start.exe

话不多说,先上代码:

//头文件
#include <windows.h>//连接时使用User32.lib
#pragram comment <lib,User32.lib>//windwos应用程序示例
int  WinMain(
_In_        HINSTANCE   hInstance,
_In_opt_    HINSTANCE   hPrevInstance,
_In_        LPSTR       lpCmdLine,
_In_        int         nCmdShow)
{//调用API函数Massage BoxMessageBox(NULL,TEXT("开始学习Windows内核编程"),TEXT("我是标题"), MB_OK);return 0;
}

编译运行一下,如下图:

这里出现了一个问题,鄙人用的是Visual Studio 2022的版本,
所以按照书本的方式输入代码会出现一个警告

这里百度了一下,解决方式就是再WinMain里的参数加上:
In:输入参数
Out:输出参数
In_opt:可选的输入参数
具体原因,就我目前水平,解释不了,所以略过

1.1.2 Windows API

API = Application Program Interface
意思就是应用程序接口
是一系列函数、宏、数据类型、数据结构的集合
应用程序可以使用这些操作系统提供的接口来完成应用程序需要的功能

1.1.3程序入口函数

WinMain 函数是程序入口点, 相当于 C 语言的 main 函数, 其定义如下:

int WinMain(
HINSTANCE hlnstance,
HINSTANCE hPrevlnstancef
LPSTR lpCmdLinef
int nCmdShow);

□ hInstance 表示应用程序本次运行的实例句柄
□ hPrevInstance 应用程序之前运行的实例句柄,始终未NULL
□ lpCmdLine 运行时的参数。在cmd中运行。
□ nCmdShow 表示 应用程序窗口(如果有)的显示状态

1.1.4start.cpp 代码分析

#include <windows.h>

windows.h是Windows应用程序开发中常用的头文件,包含了很多的数据类型,机构,API结构函数,并且包含了很多的头文件。

#pragram comment <lib,User32.lib>

这行代码指明将源文件编译生成目标文件(.obj) 后, 将目标文件链接成可执行文件的过程中需要使用到 User32.lib, 因为 User32.lib 中包含 MessageBox 的链接信息。 如果在链接程序时,调用链接器的参数中指明了链接时需要使用到 User32.lib, 这一句程序代码可以省略。

MessageBox:

{int MessageBox(
HWND        hWnd,
LPCTSTR     IpText,
LPCTSTR     lpCaption,
DINT        uType
}

□ hWnd 是消息框所属的窗口的句柄, 可以设置为 NULL.
□ IpText 是字符串,表示消息框所显示的消息。
□ IpCaption 是字符串, 表示消息框的标题。
□ uType 是消息框的类型,按钮 “MB_OK ”, 意思是消息框包含一个确定” 按钮。

第一章 windows应用程序开发入门相关推荐

  1. C++ WINDOWS API 第1章 Windows 应用程序开发入门

    目录 1.1       第一个实例程序.. 1 1.1.1       start.exe. 1 1.1.2       Windows API 2 1.1.3       程序入口函数.. 2 1 ...

  2. 精通Windows API(一)Windows应用程序开发入门

    Windows应用程序开发入门 示例 //头文件 #include <Windows.h>//链接时使用User32.lib #pragma comment(lib,"User3 ...

  3. 第一章 Web应用程序开发基础

    一.HTTP协议工作机制 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议.它是一种主流B/S架构中应用的通信 ...

  4. 《微信小程序开发入门精要》——第2章,第2.8节带边距的水平等间隔排列

    本节书摘来自异步社区<微信小程序开发入门精要>一书中的第2章,第2.8节带边距的水平等间隔排列,作者 李宁,更多章节内容可以访问云栖社区"异步社区"公众号查看 2.8 ...

  5. java程序开发个人笔记_Java程序开发入门笔记

    Java程序开发入门笔记 如果你是这一个错误的话:错误:编码GBK的不可映射字符 这是因为我们编写的代码一般都是utf-8的格式而控制台用的不是utf-8格式所以就会出现中文输出的错误.这个时候我们可 ...

  6. java队名,《JavaWeb程序开发入门》课后练习(含答案)

    <<JavaWeb程序开发入门>课后练习(含答案)>由会员分享,可在线阅读,更多相关<<JavaWeb程序开发入门>课后练习(含答案)(10页珍藏版)> ...

  7. 第一章 Windows 2000对调试技术的支持

    第一章  Windows 2000对调试技术的支持 翻译:Kendiv 更新: Friday, January 14, 2005 内核调试器的命令 尽管调试器的命令已经注意了易记性,但有时总是难以回忆 ...

  8. OPhone程序开发入门之音乐播放器

    OPhone程序开发入门之音乐播放器 OPhone平台提供了完整的多媒体解决方案.为开发者提供了统一的,简单易用的开发接口.本文首先介绍了OPhone平台的多媒体框架,然后详细介绍了 在OPhone平 ...

  9. 《微信小程序开发入门精要》——导读

    本节书摘来自异步社区<微信小程序开发入门精要>一书中的导读,作者 李宁,更多章节内容可以访问云栖社区"异步社区"公众号查看 目 录 第1章 微信小程序入门 第1章第1节 ...

最新文章

  1. python yield理解_对Python中Yield的理解
  2. |洛谷|分治|P2799 国王的魔镜
  3. 释疑の函数POPUP_TO_CONFIRM
  4. 第二十二篇:Spring简单定时任务
  5. 【转】mip-semi-fixed 走走又停停
  6. go tcp客户端自动重连_使用 Go 语言创建 WebSocket 服务
  7. Jmeter-JDBC Request
  8. 微软亚研院 | 智能信息检索综述
  9. HTTP状态代码列表
  10. Java011-多线程
  11. IIS 如何用同一IP解析不同域名到同一服务器
  12. 给Ionic写一个cordova(PhoneGap)插件
  13. pythonturtle库填充_Python turtle库学习笔记
  14. Live2D 博客页面添加板娘
  15. 软件开发常用英语词汇
  16. D - Frodo and pillows CodeForces - 760B
  17. EAN校验码的计算方法
  18. 2020美容师(初级)模拟考试及美容师(初级)复审模拟考试
  19. 熟悉mysql数据库设计和性能优化_MySQL性能优化学习笔记-(1)数据库设计
  20. 2022版使用云服务器搭建公网k8s容器集群

热门文章

  1. 网络安全——漏洞扫描工具(AWVS的使用)
  2. 宾利新飞驰 奢华难掩狂野
  3. Linux 模拟触摸滑动以及按下
  4. 智慧(灯杆)路灯的商业盈利模式有哪些?
  5. 许朝军:啪啪如何解决用户的“寂寞”
  6. Mybatis 和 Mybatis Plus 的区别 2020.09.07
  7. 20.2.22排位赛H
  8. 局域网下ping不通另一台电脑
  9. Linux学习第九课、磁盘容量配额、RAID磁盘冗余阵列
  10. 基于Java健身房管理系统设计实现(源码+lw+部署文档+讲解等)