Windows程序设计学习笔记(1):一个简单的windows程序
《Windows程序设计》(第五版)(美Charles Petzold著)
#include<windows.h> LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdline,int iCmdShow)
//第一个参数是实例句柄,在Windows程序中,句柄就是一个数值,程序里用它来标志某些东西
//第三个参数是用来运行程序的命令行
//第四个参数用来指明程序最初如何显示:正常显示、最大化到全屏、最小化到任务栏
{
static TCHAR szAppName[]=TEXT("HelloWin");
HWND hwnd; //窗口句柄
MSG msg; //消息结构
WNDCLASS wndclass; //窗口类结构 wndclass.style=CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc; //将窗口类的过程设为WndProc函数
wndclass.cbClsExtra=;
wndclass.cbWndExtra=; //这两行用于在类结构和Windows内部维护的窗口结构中预留额外的空间
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)) //RegisterClass(&wndclass)窗口类注册
{
MessageBox(NULL,TEXT("This program requares Windows NT"),szAppName,MB_ICONERROR);
return ;
} hwnd=CreateWindow(szAppName, //创建窗口类 窗口类名称
TEXT("The Hello Program"), //窗口标题
WS_OVERLAPPEDWINDOW, //风格
CW_USEDEFAULT, //初始x坐标
CW_USEDEFAULT, //初始y坐标
CW_USEDEFAULT, //初始x方向尺寸
CW_USEDEFAULT, //初始y方向尺寸
NULL, //父窗口句柄
NULL, //窗口菜单句柄
hInstance, //程序实例句柄
NULL); //创建参数
ShowWindow(hwnd,iCmdShow); //显示窗口
UpdateWindow(hwnd); //重绘窗口
while(GetMessage(&msg,NULL,,))//消息循环,GetMessage函数用于从消息队列中对消息进行检索,此调用将一个指向名称为msg的MSG结构变量的指针传给Windows
{
Translate(&msg); //将msg结构返还给Windows以进行某些键盘消息的转换
DispatchMessage(&msg); //将msg结构再次返回给Windows,接下来,Windows会将这条消息发送给合适的窗口过程来处理
}
return msg.wParam;
} LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
HDC hdc; //设备环境句柄
PAINTSTRUCT ps; //绘制结构
RECT rect; //矩形结构 switch(message) //消息处理
{
case WM_VREATE:
return ;
case WM_PAINT: //当窗口客户区的部分或全部无效且必须更新时应用程序将收到此通知
hdc=BeginPaint(hwnd,&ps); //几乎总是从BeginPaint开始
GetClientRect(hwnd,&rect);
DrawText(hdc,TEXT("Hello,Windows 10!"),-,&rect,DT_SINGLELINE | DT_CENTER | DT_VCENTER); //绘制文本
EndPaint(hwnd,&ps);
case WM_DESTROY: //销毁窗口
PostQuitMessage();
return ;
}
return DefWindowProc(hwnd,message,wParam,lParam); //对所有窗口过程没有处理的消息进行默认处理
}
Windows程序设计学习笔记(1):一个简单的windows程序的更多相关文章
- cpp学习笔记 1一个简单的小程序以及一些的知识点
今天买的cpp到了从今天開始又一次学习cpp如今发现学校发的书真的不怎莫样. <em>#include<stdio.h>//预处理命令 int main()/*第一个被调用的函 ...
- Windows程序设计学习笔记(一)Windows内存管理初步
学习Windows程序设计也有一些时间了,为了记录自己的学习成果,以便以后查看,我希望自己能够坚持写下一系列的学习心得,对自己学习的内容进行总结,同时与大家交流.因为刚学习所以可能有的地方写不不正确, ...
- windows程序设计学习笔记(一)
windows里的变量类型 1.简单重定义windows变量 BOOL (TRUE FALSE) INT UINT(32位,4字节) LONG DWORD(32位,4字节) lParam,wParam ...
- blfs(systemv版本)学习笔记-制作一个简单的桌面系统
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 大概思路: lfs(系统)+xorg(驱动)+i3-wm(窗口+桌面)+lightdm(显示管理器+登录管理器) 链接: lfs ...
- Oracle学习笔记:一个简单的行转列例子
一个简单的行列转换例子,原始数据. create table temp_cwh_student ( name ), subject ), score ) ) select * from temp_cw ...
- Windows程序设计学习笔记(五)——菜单资源和加速键的使用
菜单可能是Windows提供的统一用户界面中最重要的一种方式,菜单通常在标题栏的下一行显示,这一栏叫做菜单栏,菜单栏中的每一项称之为菜单项,菜单栏中的每一个菜单项在激活时会显现一个下拉菜单(也可以说是 ...
- Windows程序设计学习笔记(四)自绘控件与贴图的实现
Windows系统提供大量的控件供我们使用,但是系统提供的控件样式都是统一的,不管什么东西看久了自然会厌烦,为了使界面更加美观,添加一些新的东西我们需要自己绘制控件. 控件在默认情况下并不进行自绘,如 ...
- Spring学习笔记--声明一个简单的Bean
spring依赖的maven dependencyhttp://mvnrepository.com/artifact/org.springframework 在pom.xml中添加如下依赖: < ...
- ROS学习笔记11-写一个简单的服务和客户端(C++版本)
本文主要来源于:http://wiki.ros.org/ROS/Tutorials/WritingServiceClient%28c%2B%2B%29 写一个服务节点.在创建消息和服务中,我们创建了一 ...
随机推荐
- Navicat Premium 12安装、激活
Navicat Premium 12安装 Navicat Premium 12激活
- django removing hardcoded URLs in template --- 使用变量,把url放在变量中 {% url 'namespace:name' %}
urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^votes/', include("polls.urls", na ...
- buuctf Easysql 小记
堆叠注入 利用原理: 补充系统变量@@sql_modesql_mode:是一组mysql支持的基本语法及校验规则PIPES_AS_CONCAT:将“||”视为字符串的连接操作符而非或运算符,这和Ora ...
- 定时备份mysql数据库的shell脚本
最近项目需要定时备份mysql数据库的数据,根据需求写了一份定时备份mysql数据库的脚本. -h mysql的地址 默认为localhost -P 端口号 默认为3306 -u 用户 默认为r ...
- Spring Bean 有关的那些注解
尊重原著直接贴链接 https://mp.weixin.qq.com/s/7lhpEo73KG3-xPgbFiaLHw
- 第八届极客大挑战 Re
0x01.Writeup-RE-CM_2 题目: 解题思路: 1.这个是经过xor的,王老师提示说用xortool,于是放进kali,装好之后执行 xortool CM_2.exe -b, 0.out ...
- IDEA中使用Springboot+SSM的踩坑记(一)
今天由于电脑无限蓝屏,不知怎么把我IDEA里面破解过的一些东西给搞没了,包括IDEA本体和JRebel,照着原来的方法破解连本体都开不起来了(哭死),索性下了个最新版来用,结果JRebel还是破解不得 ...
- Python - __getattr__和__getattribute__的区别
传送门 https://docs.python.org/3/reference/datamodel.html#object.__getattr__ https://docs.python.org/3/ ...
- 本地简单HTTP服务器
cd进要启动服务器的目录 python -m http.server 7800 (Python 3.x) python -m SimpleHTTPServer 7998 (Pyhton2.x)
- pillow 初级用法
# 转载至:https://www.cnblogs.com/apexchu/p/4231041.html Image类 Pillow中最重要的类就是Image,该类存在于同名的模块中.可以通过以下几种 ...