《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程序的更多相关文章

  1. cpp学习笔记 1一个简单的小程序以及一些的知识点

    今天买的cpp到了从今天開始又一次学习cpp如今发现学校发的书真的不怎莫样. <em>#include<stdio.h>//预处理命令 int main()/*第一个被调用的函 ...

  2. Windows程序设计学习笔记(一)Windows内存管理初步

    学习Windows程序设计也有一些时间了,为了记录自己的学习成果,以便以后查看,我希望自己能够坚持写下一系列的学习心得,对自己学习的内容进行总结,同时与大家交流.因为刚学习所以可能有的地方写不不正确, ...

  3. windows程序设计学习笔记(一)

    windows里的变量类型 1.简单重定义windows变量 BOOL (TRUE FALSE) INT UINT(32位,4字节) LONG DWORD(32位,4字节) lParam,wParam ...

  4. blfs(systemv版本)学习笔记-制作一个简单的桌面系统

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 大概思路: lfs(系统)+xorg(驱动)+i3-wm(窗口+桌面)+lightdm(显示管理器+登录管理器) 链接: lfs ...

  5. Oracle学习笔记:一个简单的行转列例子

    一个简单的行列转换例子,原始数据. create table temp_cwh_student ( name ), subject ), score ) ) select * from temp_cw ...

  6. Windows程序设计学习笔记(五)——菜单资源和加速键的使用

    菜单可能是Windows提供的统一用户界面中最重要的一种方式,菜单通常在标题栏的下一行显示,这一栏叫做菜单栏,菜单栏中的每一项称之为菜单项,菜单栏中的每一个菜单项在激活时会显现一个下拉菜单(也可以说是 ...

  7. Windows程序设计学习笔记(四)自绘控件与贴图的实现

    Windows系统提供大量的控件供我们使用,但是系统提供的控件样式都是统一的,不管什么东西看久了自然会厌烦,为了使界面更加美观,添加一些新的东西我们需要自己绘制控件. 控件在默认情况下并不进行自绘,如 ...

  8. Spring学习笔记--声明一个简单的Bean

    spring依赖的maven dependencyhttp://mvnrepository.com/artifact/org.springframework 在pom.xml中添加如下依赖: < ...

  9. ROS学习笔记11-写一个简单的服务和客户端(C++版本)

    本文主要来源于:http://wiki.ros.org/ROS/Tutorials/WritingServiceClient%28c%2B%2B%29 写一个服务节点.在创建消息和服务中,我们创建了一 ...

随机推荐

  1. Wx-小程序-长按复制文本

    view: <text bindlongtap='copy' data-name='{{name}}'>{{item.name}}</text> js: copy(e) { v ...

  2. django urls.py 中的name 使用方法

    使用场景: 当我们在url的时候,一般情况下都是使用很明确的url地址.如在网页里面使用<a href="/login">登录</a>.像这样的链接有很 多 ...

  3. django admin后台(数据库简单管理后台)

    只需要简单的几行胆码就可以生成一个完整的管理后台 这个就是django魅力之一 创建超级用户 python manage.py createsuperuser     ----  之后会提示输入用慕名 ...

  4. java8date

    Java 8:新的时间和日期API 在Java 8之前,所有关于时间和日期的API都存在各种使用方面的缺陷,因此建议使用新的时间和日期API,分别从旧的时间和日期的API的缺点以及解决方法.Java ...

  5. JAVA基础学习(6)之使用对象

    6使用对象 6.1字符类型 6.1.1字符类型 char和int互相转换 //a比A大32 Scanner in=new Scanner(System.in); char c='B'; char c1 ...

  6. 原生js按回车键实现登录

    这篇文章主要介绍了原生JS按回车键实现登录的方法,众所周知,这是在web程序设计中的一个非常实用的小技巧,主要用于表单提交,包括注册.登录等等功能,具有很好的用户体验,有着非常广泛的实用价值,需要的朋 ...

  7. CDH搭建大数据集群(5.10.0)

    纠结了好久,还是花钱了3个4核8G的阿里云主机,且行且珍惜,想必手动搭建过Hadoop集群的完全分布式.HBase的完全分布式的你(当然包括我,哈哈),一定会抱怨如此多的配置,而此时CDH正是解决我们 ...

  8. QGridLayout栅格布局函数参数设置

    对于PyQt5的栅格布局函数,主要是实现多个控件之间的栅格布局形式,一般有两种设置方式: 1.Qdesigner布局设置时直接使用栅格布局函数,便可以把所需要布局的控件直接按照栅格方式来进行布局: 2 ...

  9. Spring Boot JPA 使用教程

    JPA 是 Spring Boot 官方推荐的数据库访问组件,其充分体现了面向对象编程思想,有点像 asp.net 的 EFCore.JPA 也是众多 ORM 的抽象. 从本系列开始,都需要用到 my ...

  10. P2774 方格取数(网络流)

    https://www.luogu.com.cn/problem/P2774 在一个有 m×n 个方格的棋盘中,每个方格中有一个正整数. 现要从方格中取数,使任意2个数所在方格没有公共边,且取出的数的 ...