Windows API程序设计入门

  • 一、实验目的
  • 二、实验工具
  • 三、参考资料
  • 四、步骤
  • 五、代码分析
  • 六、运行效果
  • 七、补充

一、实验目的

  1. 了解 windows操作系统应用程序开发的基本概念,win32 API函数、消息与事件驱动;

  2. 掌握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程序)相关推荐

  1. windows API程序设计入门(简单练习)

    windows API程序设计入门(简单练习) 目录 windows API程序设计入门(简单练习) 窗口过程函数 用绘图工具输出输出hello world! 定义窗口主函数 设计窗口类 注册窗口类 ...

  2. Windows API 程序设计入门

    目录 目的: 最初了解Windows API编程,从创建窗口开始,步骤: 具体代码如下: 运行结果 目的: 1.了解Windows操作系统程序开发的基本概念,win32API函数.消息与事件驱动: 2 ...

  3. Windows程序设计【1】 第一个Windows程序 | 九七的Windows开发

    Windows程序设计[1] 第一个Windows程序 一.定义介绍   编写第一个Windows程序,使用VS2019. 二.功能作用   这里的步骤写的非常详细,旨在让大家入门. 三.使用方法 1 ...

  4. 新手怎么做一个小程序?

    小程序的诞生,让各行业从独立出发APP进入微信.小程序有多受欢迎?从有人称之为互联网的下一个风口就可以看出.微信小程序从使用至今仍处于不断发展的环节.很难说小程序是否是下一个风口,但小程序等不需要下载 ...

  5. 【python教程入门学习】第一个Pygame程序

    Pygame 作为一个入门级的游戏开发库,其实并不难学,只要掌握 Python 编程的相关知识就能很轻松地掌握它. Pygame 语法简单.明了,秉持了 Python 语言一贯的风格.同时,它作为一个 ...

  6. C++ 入门(编写第一个C++程序)

    第一章    遇见C++ 欢迎进入C++世界! 1.1  C++介绍 C++ 是在C语言的基础上添加了面向对象和泛型编程的支持,它是21世纪最重要的编程语言之一,C++继承了C语言的高效.简洁.快速和 ...

  7. Qt入门01 创建第一个Qt程序

    一.安装Qt及Qt Creator 1.Qt下载地址 常用的工具也在这些地方可以找到,当然也可以直接官网下载,考入到网速因素,国内的镜像源网站还是要更快一些.Qt 5.15 之后已经不提供离线安装包了 ...

  8. Windows API一日一练(1)第一个应用程序

    要跟计算机进行交互,就需要计算机显示信息给人看到,或者发出声音给人听到,然后人看到或听到相应的信息后,再输入其它信息给计算机,这样就可以让计算机进行数据处理,把结果显示给我们.现在就来编写一个最简单的 ...

  9. Windows驱动学习第一步,第一个Windows驱动

    前段时间工作需要做了一段防外挂的工作,虽说是防外挂,但是只能从ring3来做,ring0的是一点也不知道,公司倒是请来了一个做Windows驱动的,但是他对ring3也是不懂,我俩就配合做一些事情,但 ...

最新文章

  1. iphone开发 ---- GPS
  2. 聚类 | 超详细的性能度量和相似度方法总结
  3. MySQL分组函数使用的其他注意事项
  4. SLAM: SLAM基本流程—VSLAM扫盲之旅
  5. java ee的小程序_用微服务和容器替换旧版Java EE应用程序服务器
  6. javascript高级程序设计---js事件思维导图
  7. enum mysql byte_九、臭名昭著的 MySQL ENUM 类型 ( 上 )
  8. HDFS详解(架构设计、副本放置策略、读写流程、进程、常用命令等)
  9. 27岁到来之际,我在大厂实现了年薪40W+的小目标
  10. 百度百科做起来也不难
  11. 前端简单h5播放器的制作
  12. 动态规划经典题目_「动态规划经典算法」本周总结(二)
  13. aceadmin1.4框架treeview多选改造
  14. CCAI 2019 | 俞扬:人工智能的决定权依然在人
  15. 文本情感分类python_文本情感分类(一):传统模型
  16. excel常用操作收集
  17. 轻松获得oblog2.52的WebShell
  18. 【源码】二进制非洲秃鹫优化算法
  19. 可视计算机应用李桂清,华南理工大学研究生导师介绍---李桂清
  20. 基于PyTorch的生成对抗网络入门(3)——利用PyTorch搭建生成对抗网络(GAN)生成彩色图像超详解

热门文章

  1. [附源码]Java计算机毕业设计SSM电脑配件仓储后台管理系统
  2. golang 学习 - chan以及chan的一下用例
  3. mybatis方法参数是list的批量插入
  4. 百度Sugar BI 数据可视化里的标签页组件如何实现
  5. 第八题:输出 9*9 乘法口诀表
  6. 奇迹网站系统IGC奇迹mu S18网站可视化装备模板
  7. Python - io 模块
  8. Linux主分区文件系统,Linux_Linux磁盘和文件系统管理,1、 分区MBR(Master Boot Recor - phpStudy...
  9. XXXXXXX\android-sdk\\tools\zipalign.exe”无效
  10. Windows8 最新泄漏版试用体验与下载