| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- #include "stdafx.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, (int)_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;
- }
|