254 lines
6.6 KiB
C++
254 lines
6.6 KiB
C++
// DeriveDlg.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "ItemTips.h"
|
|
#include "DerivedDlg.h"
|
|
|
|
#include "UTBStrOp.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
IMPLEMENT_DYNCREATE(CDerivedDlg, CPropertyPage)
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CDerivedDlg dialog
|
|
|
|
|
|
CDerivedDlg::CDerivedDlg():CPropertyPage(CDerivedDlg::IDD)
|
|
{
|
|
//{{AFX_DATA_INIT(CDerivedDlg)
|
|
m_clrBackground = 0;
|
|
m_sFontName = _T("");
|
|
m_bCustomize = FALSE;
|
|
m_bSmart = FALSE;
|
|
//}}AFX_DATA_INIT
|
|
|
|
m_pimagelist=NULL;
|
|
m_pimagelistSmall=NULL;
|
|
}
|
|
|
|
CDerivedDlg::~CDerivedDlg()
|
|
{
|
|
if((HFONT)m_font)
|
|
{
|
|
m_font.DeleteObject();
|
|
}
|
|
|
|
if(m_pimagelist)
|
|
delete m_pimagelist;
|
|
if(m_pimagelistSmall)
|
|
delete m_pimagelistSmall;
|
|
}
|
|
|
|
|
|
void CDerivedDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CPropertyPage::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CDerivedDlg)
|
|
DDX_Control(pDX, IDC_CHECK_SMART, m_btnSmart);
|
|
DDX_Control(pDX, IDC_BUTTON_TEXTFONT, m_btnTextFont);
|
|
DDX_Control(pDX, IDC_BUTTON_BKCOLOR, m_btnBkColor);
|
|
DDX_Control(pDX, IDC_LIST_STANDARD, m_listStandard);
|
|
DDX_Text(pDX, IDC_EDIT_BKCOLOR, m_clrBackground);
|
|
DDX_Text(pDX, IDC_EDIT_TEXTFONT, m_sFontName);
|
|
DDX_Check(pDX, IDC_CHECK_CUSTOMIZE, m_bCustomize);
|
|
DDX_Check(pDX, IDC_CHECK_SMART, m_bSmart);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CDerivedDlg, CPropertyPage)
|
|
//{{AFX_MSG_MAP(CDerivedDlg)
|
|
ON_BN_CLICKED(IDC_BUTTON_BKCOLOR, OnButtonBkcolor)
|
|
ON_BN_CLICKED(IDC_BUTTON_TEXTFONT, OnButtonTextfont)
|
|
ON_BN_CLICKED(IDC_CHECK_CUSTOMIZE, OnCheckCustomize)
|
|
ON_BN_CLICKED(IDC_CHECK_SMART, OnCheckSmart)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CDerivedDlg message handlers
|
|
|
|
BOOL CDerivedDlg::OnInitDialog()
|
|
{
|
|
CPropertyPage::OnInitDialog();
|
|
|
|
// TODO: Add extra initialization here
|
|
|
|
CItemTipsApp* pApp = (CItemTipsApp*)AfxGetApp();
|
|
// start the random number generator
|
|
srand((unsigned) time(NULL));
|
|
m_pimagelist = new CImageList();
|
|
m_pimagelistSmall = new CImageList();
|
|
// no serious allocation failure checking
|
|
ASSERT(m_pimagelist != NULL && m_pimagelistSmall != NULL);
|
|
m_pimagelist->Create(32, 32, TRUE/*bMask*/, LISTICONCOUNT/*nInitial*/, 4/*nGrow*/);
|
|
m_pimagelistSmall->Create(16, 16, TRUE/*bMask*/, LISTICONCOUNT, 4);
|
|
m_pimagelist->Add(pApp->LoadIcon(IDI_ICONLIST1));
|
|
m_pimagelist->Add(pApp->LoadIcon(IDI_ICONLIST2));
|
|
m_pimagelist->Add(pApp->LoadIcon(IDI_ICONLIST3));
|
|
m_pimagelist->Add(pApp->LoadIcon(IDI_ICONLIST4));
|
|
m_pimagelistSmall->Add(pApp->LoadIcon(IDI_ICONLIST1));
|
|
m_pimagelistSmall->Add(pApp->LoadIcon(IDI_ICONLIST2));
|
|
m_pimagelistSmall->Add(pApp->LoadIcon(IDI_ICONLIST3));
|
|
m_pimagelistSmall->Add(pApp->LoadIcon(IDI_ICONLIST4));
|
|
|
|
FillListCtrl();
|
|
|
|
GetVars();
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void CDerivedDlg::FillListCtrl()
|
|
{
|
|
CRect rect;
|
|
int i, iIcon, iItem, iSubItem, iActualItem;
|
|
LV_ITEM lvitem;
|
|
LV_COLUMN lvcolumn;
|
|
TCHAR rgtsz[2][10] = {_T("MAIN ITEM"), _T("SUB_ITEM")};
|
|
CItemTipsApp *pApp;
|
|
TCHAR rgtszIconDescrip[LISTICONCOUNT][50], rgtszIconShortDesc[LISTICONCOUNT][12];
|
|
|
|
ASSERT(LISTICONCOUNT == 4);
|
|
UTBStr::tcscpy(rgtszIconDescrip[0], 50, _T("Blue Ellipse, Yellow Triangle, Red Rectangle"));
|
|
UTBStr::tcscpy(rgtszIconDescrip[1], 50, _T("Yellow Ellipse, Red Triangle, Blue Rectangle"));
|
|
UTBStr::tcscpy(rgtszIconDescrip[2], 50, _T("Red Ellipse, Blue Triangle, Yellow Rectangle"));
|
|
UTBStr::tcscpy(rgtszIconDescrip[3], 50, _T("Red Ellipse, Yellow Triangle, Blue Rectangle"));
|
|
|
|
UTBStr::tcscpy(rgtszIconShortDesc[0], 12, _T("BE, YT, RR"));
|
|
UTBStr::tcscpy(rgtszIconShortDesc[1], 12, _T("YE, RT, BR"));
|
|
UTBStr::tcscpy(rgtszIconShortDesc[2], 12, _T("RE, BT, YR"));
|
|
UTBStr::tcscpy(rgtszIconShortDesc[3], 12, _T("RE, YT, BR"));
|
|
|
|
|
|
pApp = (CItemTipsApp*)AfxGetApp();
|
|
m_listStandard.SetImageList(m_pimagelist, LVSIL_NORMAL);
|
|
m_listStandard.SetImageList(m_pimagelistSmall, LVSIL_SMALL);
|
|
m_listStandard.GetWindowRect(&rect);
|
|
|
|
for (i = 0; i < 2; i++) // add the columns to the list control
|
|
{
|
|
lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH;
|
|
lvcolumn.fmt = LVCFMT_LEFT;
|
|
lvcolumn.pszText = rgtsz[i];
|
|
lvcolumn.iSubItem = i;
|
|
lvcolumn.cx = rect.Width() * (i + 1) / 3; // SubItem is twice as large
|
|
m_listStandard.InsertColumn(i, &lvcolumn); // assumes return value is OK.
|
|
}
|
|
|
|
for (iItem = 0; iItem < 50; iItem++) // will now insert the items and subitems into the list view.
|
|
for (iSubItem = 0; iSubItem < 2; iSubItem++)
|
|
{
|
|
if (iSubItem == 0)
|
|
iIcon = rand() % 4; // choose the icon and legend for the entry
|
|
|
|
lvitem.mask = LVIF_TEXT | (iSubItem == 0 ? LVIF_IMAGE : 0);
|
|
lvitem.iItem = (iSubItem == 0) ? iItem : iActualItem;
|
|
lvitem.iSubItem = iSubItem;
|
|
lvitem.pszText = iSubItem == 0 ? rgtszIconShortDesc[iIcon] : rgtszIconDescrip[iIcon];
|
|
|
|
lvitem.iImage = iIcon;
|
|
if (iSubItem == 0)
|
|
iActualItem = m_listStandard.InsertItem(&lvitem);
|
|
else
|
|
m_listStandard.SetItem(&lvitem);
|
|
}
|
|
}
|
|
|
|
|
|
void CDerivedDlg::OnButtonBkcolor()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
|
|
// use standard CColorDialog to change item tip window's background color
|
|
CColorDialog clrDlg(m_clrBackground);
|
|
if(clrDlg.DoModal()==IDOK)
|
|
{
|
|
m_clrBackground=clrDlg.GetColor();
|
|
UpdateData(FALSE);
|
|
}
|
|
}
|
|
|
|
void CDerivedDlg::OnButtonTextfont()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
|
|
UpdateData(TRUE);
|
|
|
|
// Use font common dialog to change font and text color
|
|
LOGFONT lf;
|
|
BOOL bLogFont=FALSE;
|
|
if((HFONT)m_font)
|
|
{
|
|
if(m_font.GetLogFont(&lf)!=0)
|
|
{
|
|
bLogFont=TRUE;
|
|
}
|
|
}
|
|
CFontDialog fontDlg(bLogFont ? &lf : NULL);
|
|
fontDlg.m_cf.rgbColors=m_clrText;
|
|
if(fontDlg.DoModal()==IDOK)
|
|
{
|
|
m_clrText=fontDlg.GetColor();
|
|
fontDlg.GetCurrentFont(&lf);
|
|
m_sFontName=lf.lfFaceName;
|
|
if((HFONT)m_font)
|
|
{
|
|
m_font.DeleteObject();
|
|
}
|
|
m_font.CreateFontIndirect(&lf);
|
|
UpdateData(FALSE);
|
|
}
|
|
}
|
|
|
|
void CDerivedDlg::OnCheckCustomize()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
|
|
SetVars();
|
|
}
|
|
|
|
void CDerivedDlg::OnCheckSmart()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
|
|
SetVars();
|
|
}
|
|
|
|
void CDerivedDlg::GetVars()
|
|
{
|
|
// fill with values from CListCtrl
|
|
m_clrBackground=m_listStandard.GetBkColor();
|
|
m_clrText=m_listStandard.GetTextColor();
|
|
m_sFontName.Empty();
|
|
|
|
UpdateData(FALSE);
|
|
|
|
ShowControls();
|
|
}
|
|
|
|
void CDerivedDlg::SetVars()
|
|
{
|
|
UpdateData();
|
|
ShowControls();
|
|
}
|
|
|
|
void CDerivedDlg::ShowControls()
|
|
{
|
|
UpdateData(TRUE);
|
|
|
|
m_btnBkColor.EnableWindow(m_bCustomize);
|
|
m_btnTextFont.EnableWindow(m_bCustomize);
|
|
m_btnSmart.EnableWindow(m_bCustomize);
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
|