WEB开发网
开发学院软件开发VC MFC程序员的WTL指南(2)ATL 界面类 阅读

MFC程序员的WTL指南(2)ATL 界面类

 2006-07-22 22:03:51 来源:WEB开发网   
核心提示: 让我们开始定义一个新类,在后面的章节我会逐步的完成这个类的定义,MFC程序员的WTL指南(2)ATL 界面类(7),class CMyWindow : public CWindowImpl<CMyWindow>{public:DECLARE_WND_CLASS(_T("

让我们开始定义一个新类,在后面的章节我会逐步的完成这个类的定义。

class CMyWindow : public CWindowImpl<CMyWindow>
{
public:
  DECLARE_WND_CLASS(_T("My Window Class"))
};

接下来是消息映射链,ATL的消息映射链比MFC的简单的多,ATL的消息映射链被展开为switch语句,switch语句正确的消息处理者并调用相应的函数。使用消息映射链的宏是BEGIN_MSG_MAP 和 END_MSG_MAP,让我们为我们的窗口添加一个空的消息映射链。

class CMyWindow : public CWindowImpl<CMyWindow>
{
public:
  DECLARE_WND_CLASS(_T("My Window Class"))
  BEGIN_MSG_MAP(CMyWindow)
  END_MSG_MAP()
};

我将在下一节展开讲如何如何添加消息处理到消息映射链。最后,我们需要为我们的窗口类定义窗口的特征,窗口的特征就是窗口类型和扩展窗口类型的联合体,用于创建窗口时指定窗口的类型。窗口类型被指定为参数模板,所以窗口的调用者不需要为指定窗口的正确类型而烦心,下面是是同ATL类CWinTraits定义窗口类型的例子:

typedef CWinTraits<WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,WS_EX_APPWINDOW> CMyWindowTraits;
class CMyWindow : public CWindowImpl<CMyWindow, CWindow, CMyWindowTraits>
{
public:
  DECLARE_WND_CLASS(_T("My Window Class"))
  BEGIN_MSG_MAP(CMyWindow)
  END_MSG_MAP()
};

调用者可以重载CMyWindowTraits的类型定义,但是一般情况下这是没有必要的,ATL提供了几个预先定义的特殊的类型,其中之一就是CFrameWinTraits,一个非常棒的框架窗口:

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:MFC 程序员 WTL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接