首页  >   经验  >   Windows零基础入门:2.9 窗口类与进程以及窗口过程的关系

Windows零基础入门:2.9 窗口类与进程以及窗口过程的关系

codexia 2015-08-19 11:11:49 2093 会员文章,禁止转载
Windows   入门  
手机阅读 | 转发赚积分
手机收藏 | 分享给好友
简介本节课主要讲解了窗口类和进程之间的关系以及详细分析了窗口类的注册以及窗口类和窗口过程的关系。
感谢 阿里云 对本站(本站由阿里云高性能服务器搭建)的赞助支持,本站推荐 →高性能云服务器2折起优惠由此进←↓
高性能云服务器2折起
秒后广告自动消失...会员无广告。点击可关闭广告。

    上节课介绍了窗口类的思想和相关概念。本节课来更加细致的介绍窗口类的具体的形式。如果你对窗口类的概念还不清楚,请去看上节课先。
    由上一节课我们知道,窗口类就是用来创建窗口的模板。既然是模板,必然有很多参数,用来确定窗口的特征。是的,窗口类就是一系列的窗口属性的集合,作为创建窗口的模板。一个窗口类可以创建很多个窗口,所以,窗口是窗口类的创建的一个实例。
    拿到具体的编程环境来讲,所有的窗口类从属于一个进程。也就是说,我们所提到的所有窗口类,都是工作在一个进程内的。在一个进程中创建的窗口类,不能跨进程使用。就像你在一个房间放了一个电视,这个房门是关闭的,你不可能在其他房间来看这个电视。进程之间就相当于多个隔离的房间。窗口类则只是这个房间中的一样东西而已。
    我们用同一个窗口类创建了大量的窗口,这些窗口都长得差不多一样,那么这些窗口的消息谁来处理呢?当然是窗口类中的成员--窗口过程。窗口过程就是一个函数指针,赋值后,就确定了用哪个函数来处理这些窗口消息。
    这也就意味着,这些窗口都由一个窗口过程在处理所有窗口的窗口消息。这个窗口过程和窗口类是这些窗口公用的。窗口过程处理消息,就可以决定这些窗口的外观和行为了。比如在WM_PAINT中处理,就可以对窗口进行绘制,而这个处理就影响所有由这个窗口类创建的窗口的外观。而在WM_LBUTTONDOWN消息中,处理的是鼠标左键单击消息,这个处理,也会影响到所有由这个窗口类创建的窗口单击时候的反应。这里的例子,不必细究,我们会在后面一一介绍的,这里你只要感觉出是这么回事就行了。
    既然窗口过程是所有窗口公用的,那么也就是说,这所有的窗口的外观和行为反应都是一样的。你要让你创建的窗口与众不同,那么你就要创建你自己的窗口类,然后用你自己的窗口类来创建自己的窗口。你在创建窗口类的时候,指定自己单独的一个窗口过程,来处理你这个窗口的消息,就可以让你的窗口的外观和行为与其他的不一样。
    那么创建自己的窗口类、注册自己窗口类和创建自己的窗口过程代码如下:

WNDCLASS wndclass;
wndclass.lpfnWndProc = MyProc;// - 窗口过程函数名
wndclass.lpszClassName = _T("MyClass");// - 窗口类名
...其他的成员赋值就不列出来了。
RegisterClass(&wndclass);// - 注册窗口类,登记窗口类到你的进程
CreateWindow(_T("MyClass"),...);// - 用自己的窗口类创建窗口

LRESULT CALLBACK MyProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
...// - 窗口类过程,处理所有的窗口消息,完成所有的功能。
}

     总的来说,这里就是上面的创建自己定制的窗口类,定制的内容包括确定自己的窗口类名,确定窗口消息处理的窗口过程函数名。注册自己窗口类,注册就是将这个窗口类信息保存在窗口类表中。创建窗口时就会根据窗口类名去查询窗口类信息。查到之后,就按照窗口类的信息来创建一个窗口。你提供的窗口过程函数,就用来处理所有的消息。
    以上就是定制窗口类的过程。你的这个窗口类,同样也可以创建很多的窗口,而创建的所有这些窗口也都公用你这个窗口

开通会员,查看全部
标注
评论
站内搜
百度搜
传送到手机
手机扫码,识别文字,完成传送x
加载中...
标注内容x
加载中...
添加标注x
收藏 0 点赞 0
公众号
微信赞赏
支付宝赞赏
领支付宝大红包
QQ群

相关阅读

分享到:
分享文章[Windows零基础入门:2.9 窗口类与进程以及窗口过程的关系]到QQ空间

课程菜单

猜您感兴趣