https://blog.youkuaiyun.com/guzhou_diaoke/article/details/8155171 整理于孤舟钓客以及其他的博客文章, 加了一点自己的理解, 只希望以后能够方便理解,学习;
能学到的内容:
- 基本窗口原理
- 位图读取
- 字体,按钮,背景更改
- 菜单,工具栏建立
windows窗口
windows系统是界面系统, 方便和用户交互而产生的。本文通过控制台来实现窗口这一过程来了解windows窗口的产生以及消息的循环;
//导入winmm.lib库,告诉编译器你要用到得winmm.lib库
#pragma comment(lib, "winmm")
#include<Windows.h>
//声明消息函数, 用于消息处理
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
//WINAPI是<Windows.h>的主函数
int WINAPI WinMain(HINSTANCE hInstance, // 实例句柄
HINSTANCE hPrecInstance, // 前实例句柄
PSTR szCmdLine, // 命令参数
int iCmdShow //窗口初始化(最大最小化)
)
{
//全局变量 ,
static TCHAR szAppName[] = TEXT("HelloWin32");
HWND hwnd; //窗口句柄 , 窗口的唯一标识
MSG msg; // 消息结构体
WNDCLASS wndclass; //声明一个窗口类
//初始化窗口;
/* cbClsExtra :windows程序为每一个窗口设计类管理一个WNDCLASS结构。在应用程序注册一个窗口类的时候,可以让windows分配一定字节空间的内存,这部分内存成为类的附件内存,有属于这个窗口类的所有窗口共享,类附件内存信息用于存储窗口类的附加信息。windows系统将这部分内存初始化为0,因此我们经常设置此参数为0.
cbWndExtra :windows程序为每一个窗口管理一个内部数据结构,在注册窗口类的时候,系统可以为每一个窗口分配一定的字节数的附加内存空间,称为窗口附件内存。应用程序可使用这部分内存存储窗口特有的数据,windows系统把这部分内存初始化为0 */
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); // 背景为白色 hbrBackground为函数指针
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW); //鼠标
wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);//类图标
wndclass.hInstance = hInstance; //当前句柄
wndclass.lpfnWndProc = WndProc; //IpfnWndProc是函数指针,指向消息函数
wndclass.lpszClassName = szAppName;

本文详细介绍了Windows程序设计中窗口的创建、显示、消息循环和处理过程,包括注册窗口、创建窗口、窗口过程、消息的处理,如WM_CREATE、WM_PAINT和WM_DESTROY等关键消息。此外,还探讨了Windows程序与操作系统的交互,以及窗口生命周期和线程的诞生与死亡。
最低0.47元/天 解锁文章
1469

被折叠的 条评论
为什么被折叠?



