Windows API程序设计入门(新手的第一个Windows程序)
Windows API程序设计入门
- 一、实验目的
- 二、实验工具
- 三、参考资料
- 四、步骤
- 五、代码分析
- 六、运行效果
- 七、补充
一、实验目的
了解 windows操作系统应用程序开发的基本概念,win32 API函数、消息与事件驱动;
掌握WinMain函数的基本框架,窗口定义、窗口创建、消息循环及窗口过程函数;
二、实验工具
Visual Studio 2015
三、参考资料
我是参考B站的学习视频(小甲鱼)
我们老师推荐的3本参考书,《Windows程序设计》(charle petzold著)、《深入浅出MFC》(侯俊杰著)、《VC++深入讲解》(孙鑫编著)
四、步骤
1.新建win32项目。
打开VS2015,点击新建项目,选择模板Visual C++ Win32项目。附加项选择空项目。
2.编写代码并执行(新手建议多敲几遍代码)。
五、代码分析
#include <windows.h>//回调函数
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);//主函数WinMain,具体参数讲解网上都有
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{static TCHAR szAppName[] = TEXT("MyWindows");HWND hwnd;MSG msg;WNDCLASS wndclass;//wndclass的10个参数,设置窗口类的特征wndclass.style = CS_HREDRAW | CS_VREDRAW;wndclass.lpfnWndProc = WndProc;wndclass.cbClsExtra = 0;wndclass.cbWndExtra = 0;wndclass.hInstance = hInstance;wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);wndclass.lpszMenuName = NULL;wndclass.lpszClassName = szAppName;//注册窗口if (!RegisterClass(&wndclass)){MessageBox(NULL, TEXT("需要windows NT 才能执行"), szAppName, MB_ICONERROR);return 0;}//CreatWindow的11个参数,设置窗口具体特征,使窗口丰富hwnd = CreateWindow(szAppName, TEXT("窗口名字"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);ShowWindow(hwnd,iCmdShow);UpdateWindow(hwnd);//消息循环while (GetMessage(&msg, NULL, 0, 0)){TranslateMessage(&msg);DispatchMessage(&msg);}return msg.wParam;
}
//CALLBACK函数WndProc的定义
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{HDC hdc;PAINTSTRUCT ps;RECT rect;//ShowWindow等函数发出的消息要到这里来执行switch(message){case WM_PAINT:hdc = BeginPaint(hwnd, &ps);GetClientRect(hwnd, &rect);DrawText(hdc, TEXT("Hello 42!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);EndPaint(hwnd, &ps);return 0;case WM_DESTROY:PostQuitMessage(0);return 0;}return DefWindowProc(hwnd,message,wParam,lParam);//操作系统默认方式处理消息//!!!如果缺少这一段,运行时就会产生一个不可关闭的程序,用任务管理器可关闭。(不要问我怎么知道)
}
六、运行效果
七、补充
第一个Windows API程序没有多复杂,要对windows API 的基于窗体、消息循环、事件驱动进行理解。MessageBox函数还有很多的内容格式,MessageBox有很多的样式MB_ICONERROR | MB_OKCANCEL可以选择其它样式,中间用“ | ”隔开。
Windows API程序设计入门(新手的第一个Windows程序)相关推荐
- windows API程序设计入门(简单练习)
windows API程序设计入门(简单练习) 目录 windows API程序设计入门(简单练习) 窗口过程函数 用绘图工具输出输出hello world! 定义窗口主函数 设计窗口类 注册窗口类 ...
- Windows API 程序设计入门
目录 目的: 最初了解Windows API编程,从创建窗口开始,步骤: 具体代码如下: 运行结果 目的: 1.了解Windows操作系统程序开发的基本概念,win32API函数.消息与事件驱动: 2 ...
- Windows程序设计【1】 第一个Windows程序 | 九七的Windows开发
Windows程序设计[1] 第一个Windows程序 一.定义介绍 编写第一个Windows程序,使用VS2019. 二.功能作用 这里的步骤写的非常详细,旨在让大家入门. 三.使用方法 1 ...
- 新手怎么做一个小程序?
小程序的诞生,让各行业从独立出发APP进入微信.小程序有多受欢迎?从有人称之为互联网的下一个风口就可以看出.微信小程序从使用至今仍处于不断发展的环节.很难说小程序是否是下一个风口,但小程序等不需要下载 ...
- 【python教程入门学习】第一个Pygame程序
Pygame 作为一个入门级的游戏开发库,其实并不难学,只要掌握 Python 编程的相关知识就能很轻松地掌握它. Pygame 语法简单.明了,秉持了 Python 语言一贯的风格.同时,它作为一个 ...
- C++ 入门(编写第一个C++程序)
第一章 遇见C++ 欢迎进入C++世界! 1.1 C++介绍 C++ 是在C语言的基础上添加了面向对象和泛型编程的支持,它是21世纪最重要的编程语言之一,C++继承了C语言的高效.简洁.快速和 ...
- Qt入门01 创建第一个Qt程序
一.安装Qt及Qt Creator 1.Qt下载地址 常用的工具也在这些地方可以找到,当然也可以直接官网下载,考入到网速因素,国内的镜像源网站还是要更快一些.Qt 5.15 之后已经不提供离线安装包了 ...
- Windows API一日一练(1)第一个应用程序
要跟计算机进行交互,就需要计算机显示信息给人看到,或者发出声音给人听到,然后人看到或听到相应的信息后,再输入其它信息给计算机,这样就可以让计算机进行数据处理,把结果显示给我们.现在就来编写一个最简单的 ...
- Windows驱动学习第一步,第一个Windows驱动
前段时间工作需要做了一段防外挂的工作,虽说是防外挂,但是只能从ring3来做,ring0的是一点也不知道,公司倒是请来了一个做Windows驱动的,但是他对ring3也是不懂,我俩就配合做一些事情,但 ...
最新文章
- iphone开发 ---- GPS
- 聚类 | 超详细的性能度量和相似度方法总结
- MySQL分组函数使用的其他注意事项
- SLAM: SLAM基本流程—VSLAM扫盲之旅
- java ee的小程序_用微服务和容器替换旧版Java EE应用程序服务器
- javascript高级程序设计---js事件思维导图
- enum mysql byte_九、臭名昭著的 MySQL ENUM 类型 ( 上 )
- HDFS详解(架构设计、副本放置策略、读写流程、进程、常用命令等)
- 27岁到来之际,我在大厂实现了年薪40W+的小目标
- 百度百科做起来也不难
- 前端简单h5播放器的制作
- 动态规划经典题目_「动态规划经典算法」本周总结(二)
- aceadmin1.4框架treeview多选改造
- CCAI 2019 | 俞扬:人工智能的决定权依然在人
- 文本情感分类python_文本情感分类(一):传统模型
- excel常用操作收集
- 轻松获得oblog2.52的WebShell
- 【源码】二进制非洲秃鹫优化算法
- 可视计算机应用李桂清,华南理工大学研究生导师介绍---李桂清
- 基于PyTorch的生成对抗网络入门(3)——利用PyTorch搭建生成对抗网络(GAN)生成彩色图像超详解
热门文章
- [附源码]Java计算机毕业设计SSM电脑配件仓储后台管理系统
- golang 学习 - chan以及chan的一下用例
- mybatis方法参数是list的批量插入
- 百度Sugar BI 数据可视化里的标签页组件如何实现
- 第八题:输出 9*9 乘法口诀表
- 奇迹网站系统IGC奇迹mu S18网站可视化装备模板
- Python - io 模块
- Linux主分区文件系统,Linux_Linux磁盘和文件系统管理,1、 分区MBR(Master Boot Recor - phpStudy...
- XXXXXXX\android-sdk\\tools\zipalign.exe”无效
- Windows8 最新泄漏版试用体验与下载