总结创建窗口全过程
来源:互联网 发布:网络家长学校 编辑:程序博客网 时间:2024/06/06 15:59
用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默认的处理方法处理。
- 总结创建窗口全过程
- 总结创建窗口全过程
- PLSQL Developer图形化窗口创建数据库全过程
- PLSQL Developer图形化窗口创建数据库全过程
- PLSQL Developer图形化窗口创建 oracle 数据库全过程
- PLSQL Developer图形化窗口创建数据库全过程
- PLSQL Developer图形化窗口创建数据库全过程
- 创建异形窗口(总结)
- MFC学习笔记.day02-创建窗口全过程,MFC执行顺序,BUTTON控件,对象与窗口关系
- ucgui窗口绘制全过程
- VC++窗口关闭全过程
- windows编程 全屏窗口的创建总结
- MFC创建窗口(控件)总结
- MFC笔记-SDI窗口创建过程总结
- Oracle创建用户权限全过程
- 简单触发器创建全过程
- 创建COM组件全过程
- 创建COM组件全过程
- 处理消息
- 某个工具从以下位置返回了错误代码: "正在执行预链接事件
- java和c的区别
- 易友姓名测试软件发布
- Micaps3.2二次开发实例教程-3
- 总结创建窗口全过程
- android中canvas和bitmap实现不同图像合并
- Android 学习点滴(1)
- 局部变量 静态变量staic 全局变量
- Unity 鼠标与触摸屏通用代码
- 关于如何在一个类使用函数指针保存其子类的非静态成员函数
- NYOJ-孪生素数问题
- HDU-2529 Shot(物理题)
- sql server2008R2 在执行脚本的时候提示“已创建表 XXX,但其最大行大小(8926)超过了每行的最大字节数(8060)。如果结果行长度超过 8060 字节