当前位置: 首页 > 编程日记 > 正文

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

相关文章:

【二级java】模拟题知识点总结

算法的复杂度 &#xff1a; &#xff08;一&#xff09;时间复杂度 &#xff1a; 执行算法所需要的计算工作量&#xff0c;与计算机的运行速度和存储空间无关 &#xff08;二&#xff09;空间复杂度 &#xff1a; 算法在运行过程中临时占用的存储空间的大小。 零散知识点 &am…

虚拟化市场成熟

调查称虚拟化市场已经成熟 VMware份额领先 存储在线 11年03月18日 WangFei 导读&#xff1a;据市场研究公司Forrester Research最新研究表明&#xff0c;虚拟服务器技术的应用实际上是从去年开始的&#xff0c;虚拟服务器技术终于完成了测试和研发阶段。 关键词&#xff1a…

python day two,while

一、运算符号 算数运算符&#xff1a; 、-、*、/、//&#xff08;取整除&#xff09;、%&#xff08;去余&#xff09;、** 比较运算符&#xff1a;>、< 、>、<、 赋值运算符&#xff1a;、、-、/、%、** 逻辑预算符&#xff1a;and、or、not 布尔值 成员运算符&am…

【模板】树状数组 2

题目描述 如题&#xff0c;已知一个数列&#xff0c;你需要进行下面两种操作&#xff1a; 1.将某区间每一个数数加上x 2.求出某一个数的值 输入输出格式 输入格式&#xff1a; 第一行包含两个整数N、M&#xff0c;分别表示该数列数字的个数和操作的总个数。 第二行包含N个用空格…

【java】Maven工程引入各种jar包的功能

1、mysql驱动 &#xff1a; 代码实现 &#xff1a; <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>6.0.6</version></dependency> 2、数据库操作工具 &#xff1a; 代码实现…

[转]Android横竖屏切换解决方案

本文转自&#xff1a;http://www.cnblogs.com/domybest/archive/2011/06/30/2094779.html 首先在Mainifest.xml的Activity元素中加入android:configChanges"orientation|keyboardHidden"属性<activity android:name".FileBrowser" android:label"s…

【百度地图API】——国内首款团购网站的地图插件

摘要&#xff1a; 本文介绍了一款应用在团购网站上的地图插件&#xff0c;适用于目前非常流行的团购网站。使用这款地图插件&#xff0c;无需任何编程技术&#xff0c;你就把商家的位置轻松地标注在地图上。 前台地址 http://map.baidu.com/fwmap/upload/r/map/fwmap/tuangou/u…

Wannafly挑战赛14

A.直角三棱锥 枚举推式子 1 #include <bits/stdc.h>2 using namespace std;3 typedef long long LL;4 LL gcd(LL a, LL b){5 return a % b ? gcd(b, a % b) : b;6 }7 int main(){8 int T;9 scanf("%d", &T); 10 while(T--) { 11 …

第八章 泛型程序设计

1.带有【超类型限定 super】的通配符可以向泛型对象写入&#xff0c;带有【子类型限定 extends】的通配符可以从泛型对象读取&#xff0c;反之则不然。转载于:https://www.cnblogs.com/baokang/p/7441122.html

【java】过滤器filter的使用

一、创建filter的实现类 代码实现 &#xff1a; package com.zzxtit.common.filter;import java.io.IOException;import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax…

简单统计分数的程序

//设计一个程序&#xff0c;统计某个班级某门考试成绩中的最高分、最低分和平均分。 //当输入分数为-1时&#xff0c;输入结束 #include<iostream> using namespace std; int main() { int value,total,max,min,noOfInput; total0; //总分 max0; min100; noOfInput0; //人…

SugarCRM ListView查询中加入默认条件

