总结创建窗口全过程
2006-03-28 15:24
183 查看
用SDK创建窗口的过程,是程序和Windows交互的过程。创建过程的每一步都要用到Windows API。
第一步创建窗口类:即定义一个WNDCLASS对象,然后填充其内的变量。如:
WNDCLASS wc;
wc.style=CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;//指向窗口过程函数的指针
......
定义好后,进入第二步注册窗口类:即调用Windows API RegisterClass(&wc)即可注册窗口类wc。
第三步创建窗口:这一步要用到CreateWindow(......)它返回一个窗口ID句柄。我们用HWND类型变量获得该值。以后要用到该窗口,将该变量导入即可。
第四步显示和更新窗口:即调用 ShowWindow (hwnd, iCmdShow) 和UpdateWindow (hwnd)显示和更新和hwnd对应的窗口。iCmdShow告诉它如何显示这个窗口。
第五步创建循环消息:
while (GetMessage (&msg, NULL, 0, 0))//从消息队列中取出一条消息
{
TranslateMessage (&msg) ;//进行消息(如键盘消息)转换
DispatchMessage (&msg); //分派消息到窗口的回调函数处理,(OS调用窗口回调函数进行处理)。
}
这里调用了三个API,注释已经写得很清楚了。其中DispatchMessage调用的回调函数即是我们上面在创建窗口类时定义的wc.lpfnWndProc = WndProc,WndProc(......)的这个语句中被定义为回调函数。我们一会还得定义 WndProc(......)。循环体退出的条件是当GetMessage()取出的消息是WM_QUIT时。其它消息则会进行处理。
第六步终止应用程序:
return msg.wParam ; //表示从PostQuitMessage返回的值
第七步完成回调函数(WndProc):
回调函数定义如下:
LRESULT CALLBACK WndProc (HWND hwnd,
UINT message,
WPARAM wParam,
LPARAM lParam)
{ switch (message)
{case WM_XXXXX:
//相应的处理方法
return x;
......
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
完成...
//如果没有定义相应的消息处理函数就用Windows默认的处理方法处理。
第一步创建窗口类:即定义一个WNDCLASS对象,然后填充其内的变量。如:
WNDCLASS wc;
wc.style=CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;//指向窗口过程函数的指针
......
定义好后,进入第二步注册窗口类:即调用Windows API RegisterClass(&wc)即可注册窗口类wc。
第三步创建窗口:这一步要用到CreateWindow(......)它返回一个窗口ID句柄。我们用HWND类型变量获得该值。以后要用到该窗口,将该变量导入即可。
第四步显示和更新窗口:即调用 ShowWindow (hwnd, iCmdShow) 和UpdateWindow (hwnd)显示和更新和hwnd对应的窗口。iCmdShow告诉它如何显示这个窗口。
第五步创建循环消息:
while (GetMessage (&msg, NULL, 0, 0))//从消息队列中取出一条消息
{
TranslateMessage (&msg) ;//进行消息(如键盘消息)转换
DispatchMessage (&msg); //分派消息到窗口的回调函数处理,(OS调用窗口回调函数进行处理)。
}
这里调用了三个API,注释已经写得很清楚了。其中DispatchMessage调用的回调函数即是我们上面在创建窗口类时定义的wc.lpfnWndProc = WndProc,WndProc(......)的这个语句中被定义为回调函数。我们一会还得定义 WndProc(......)。循环体退出的条件是当GetMessage()取出的消息是WM_QUIT时。其它消息则会进行处理。
第六步终止应用程序:
return msg.wParam ; //表示从PostQuitMessage返回的值
第七步完成回调函数(WndProc):
回调函数定义如下:
LRESULT CALLBACK WndProc (HWND hwnd,
UINT message,
WPARAM wParam,
LPARAM lParam)
{ switch (message)
{case WM_XXXXX:
//相应的处理方法
return x;
......
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
完成...
//如果没有定义相应的消息处理函数就用Windows默认的处理方法处理。
相关文章推荐
- MFC程序对win32的封装总结(窗口类的注册,窗口的创建,窗口的窗口过程指定)
- 总结创建窗口全过程
- MFC笔记-SDI窗口创建过程总结
- MFC程序对win32的封装总结(窗口类的注册,窗口的创建,窗口的窗口过程指定)
- WebSrevice创建过程+LINQ学习总结
- android内核剖析 创建窗口过程读书笔记
- PLSQL Developer图形化窗口创建数据库全过程
- VC++窗口的创建过程
- Windows,C++编程创建窗口的过程详解
- Android应用程序窗口(Activity)的窗口对象(Window)的创建过程分析
- 总结:子窗口创建及父窗口与子窗口之间通信
- MFC应用程序创建窗口的过程
- 创建异形窗口(总结)
- Android应用程序窗口(Activity)的窗口对象(Window)的创建过程分析
- MFC应用程序中处理消息的顺序,创建窗口的过程关闭窗口的顺序(非模态窗口),打开模式对话框的函数调用顺序
- PLSQL Developer图形化窗口创建数据库全过程
- ssl协议相关总结和创建私有CA过程
- Android应用程序窗口(Activity)的运行上下文环境(Context)的创建过程分析
- Android应用程序窗口(Activity)的窗口对象(Window)的创建过程分析
- 窗口的创建过程: