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

ATL的GUI程序设计(3)

 2006-04-11 22:54:28 来源:WEB开发网   
核心提示: OK,上一章介绍过的_Module又出现在你的眼前了——不过还是没有什么特别的变化,ATL的GUI程序设计(3)(4),仍然是那熟悉的Init和Term,而且,这就够了,让我们来撩开CHelloATLWnd那貌似神秘的面纱吧,正如“山哟还是那座山&rdq

OK,上一章介绍过的_Module又出现在你的眼前了——不过还是没有什么特别的变化,仍然是那熟悉的Init和Term。而且,正如“山哟还是那座山”一样,消息循环哟也仍然是那个消息循环。当然,你肯定也发现了那寥寥的变化:CHelloATLWnd是什么?在我将它的代码展现给你之前,你可能会做出这样的猜想:

  • 这是一个C++类,它对Win32窗口类进行了封装。
  • 这个类封装了大多数窗口操作的API函数,诸如CreateWindow、ShowWindow、UpdateWindow。
  • 窗口类的注册可能也是在这个C++类中完成的。

好,打住,这就够了。让我们来撩开CHelloATLWnd那貌似神秘的面纱吧,赶紧着。

class CHelloATLWnd : public CWindowImpl< CHelloATLWnd, CWindow, CWinTraits< WS_OVERLAPPEDWINDOW > >
{
public:
  CHelloATLWnd()
  {
    CWndClassInfo& wci   = GetWndClassInfo();
    wci.m_bSystemCursor  = TRUE;
    wci.m_lpszCursorID   = IDC_ARROW;
    wci.m_wc.hbrBackground = (HBRUSH)GetStockObject( WHITE_BRUSH );
    wci.m_wc.hIcon     = LoadIcon( NULL, IDI_APPLICATION );
  }
public:
  DECLARE_WND_CLASS( _T("HelloATL") )
public:
  BEGIN_MSG_MAP( CHelloATLWnd )
    MESSAGE_HANDLER( WM_DESTROY, OnDestroy )
    MESSAGE_HANDLER( WM_PAINT, OnPaint )
  END_MSG_MAP()
public:
  LRESULT OnDestroy( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& hHandled )
  {
    ::PostQuitMessage( 0 );
    return 0;
  }
  LRESULT OnPaint( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& hHandled )
  {
    HDC hdc;
    PAINTSTRUCT ps;
    hdc = BeginPaint( &ps );
    DrawText( hdc, _T("Hello, ATL!"), -1, &ps.rcPaint, DT_CENTER | DT_VCENTER | DT_SINGLELINE );
    EndPaint( &ps );
    return 0;
  }
};

上一页  1 2 3 4 5  下一页

Tags:ATL GUI 程序设计

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