做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函數做類似的封裝,代碼略