Windows编程学习之路--框架介绍
来源:互联网 发布:手机棋牌源码 编辑:程序博客网 时间:2024/06/14 21:59
一个Windows 的应用程序,要创建一个窗口我觉得可以分为6个步骤:
1. 创建窗口类
2. 注册窗口类
3. 建立窗口
4. 显示窗口
5. 更新窗口
6. 获取消息
下面我就对以上这些步骤做些简单的说明。
创建窗口类。其实这一步,就是声明一个WNDCLASS这个结构体,这个结构体里边包含了窗口的一些信息。如窗口样式,菜单,图标等信息,然后将这些成员一一进行赋值。
注册窗口类。这一步是调用RegisterClass这个API,将上面创建的窗口类进行注册。
建立窗口。这一步将调用一个CreateWindow这个API,来创建一个窗口出来,但并没有显示出来。
显示窗口。调用ShowWindow这个API,将创建出来的窗口显示出来。
更新窗口。调用UpdateWindow这个API,更新一下显示出来的窗口。
获取消息。整个Windows应用程序是以消息驱动的,此时要调用GetMessage,从消息队列里获取一个消息,进行分发给窗口。
下面是以上的一些代码:
int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nShowCmd)
{
TCHAR szAppClassName[] = L"MyFirstWindow";
HWND hWnd;
MSG msg;
{
TCHAR szAppClassName[] = L"MyFirstWindow";
HWND hWnd;
MSG msg;
//创建窗口类
WNDCLASS wndclass;
//窗口类对象的初始化
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szAppClassName;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1));
wndclass.hCursor = LoadCursor(hInstance, MAKEINTRESOURCE(IDC_CURSOR1));
//注册窗口类
if (!RegisterClass(&wndclass))
{
MessageBox(NULL, L"Register wnd class failed", L"Error", MB_OK);
return 0;
}
//建立窗口
hWnd = CreateWindow(szAppClassName,
L"My first win32 application",
WS_OVERLAPPEDWINDOW,
800,
500,
600,
400,
NULL,
NULL,
hInstance,
NULL
);
//窗口类对象的初始化
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szAppClassName;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1));
wndclass.hCursor = LoadCursor(hInstance, MAKEINTRESOURCE(IDC_CURSOR1));
//注册窗口类
if (!RegisterClass(&wndclass))
{
MessageBox(NULL, L"Register wnd class failed", L"Error", MB_OK);
return 0;
}
//建立窗口
hWnd = CreateWindow(szAppClassName,
L"My first win32 application",
WS_OVERLAPPEDWINDOW,
800,
500,
600,
400,
NULL,
NULL,
hInstance,
NULL
);
//显示窗口
ShowWindow(hWnd, SW_SHOW);
ShowWindow(hWnd, SW_SHOW);
//更新窗口
UpdateWindow(hWnd);
UpdateWindow(hWnd);
// 获取消息
while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);//主要将一些虚拟键值转为一些字符消息,再传递给windows
DispatchMessage(&msg);//将消息发送给CreateWindow建立 的窗口
}
}
while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);//主要将一些虚拟键值转为一些字符消息,再传递给windows
DispatchMessage(&msg);//将消息发送给CreateWindow建立 的窗口
}
}
0 0
- Windows编程学习之路--框架介绍
- Windows编程学习之路
- 新手学习windows编程之路
- windows编程学习笔记一之——windows程序基本框架
- iOS链式编程框架介绍之LinkBlock
- Windows编程之MFC向导程序框架
- IOCP框架之Windows Sockets网络编程
- windows编程学习之句柄
- windows编程之API学习
- strut2 学习之验证框架一介绍
- spring学习之spring框架介绍
- Bootstrap框架学习之---介绍、排版样式
- spring学习之spring框架介绍
- 深度学习框架之Tensorflow介绍
- windows编程学习之路--自绘按钮
- windows编程学习之路--双缓冲绘图
- PHP codeigniter 框架编程学习之【应用程序】
- 学习mac编程之Cocoa介绍
- [待完成]移动端SO加固-简单梳理[待完成]
- 带你实现开发者头条APP(四)---首页优化(加入design包)
- 经验总结
- mysql 普通索引 唯一索引的创建与效率比较
- Linux spi驱动框架之执行流程
- Windows编程学习之路--框架介绍
- ADO.NET
- 用java写计算器
- 《LeetBook》leetcode题解(19):Remove Nth Node From End of List[E]——双指针解决链表倒数问题
- Uva 10905 Children's Game
- 技术分析之CSS+div
- ubuntu安装ftp服务器——vsftpd,实现ftp传输文件
- PHP学习中遇到的小坑
- 搜索总结