《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程序相关推荐

  1. Flutter学习笔记 —— 完成一个简单的新闻展示页

    Flutter学习笔记 -- 完成一个简单的新闻展示页 前言 思路分析 案例代码 结束语 上图 前言 刚学Flutter不久,今天我们来看看如何使用 Container & ListView实 ...

  2. golang游戏开发学习笔记-开发一个简单的2D游戏(基础篇)

    此文写在golang游戏开发学习笔记-创建一个能自由探索的3D世界之后,感兴趣可以先去那篇文章了解一些基础知识,在这篇文章里我们要创建一个简单的2D游戏场景以及配套的人物,并实现人物运动和碰撞检测功能 ...

  3. 寒江独钓Windows内核安全编程__一个简单的Windows串口过滤驱动程序的开发

    在Windows系统上与安全软件相关的驱动开发过程中,"过滤(filter)"是极其重要的一个概念.过滤是在不影响上层和下层接口的情况下,在Windows系统内核中加入新的层,从而 ...

  4. Windows程序设计学习笔记——线程(二)同步

    一.同步问题概述 如果多个线程同时对同一个变量(内存区域)进行读写,就会由于线程切换(cpu时间片分配)导致结果与预期不相符,如两个线程A和B同时执行变量自增运算,由于A从内存取数据到cpu后线程切换 ...

  5. uni-app学习笔记-实现一个简单统计图(三)

    根据原型需要,先来写一个统计图,其实和vue实现一个统计图的方法是一样的.axios请求Echarts折线图 https://www.jianshu.com/p/9f872bee0e6a 1:在HBu ...

  6. MFC Windows程序设计学习笔记--文件和串行化

    文件IO主要为了 支持文档的存储和加载. 多数MFC程序用CArchive对象实现磁盘文档的存储和加载. 1.CFile: m_hFile 保存着与CFile相关联的文件的句柄. m_strFileN ...

  7. OpenCascade学习笔记-创建一个简单的OpenCascade单文档

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Open ...

  8. 学习笔记:latex.一个简单的个人实验报告模板及部分语法说明

    首先建立一个  my_report.cls  的配置文件.(以后可能会随着使用进行一些修改和补充) \ProvidesClass{my_report}%------------------------ ...

  9. C语言程序设计学习笔记:P1-程序设计与C语言

    本系列博客用于记录学习浙江大学翁恺老师的C语言程序设计,系列笔记链接如下: C语言程序设计学习笔记:P1-程序设计与C语言 C语言程序设计学习笔记:P2-计算 C语言程序设计学习笔记:P3-判断 C语 ...

最新文章

  1. 闭包block多种应用方式
  2. excel中日期转成java_用Java程序将日期转换为序列号,就像在Excel中一样
  3. arcgis 快速制图插件_51GIS学院|ArcGIS空间数据分析系列课程的27个视频
  4. 数字录音系统服务器,Internet呼叫中心坐席全程录音系统录音模块
  5. 极大似然估计的朴素理解
  6. PHP核心技术笔记(2):面向对象的设计原则
  7. kubernetes英语怎么读_陷阱英语单词怎么读?
  8. 一个富翁试图与陌生人做一笔生意用python_实验报告1 - 图文 -
  9. c语言逻辑运算符编程,C语言之逻辑运算符详解
  10. shell编程入门步步高(七、流程控制)
  11. Python清理微信被好友删除的人
  12. idea粘贴代码为什么都在一行_【学园】今天程序员的每一行代码都是未来高达身上的一颗螺丝...
  13. linux的特殊符号与正则表达式
  14. 条件随机场、CBOW、word2vect、skip-gram、负采样、分层softmax(1)
  15. 马士兵Python基础版2020教程P98-P134 PPT笔记+课堂代码
  16. 计算机教室电气设计规范,车库电气设计规范.docx
  17. docker初学记录--运行应用程序
  18. 网络上的计算机病毒怎么办,电脑中病毒了怎么办
  19. 秋雨,在迷乱的思绪中飞扬
  20. homeassistant

热门文章

  1. jquery 设置css样式
  2. hadoop上的pageRank算法
  3. PowerDesigner生成数据库
  4. C#线程间操作无效: 从不是创建控件 XX 的线程访问它
  5. 惰性求值 php,详细介绍C#函数式编程的示例代码
  6. python类的成员函数_python特殊成员函数
  7. mysql所有班级名称和人数_mysql数据库优化课程---12、mysql嵌套和链接查询(查询user表中存在的所有班级的信息?)...
  8. python redis连接池获取后关闭_python通过连接池连接redis,操作redis队列
  9. mysql sql语句编码_SQL语句实用例子 MySQL编码设置
  10. plsql 为空显示 0 的函数_记住这三个检测函数,彻底清除公式当中的0值