// TitlebarCtrl.cpp: implementation of the CTitlebarCtrl class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "hmlistview.h" #include "TitlebarCtrl.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif IMPLEMENT_DYNCREATE(CTitlebarCtrl, CReBarCtrl) ///////////////////////////////////////////////////////////////////////////// // Message map BEGIN_MESSAGE_MAP(CTitlebarCtrl, CReBarCtrl) //{{AFX_MSG_MAP(CTitlebarCtrl) ON_WM_CREATE() //}}AFX_MSG_MAP END_MESSAGE_MAP() ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CTitlebarCtrl::CTitlebarCtrl() { } CTitlebarCtrl::~CTitlebarCtrl() { } int CTitlebarCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CReBarCtrl::OnCreate(lpCreateStruct) == -1) return -1; REBARINFO rbi; ZeroMemory(&rbi,sizeof(REBARINFO)); rbi.cbSize = sizeof(REBARINFO); SetBarInfo(&rbi); CreateTitleBand(); ShowWindow(SW_SHOW); UpdateWindow(); return 0; } // Title Band CString CTitlebarCtrl::GetTitleText() { CString sText; REBARBANDINFO rbbi; ZeroMemory(&rbbi,sizeof(rbbi)); rbbi.cbSize = sizeof(REBARBANDINFO); rbbi.fMask = RBBIM_TEXT; rbbi.lpText = sText.GetBuffer(255); rbbi.cch = 255; GetBandInfo(0,&rbbi); sText.ReleaseBuffer(); return sText; } void CTitlebarCtrl::SetTitleText(const CString& sTitle) { CClientDC dc(this); CSize size = dc.GetTextExtent(sTitle); REBARBANDINFO rbbi; ZeroMemory(&rbbi,sizeof(rbbi)); rbbi.cbSize = sizeof(REBARBANDINFO); rbbi.fMask = RBBIM_TEXT | RBBIM_SIZE; rbbi.lpText = (LPTSTR)(LPCTSTR)sTitle; rbbi.cx = size.cx + 100; SetBandInfo(0,&rbbi); } inline int CTitlebarCtrl::CreateTitleBand() { CString sText; sText.LoadString(IDS_STRING_TITLE); CClientDC dc(this); CSize size = dc.GetTextExtent(sText); REBARBANDINFO rbbi; ZeroMemory(&rbbi,sizeof(rbbi)); rbbi.cbSize = sizeof(REBARBANDINFO); rbbi.fMask = RBBIM_TEXT | RBBIM_STYLE | RBBIM_COLORS | RBBIM_SIZE; rbbi.lpText = (LPTSTR)(LPCTSTR)sText; rbbi.fStyle = RBBS_NOGRIPPER; rbbi.clrFore = GetSysColor(COLOR_HIGHLIGHTTEXT); rbbi.clrBack = GetSysColor(COLOR_INACTIVECAPTION); rbbi.cx = size.cx + 100; return InsertBand(-1,&rbbi); }