win32基本框架
2011-07-17 08:26
399 查看
其实win32最主要的特点就是消息循环,它包含了俩个基本的函数
(1) LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
这个函数叫窗口函数, 接收消息并做出相应处理,比如(WM_MOUSEMOVE、WM_DESTROY),CALLBACK是一种函数调用习惯,被定义为__stdcall,说明此函数为回调函数,由系统自动调用的,当窗口接收到消息并DispatchMessage之后,系统就自动调用窗口函数WndProc了。注意窗口函数中消息的分支结构中default分支必须是return DefWindowProc ( hWnd, message, wParam, lParam );因为不论什么消息都必须被处理,DefWindowProc是windows内部预设的消息处理函数。
(2) int WINAPI WinMain ( HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine,
int nCmdShow )
参数说明:hInst 为当前实例句柄,Windows 环境下用于区别同一应用程序的不同实例;hPrevInst应用程序先前实例的句柄(如果有的话),否则为 NULL,可以用来确定当前实例是否为应用程序的第一个实例;lpCmdLine是以NULL结尾的命令行字符串长指针;nCmdShow指定窗口初始显示方式的整型常量(1 = 通常;7 = 最小化) 。
框架结构与步骤
注册窗口---->创建窗口----->显示和更新窗口---->消息循环
WNDCLASSEX wcex;
wcex.cbSize = sizeof( WNDCLASSEX );
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC) WndProc
............................
RegisterClassEx(&wcex); //注册窗口
HWND hwnd; //定义一个句柄,把生成的窗口句柄赋给hwnd
hwnd=CreateWindow("Weixin2003",
"This is my test ! ",
WS_OVERLAPPEDWINDOW, 0,0,600,400,NULL,NULL, hInstance,NULL); // 根据初始化的窗口类,创建该窗口。并把句柄赋给hwnd。如果想要全屏显示的话,屏幕参数可以为0, 0, ::GetSystemMetrics(SM_CXSCREEN), ::GetSystemMetrics(SM_CYSCREEN), //显示和更新窗口ShowWindow(hwnd,nCmdShow); UpdateWindow(hwnd); //消息循环 while(GetMessage(&Msg,NULL,0,0)) { TranslateMessage(&Msg); DispatchMessage(&Msg); //对消息反应就会自动调用窗口函数 } //窗口函数LRESULT CALLBACK WndProc( HWND hWnd,
UINT message,
WPARAM wParam,
LPARAM lParam)
{
switch(message)
{
case WM_DESTROY: //结束应用程序
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam); //调用内被预设的消息处理函数,是必须写的
}
}
这样,一个win32窗口框架程序就介绍完了~~
(1) LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
这个函数叫窗口函数, 接收消息并做出相应处理,比如(WM_MOUSEMOVE、WM_DESTROY),CALLBACK是一种函数调用习惯,被定义为__stdcall,说明此函数为回调函数,由系统自动调用的,当窗口接收到消息并DispatchMessage之后,系统就自动调用窗口函数WndProc了。注意窗口函数中消息的分支结构中default分支必须是return DefWindowProc ( hWnd, message, wParam, lParam );因为不论什么消息都必须被处理,DefWindowProc是windows内部预设的消息处理函数。
(2) int WINAPI WinMain ( HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine,
int nCmdShow )
参数说明:hInst 为当前实例句柄,Windows 环境下用于区别同一应用程序的不同实例;hPrevInst应用程序先前实例的句柄(如果有的话),否则为 NULL,可以用来确定当前实例是否为应用程序的第一个实例;lpCmdLine是以NULL结尾的命令行字符串长指针;nCmdShow指定窗口初始显示方式的整型常量(1 = 通常;7 = 最小化) 。
框架结构与步骤
注册窗口---->创建窗口----->显示和更新窗口---->消息循环
WNDCLASSEX wcex;
wcex.cbSize = sizeof( WNDCLASSEX );
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC) WndProc
............................
RegisterClassEx(&wcex); //注册窗口
HWND hwnd; //定义一个句柄,把生成的窗口句柄赋给hwnd
hwnd=CreateWindow("Weixin2003",
"This is my test ! ",
WS_OVERLAPPEDWINDOW, 0,0,600,400,NULL,NULL, hInstance,NULL); // 根据初始化的窗口类,创建该窗口。并把句柄赋给hwnd。如果想要全屏显示的话,屏幕参数可以为0, 0, ::GetSystemMetrics(SM_CXSCREEN), ::GetSystemMetrics(SM_CYSCREEN), //显示和更新窗口ShowWindow(hwnd,nCmdShow); UpdateWindow(hwnd); //消息循环 while(GetMessage(&Msg,NULL,0,0)) { TranslateMessage(&Msg); DispatchMessage(&Msg); //对消息反应就会自动调用窗口函数 } //窗口函数LRESULT CALLBACK WndProc( HWND hWnd,
UINT message,
WPARAM wParam,
LPARAM lParam)
{
switch(message)
{
case WM_DESTROY: //结束应用程序
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam); //调用内被预设的消息处理函数,是必须写的
}
}
这样,一个win32窗口框架程序就介绍完了~~
相关文章推荐
- win32 最基本编程和应用程序框架
- Win32 Application基本框架
- win32 最基本编程和应用程序框架
- 学习Windows Mobile开发系列笔记(win32基本程序框架)
- hello-win程序入门win32基本窗口框架全解析
- Win32 Application基本框架
- Win32 SDK编程基本框架代码
- WIN32基本窗体程序框架
- [Win32] 服务程序开发(1)基本概念和服务程序的框架
- Win32应用程序基本框架详解
- WIN32 基本应用框架
- 学习Windows Mobile开发系列笔记(win32基本程序框架)
- Directx学习笔记【二】 将win32基本框架封装成类
- 学习Windows Mobile开发系列笔记(win32基本程序框架)
- Win32基本概念及程序基本框架
- Java集合框架的知识总结(1) 说明:先从整体介绍了Java集合框架包含的接口和类,然后总结了集合框架中的一些基本知识和关键点,并结合实例进行简单分析。 1、综述 所有集合类
- NHibernate的基本使用、快速入门 - Microsoft.NET开发框架应用资源(zhuan)
- iBatis框架基本使用
- Foundation框架下的基本类
- layui前台框架的基本弹出层的使用