1.3 ATL窗口类(1)

ATL在设计时,接口定义和实现是严格区分开的,这在窗口类的设计中最为明显。

ATL有一个专门为窗口设计的类,可以做全部的窗口操作,这就是CWindow。

CWindow还有一个操作符HWND,你可以将CWindow对象传递给以HWND为参数的函数。

在ATL类中对窗口过程的实现是CWindowImpl。CWindowImpl包含有所有窗口实现代码,例如:窗口类的注册,窗口的子类化,消息映射以及基本的WindowProc函数。

任何非对话框窗口都是从CWindowImpl派生的,你的新类需要实现三样东西:

定义窗口类(通过DECLARE_WND_CLASS或DECLARE_WND_CLASS_EX宏实现);

生成消息映射链(通过BEGIN_MSG_MAP和END_MSG_MAP宏实现);

窗口使用的默认窗口类型。

DECLARE_WND_CLASS宏或DECLARE_WND_CLASS_EX宏定义了一个CWndClassInfo结构,这个结构封装了WNDCLASSEX结构。

DECLARE_WND_CLASS宏让你指定窗口类的类名,其他参数使用默认设置,而DECLARE_WND_CLASS_EX宏还允许你指定窗口类的类型和窗口的背景颜色。你也可以用NULL作为类名,ATL会自动为你生成一个类名。

您还未添加分享代码,请到主题选项中,添加百度分享代码!

您可以选择一种方式赞助本站

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

图片 表情