1 // TortoiseSVN - a Windows shell extension for easy version control
3 // Copyright (C) 2003-2007 - Stefan Kueng
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software Foundation,
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
25 * Loads a string from the application resources.
29 enum { MAX_RESSTRING
= 1024 };
31 ResString (HINSTANCE hInst
, int resId
);
32 operator TCHAR
const * () const { return _buf
; }
34 TCHAR _buf
[MAX_RESSTRING
+ 1];
39 * A base window class.
40 * Provides separate window message handlers for every window object based on
46 virtual bool RegisterWindow(UINT style
, HICON hIcon
, HCURSOR hCursor
, HBRUSH hbrBackground
,
47 LPCTSTR lpszMenuName
, LPCTSTR lpszClassName
, HICON hIconSm
);
48 virtual bool RegisterWindow(CONST WNDCLASSEX
* wcx
);
50 /// static message handler to put in WNDCLASSEX structure
51 static LRESULT CALLBACK
stWinMsgHandler(HWND hwnd
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
);
54 * Sets the window title.
56 void SetWindowTitle(const std::wstring
& sTitle
)
58 sWindowTitle
= sTitle
;
62 * Sets the transparency of the window.
63 * \remark note that this also sets the WS_EX_LAYERED style!
65 void SetTransparency(BYTE alpha
, COLORREF color
= 0xFF000000);
67 virtual bool Create();
68 virtual bool Create(DWORD dwStyles
, HWND hParent
= NULL
, RECT
* rect
= NULL
);
69 virtual bool CreateEx(DWORD dwExStyles
, DWORD dwStyles
, HWND hParent
= NULL
, RECT
* rect
= NULL
);
72 bool IsWindowClosed() { return bWindowClosed
; };
74 operator HWND() {return m_hwnd
;}
79 std::wstring sClassName
;
80 std::wstring sWindowTitle
;
83 CWindow(HINSTANCE hInst
, CONST WNDCLASSEX
* wcx
= NULL
) : m_hwnd(NULL
)
85 , bWindowClosed(FALSE
)
92 // the real message handler
93 virtual LRESULT CALLBACK
WinMsgHandler(HWND hwnd
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
) = 0;
95 // returns a pointer the window (stored as the WindowLong)
96 inline static CWindow
* GetObjectFromWindow(HWND hWnd
)
98 return (CWindow
*)GetWindowLongPtr(hWnd
, GWLP_USERDATA
);