自居中的 WTL 属性表






3.78/5 (6投票s)
2002年11月4日

50007

1196
一个可以自动居中 WTL 属性表的类。
引言
这是一个非常简单的类,可以自动居中 WTL 属性表。在各种 WTL 论坛中经常被问到的问题是“如何居中一个 CPropertySheet
对象?”。大多数人倾向于在属性表的第一个页面中添加一个 GetParent().CenterWindow()
调用,但在我看来,这有点笨拙。
相反,只需 #include "propertysheetex.h"
并将 CPropertySheetEx
作为标准 WTL CPropertySheet
类的直接替代品使用。
代码
该类的实际代码很简单
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; } } };