程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> GetClientRect和GetWindowRect封裝

GetClientRect和GetWindowRect封裝

編輯:關於C++

做GUI程序設計,經常需要獲取窗口的大小,典型的代碼示例如下:

CRect rcSize;
::GetClientRect( hWnd, rcSize );

這段代碼獲取了hWnd窗口客戶區的大小.用的多了,就覺得每次都要事先聲明一個臨時 CRect變量很影響代碼的

美觀,如果您也有同感的話那麼如下封裝可能會適合你:

class CClientRect : public CRect
{
public:
   CClientRect(HWND hWnd)
   {
      ATLASSERT(::IsWindow(hWnd));
      ::GetClientRect(hWnd, this);
   }
};

由於CClientRect從CRect繼承,在需要CRect做參數的情況下,可以直接用CClientRect代 替.

如果您的程序不能使用ATL和MFC的共享類CRect,那麼可以讓CClientRect從tagRECT數據結 構派生,效果類似.

class CClientRect : public tagRECT
{
public:
   CClientRect(HWND hWnd)
   {
      ATLASSERT(::IsWindow(hWnd));
      ::GetClientRect(hWnd, this);
   }
};

同上述風格,可以對GetWindowRect API函數做類似的封裝,代碼略

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved