WEB开发网
开发学院软件开发VC ATL的GUI程序设计(4)ATL的窗口类 阅读

ATL的GUI程序设计(4)ATL的窗口类

 2006-04-11 22:54:24 来源:WEB开发网   
核心提示: 下面,就让李马来逐一将这些组成部分介绍给你吧,ATL的GUI程序设计(4)ATL的窗口类(3),窗口样式的封装窗口样式通常由CWinTraits类封装,这个类很简单,符合OO的设计理念;第二,在对SendMessage进行封装后,如下:/// CWinTraits - Defines va

下面,就让李马来逐一将这些组成部分介绍给你吧。

窗口样式的封装

窗口样式通常由CWinTraits类封装,这个类很简单,如下:

/////////////////////////////////////////////////////////////////////////////
// CWinTraits - Defines various default values for a window
template <DWORD t_dwStyle = 0, DWORD t_dwExStyle = 0>
class CWinTraits
{
public:
  static DWORD GetWndStyle(DWORD dwStyle)
  {
    return dwStyle == 0 ? t_dwStyle : dwStyle;
  }
  static DWORD GetWndExStyle(DWORD dwExStyle)
  {
    return dwExStyle == 0 ? t_dwExStyle : dwExStyle;
  }
};

这个类有两个模板参数:dwStyle和dwExStyle,也就是CreateWindowEx中要用到的那两个样式参数。在CHelloATLWnd::Create(其实也就是CWindowImpl::Create)调用的时候,窗口的样式就是由CWinTraits::GetWndStyle/CWinTraits::GetWndExStyle决定的。

另外,ATL还为常用的窗口样式提供了几个typedef,如CControlWinTraits、CFrameWinTraits、CMDIChildWinTraits。在你需要它们这些特定样式或者需要对它们进行扩展的时候,可以直接进行使用或者使用CWinTraitsOR类来进行进一步的样式组合,这里我就不多介绍了。

窗口方法的封装

说白了,窗口方法的封装其实就是把窗口句柄和常用的窗口操作API函数(也就是那些第一个参数为HWND类型的API函数)进行一层薄薄的绑定。这样做的好处有二:第一,使代码更有逻辑性,符合OO的设计理念;第二,在对SendMessage进行封装后,可以增加对消息参数的类型检查。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:ATL GUI 程序设计

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