WTLVisual Studio 6Visual C++ 7.0Windows 2000Visual C++ 6.0Windows XPIntermediateDevVisual StudioWindowsC++
Self-centering WTL property sheet






3.78/5 (6 votes)
Nov 4, 2002

49512

1196
A small class to automatically center a WTL property sheet.
Introduction
This is a very simple class that will automatically center a WTL property sheet. One frequently-asked question in the various WTL forums is "How do I centre a CPropertySheet
object?". Most people tend to add a GetParent().CenterWindow()
call to the first page in the property sheet, but in my mind this is a little awkward.
Instead, simply #include "propertysheetex.h"
and use CPropertySheetEx
as a drop in replacement for the standard WTL CPropertySheet
class.
Code
The actual code for the class is straightforward:
class CPropertySheetEx : public CPropertySheet { private: bool m_bCentered; public: CPropertySheetEx(WTL::_U_STRINGorID title = (LPCTSTR)NULL, UINT uStartPage = 0, HWND hWndParent = NULL) : CPropertySheet(title, uStartPage, hWndParent), m_bCentered(false) { } BEGIN_MSG_MAP(CPropertySheetEx) MESSAGE_HANDLER(WM_SHOWWINDOW, OnShowWindow) CHAIN_MSG_MAP(CPropertySheet) END_MSG_MAP() LRESULT OnShowWindow(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& bHandled) { // Centre? if (wParam == TRUE) Center(); // Ensure base-class gets this message bHandled = FALSE; return 0; } void Center(void) { // Only do this once if (!m_bCentered) { CenterWindow(); m_bCentered = true; } } };