Windows程序设计学习笔记(1):一个简单的windows程序
《Windows程序设计》(第五版)(美Charles Petzold著)
1 #include<windows.h> 2 3 LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); 4 5 int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdline,int iCmdShow) 6 //第一个参数是实例句柄,在Windows程序中,句柄就是一个数值,程序里用它来标志某些东西 7 //第三个参数是用来运行程序的命令行 8 //第四个参数用来指明程序最初如何显示:正常显示、最大化到全屏、最小化到任务栏 9 { 10 static TCHAR szAppName[]=TEXT("HelloWin"); 11 HWND hwnd; //窗口句柄 12 MSG msg; //消息结构 13 WNDCLASS wndclass; //窗口类结构 14 15 wndclass.style=CS_HREDRAW | CS_VREDRAW; 16 wndclass.lpfnWndProc = WndProc; //将窗口类的过程设为WndProc函数 17 wndclass.cbClsExtra=0; 18 wndclass.cbWndExtra=0; //这两行用于在类结构和Windows内部维护的窗口结构中预留额外的空间 19 wndclass.hInstance=hInstance; //应用程序的实例句柄 20 wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION); //为所有基于该窗口类的窗口设定一个图标 21 wndclass.hCursor=LoadCursor(NULL,IDC_ARROW); //载入一个预定义的鼠标指针 22 wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); //为这类窗口的客户区指定背景颜色 23 wndclass.lpszMenuName=NULL; //指定窗口类的菜单 24 wndclass.lpszClassName=szAppName; //为窗口类指定一个名称 25 26 if(!RegisterClass(&wndclass)) //RegisterClass(&wndclass)窗口类注册 27 { 28 MessageBox(NULL,TEXT("This program requares Windows NT"),szAppName,MB_ICONERROR); 29 return 0; 30 } 31 32 hwnd=CreateWindow(szAppName, //创建窗口类 窗口类名称 33 TEXT("The Hello Program"), //窗口标题 34 WS_OVERLAPPEDWINDOW, //风格 35 CW_USEDEFAULT, //初始x坐标 36 CW_USEDEFAULT, //初始y坐标 37 CW_USEDEFAULT, //初始x方向尺寸 38 CW_USEDEFAULT, //初始y方向尺寸 39 NULL, //父窗口句柄 40 NULL, //窗口菜单句柄 41 hInstance, //程序实例句柄 42 NULL); //创建参数 43 ShowWindow(hwnd,iCmdShow); //显示窗口 44 UpdateWindow(hwnd); //重绘窗口 45 while(GetMessage(&msg,NULL,0,0))//消息循环,GetMessage函数用于从消息队列中对消息进行检索,此调用将一个指向名称为msg的MSG结构变量的指针传给Windows 46 { 47 Translate(&msg); //将msg结构返还给Windows以进行某些键盘消息的转换 48 DispatchMessage(&msg); //将msg结构再次返回给Windows,接下来,Windows会将这条消息发送给合适的窗口过程来处理 49 } 50 return msg.wParam; 51 } 52 53 LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam) 54 { 55 HDC hdc; //设备环境句柄 56 PAINTSTRUCT ps; //绘制结构 57 RECT rect; //矩形结构 58 59 switch(message) //消息处理 60 { 61 case WM_VREATE: 62 return 0; 63 case WM_PAINT: //当窗口客户区的部分或全部无效且必须更新时应用程序将收到此通知 64 hdc=BeginPaint(hwnd,&ps); //几乎总是从BeginPaint开始 65 GetClientRect(hwnd,&rect); 66 DrawText(hdc,TEXT("Hello,Windows 10!"),-1,&rect,DT_SINGLELINE | DT_CENTER | DT_VCENTER); //绘制文本 67 EndPaint(hwnd,&ps); 68 case WM_DESTROY: //销毁窗口 69 PostQuitMessage(0); 70 return 0; 71 } 72 return DefWindowProc(hwnd,message,wParam,lParam); //对所有窗口过程没有处理的消息进行默认处理 73 }
转载于:https://www.cnblogs.com/Toya/p/11193477.html
Windows程序设计学习笔记(1):一个简单的windows程序相关推荐
- Flutter学习笔记 —— 完成一个简单的新闻展示页
Flutter学习笔记 -- 完成一个简单的新闻展示页 前言 思路分析 案例代码 结束语 上图 前言 刚学Flutter不久,今天我们来看看如何使用 Container & ListView实 ...
- golang游戏开发学习笔记-开发一个简单的2D游戏(基础篇)
此文写在golang游戏开发学习笔记-创建一个能自由探索的3D世界之后,感兴趣可以先去那篇文章了解一些基础知识,在这篇文章里我们要创建一个简单的2D游戏场景以及配套的人物,并实现人物运动和碰撞检测功能 ...
- 寒江独钓Windows内核安全编程__一个简单的Windows串口过滤驱动程序的开发
在Windows系统上与安全软件相关的驱动开发过程中,"过滤(filter)"是极其重要的一个概念.过滤是在不影响上层和下层接口的情况下,在Windows系统内核中加入新的层,从而 ...
- Windows程序设计学习笔记——线程(二)同步
一.同步问题概述 如果多个线程同时对同一个变量(内存区域)进行读写,就会由于线程切换(cpu时间片分配)导致结果与预期不相符,如两个线程A和B同时执行变量自增运算,由于A从内存取数据到cpu后线程切换 ...
- uni-app学习笔记-实现一个简单统计图(三)
根据原型需要,先来写一个统计图,其实和vue实现一个统计图的方法是一样的.axios请求Echarts折线图 https://www.jianshu.com/p/9f872bee0e6a 1:在HBu ...
- MFC Windows程序设计学习笔记--文件和串行化
文件IO主要为了 支持文档的存储和加载. 多数MFC程序用CArchive对象实现磁盘文档的存储和加载. 1.CFile: m_hFile 保存着与CFile相关联的文件的句柄. m_strFileN ...
- OpenCascade学习笔记-创建一个简单的OpenCascade单文档
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Open ...
- 学习笔记:latex.一个简单的个人实验报告模板及部分语法说明
首先建立一个 my_report.cls 的配置文件.(以后可能会随着使用进行一些修改和补充) \ProvidesClass{my_report}%------------------------ ...
- C语言程序设计学习笔记:P1-程序设计与C语言
本系列博客用于记录学习浙江大学翁恺老师的C语言程序设计,系列笔记链接如下: C语言程序设计学习笔记:P1-程序设计与C语言 C语言程序设计学习笔记:P2-计算 C语言程序设计学习笔记:P3-判断 C语 ...
最新文章
- 微软算法100题11 求二叉树中两节点之间的最大距离
- 好久没写博客了,改天要把原博客资料整理下,弄个链接什么
- mysql 高可用测试_mysql MHA高可用测试
- Android——用Activity和Service实现简单的音乐播放器
- 基于Win10极简SonarQube C#代码质量分析
- js post方式请求另外一个php,利用JS使用POST方式提交请求的方法(结合代码详细解答)...
- 本地读取服务器Xml文件及本地读本地的xml
- php岗位专业技能,PHP简历专业技能怎么写
- Scp远程批量执行命令
- 滤波器m矩阵 awr 不一样_云南tte滤波器_灿勤科技
- main(argc,argv[])
- 信安小白,一篇博文讲明白暴力破解和SQL注入
- Android 自定义和可下载字体
- 前端开发 基础知识 dpi 、 dip 、分辨率、屏幕尺寸、px、density 关系以及换算
- 迅雷9窗口右侧的内置浏览器如何去掉。
- 特征提取网络之Darknet
- 双机热备(双主模式)——实现数据库的高可用
- 用python写跑酷游戏脚本,用Python写一个天天酷跑
- 五线谱基础教程视频乐理基础
- 「Section 4」定点数的乘除法实现
热门文章
- 收缩临时库 shrink tempdb
- Calling Oracle stored procedures from Microsoft.NET
- redis hash删除所有key_一文详解Redis面试中常见的5种数据结构及对应使用场景
- vs配置编译c语言,为 VSCode 配置 C 语言编译环境
- mysql存储过程导出_Mysql导出存储过程
- 樊登高效休息法读书心得_《读懂一本书:樊登读书法 》作者:樊登
- java项目怎样强制删除手机缓存_Myeclipse清理项目缓存的几大方法
- oracle hot patch david,Oracle EBS使用adpatch工具打patch过程(hotpatch mode)
- php一个数组赋值给对象,php数组与对象相互转换方法
- 关闭计算机的com命令,远程重启、关闭电脑命令、远程重启计算机命令。