WindowsXP-SP1/admin/hmonitor/hmlistview/titlebarctrl.cpp
2020-09-30 16:53:49 +02:00

114 lines
2.4 KiB
C++

// 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);
}