|
// HListBox.cpp : implementation file
//
#include "stdafx.h"
#include "hscroll.h"
#include "HListBox.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CHListBox
CHListBox::CHListBox()
{
width = 0;
}
CHListBox::~CHListBox()
{
}
BEGIN_MESSAGE_MAP(CHListBox, CListBox)
//{{AFX_MSG_MAP(CHListBox)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CHListBox message handlers
void CHListBox::updateWidth(LPCTSTR s)
{
CClientDC dc(this);
CFont * f = CListBox::GetFont();
dc.SelectObject(f);
CSize sz = dc.GetTextExtent(s, _tcslen(s));
sz.cx += 3 * ::GetSystemMetrics(SM_CXBORDER);
if(sz.cx > width)
{ /* extend */
width = sz.cx;
CListBox::SetHorizontalExtent(width);
} /* extend */
}
int CHListBox::AddString(LPCTSTR s)
{
int result = CListBox::AddString(s);
if(result < 0)
return result;
updateWidth(s);
return result;
}
int CHListBox::InsertString(int i, LPCTSTR s)
{
int result = CListBox::InsertString(i, s);
if(result < 0)
return result;
updateWidth(s);
return result;
}
void CHListBox::ResetContent()
{
CListBox::ResetContent();
width = 0;
}
int CHListBox::DeleteString(int n)
{
int result = CListBox::DeleteString(n);
if(result < 0)
return result;
CClientDC dc(this);
CFont * f = CListBox::GetFont();
dc.SelectObject(f);
width = 0;
for(int i = 0; i < CListBox::GetCount(); i++)
{ /* scan strings */
CString s;
CListBox::GetText(i, s);
CSize sz = dc.GetTextExtent(s);
sz.cx += 3 * ::GetSystemMetrics(SM_CXBORDER);
if(sz.cx > width)
width = sz.cx;
} /* scan strings */
CListBox::SetHorizontalExtent(width);
return result;
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.