在$_REQUEST[where] $where;$storeQuery->process_views($currentModule);上面加入以下代码,下面的代码指默认为查询本月if($where){ $date_period thismonth; $date_from get_date_from($date_period); $date_to get_date_to($date_period); if(isset($date_from) &…

Vue2.0使用vue-cli脚手架搭建

一&#xff1a;安装node.js Node.js官网&#xff1a;https://nodejs.org/en/download/ 选择相应的版本即可安装 通过node自带的npm包管理工具 二、安装依赖 安装依赖&#xff1a;npm install 如果国外安装比较慢&#xff0c;可采用国内淘宝镜像安装&#xff1a;npm install -g …

【javaweb】eclipse重启后tomcat打不开解决方法

https://blog.csdn.net/enniexiaorui/article/details/70161040

编写高性能的 JavaScript 程序的几个提示

2019独角兽企业重金招聘Python工程师标准>>> 这是一篇来自国外的文章&#xff0c;从各个方面介绍如何编写一个高性能的 JavaScript 应用程序。例如应该在页面最底部加载JS文件、合并多个js文件、异步加载js文件等等。 全文阅读&#xff08;英文&#xff09; 转载于:…

[网络流24题] 最长k可重区间集

对于区间 u->v &#xff0c;连接边 u->v&#xff0c;权值为-len&#xff0c;容量为1&#xff0c;之后对每个点 i->i1&#xff0c;连边 i->i1&#xff0c;容量为k&#xff0c;权值为0&#xff0c;求区间最左端点到最右端点的费用流&#xff0c;费用相反数即为答案。…

Gym - 102082G

Gym - 102082Ghttps://vjudge.net/problem/2198225/origin对于数列中任意一个数&#xff0c;要么从最左边到它不递减&#xff0c;要么从最右边到到它不递减&#xff0c;为了满足这个条件&#xff0c;就要移动&#xff0c;而移动的最少步数就是逆序对数。所以这个数要么往左移动…

JAVA环境变量配置与配置后CMD的使用

JAVA环境变量配置&#xff1a; 直接在环境变量Path(或PATH&#xff0c;大小写无所谓)里加上 &#xff1a;JDK安装路径名/bin 也可以先设JAVA_HOME然后再设JAVA_HOME/bin&#xff0c;但必须是在同一区域中进行设置&#xff0c;系统变量区域或用户变量区域&#xff0c;否则设置的…

【web】从数据库读取多条数据到前台

servlet 代码实现 &#xff1a; package com.zzxtit.order;import java.io.IOException; import java.sql.SQLException; import java.util.List;import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet…

FUSE——用户空间文件系统

用户空间文件系统&#xff08;Filesystem in Userspace&#xff0c;简称FUSE&#xff09;是操作系统中的概念&#xff0c;指完全在用户态实现的文件系统。目前Linux通过内核模块对此进行支持。一些文件系统如ZFS&#xff0c;glusterfs和luster使用FUSE实现。       Linux…

29个简单直观的移动设备网页设计

毫无疑问的是移动网络已经风靡世界。运行在iOS或Android智能手机&#xff0c;这两者提供了出色的网页浏览平台。而且这个数字仅仅是预期增加人口的平均工资增长率扩大。 然而该过程的设计和编码移动模板可以是非常乏味。我希望提供一个创造性的思路在这个画廊29个直观的手机设计…

【java】maven工程使用switch时不能使用String解决方法

原因 &#xff1a; 1.7之前不支持使用String 解决方法 &#xff1a; 1、右击程序------》 Build Path ------》Config Build Path 2、选择图示选项 3、更改选项&#xff0c;如图 4、更改编译器 5、将版本改为1.8 6、应用

Oracle 存储过程 无法编译 解决方法(转载)

声明:本文为转载,如果有侵犯知识版本&#xff0c;请通知本人&#xff0c;本人将即刻停止侵权行为: http://blog.csdn.net/tianlesoftware/article/details/7412555 Oracle存储过程无法编译&#xff0c;在PL/SQL中编译&#xff0c;总是挂住了&#xff0c;这个原因可能是要编译的…

交流一点CCNP学习经验

首先反问自己&#xff0c;学习NP的最现实目的是什么。 如果是在校大学生&#xff0c;中专&#xff0c;职高的学生。大多目的是通过一个认证&#xff0c;学习更多有用的知识和技能。招个好工作。有个好的开始。这样应该是把扎实的基础理论和熟练的基础实验操作放在第一位。不要死…

iOS测试基础(命令篇)-iPhone型号及其他信息

首先安装libimobiledevice和ideviceinstaller brew uninstall ideviceinstaller brew uninstall libimobiledevice brew install --HEAD libimobiledevice brew link --overwrite libimobiledevice brew install ideviceinstaller brew link --overwrite ideviceinstaller 应用…

Soft-to-Hard Vector Quantization for End-to-End Learning Compressible Representations

郑重声明&#xff1a;原文参见标题&#xff0c;如有侵权&#xff0c;请联系作者&#xff0c;将会撤销发布&#xff01; Abstract: 我们提出了一种新的方法&#xff0c;通过端到端的训练策略来学习深度架构中的可压缩表征。我们的方法是基于量化和熵的软&#xff08;连续&#x…

Delta3D———通过游戏管理器组件和消息的扩展创建自定义行为 《转》

游戏管理器组件给我们提供了在不修改游戏管理器的情况下灵活扩展我们的自定义行为的能力。游戏管理器组件是基于消息来工作的&#xff0c;定义自定义行为的基本 流程就是创建自定义类型的消息&#xff0c;在合适的时候发送消息&#xff0c;创建自定义游戏管理组件并重写自己的消…

【spring】在不联网的情况下查看xml的定义规则的方法

1、打开依赖 2、打开该jar包 3、打开该包 4、找到xml的规则

常用的js判断

常用的js判断 关于注册的时候&#xff1b;对注册信息的判断&#xff1a; 表单 <form id"form" name"form" method"post" action"" οnsubmit"return CheckPost();"> 引入&#xff1a;<script language"JavaS…

解决Chrome中UEditor插入图片的选择框加载过慢问题

解决Chrome中UEditor插入图片的选择框加载过慢问题 ../resources/plugins/ueditor/ueditor.all.js 中line24489/24498中的 accept"image/*" 修改为 accept"image/jpeg,image/jpg,image/png,image/gif,image/bmp"../resources/plugins/ueditor/dialogs/im…