sampledlg.cpp
来自「关于使用VC编程的代码」· C++ 代码 · 共 367 行
CPP
367 行
// SampleDlg.cpp : implementation file
//
#include "stdafx.h"
#include "General_Control.h"
#include "SampleDlg.h"
#include "CityDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSampleDlg dialog
CSampleDlg::CSampleDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSampleDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CSampleDlg)
m_strCity = _T("");
m_strColor = _T("");
m_nIntVal = 0;
m_nScrollNumber = 0;
//}}AFX_DATA_INIT
}
void CSampleDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSampleDlg)
DDX_CBString(pDX, IDC_CITY_COMBO, m_strCity);
DDX_LBString(pDX, IDC_COLOR_LIST, m_strColor);
DDX_Text(pDX, IDC_INT_EDIT, m_nIntVal);
DDV_MinMaxInt(pDX, m_nIntVal, 0, 100);
DDX_Scroll(pDX, IDC_NUMBER_SCROLLBAR, m_nScrollNumber);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSampleDlg, CDialog)
//{{AFX_MSG_MAP(CSampleDlg)
ON_WM_HSCROLL()
ON_BN_CLICKED(IDC_ADD_BUTTON, OnAddButton)
ON_BN_CLICKED(IDC_DELETE_BUTTON, OnDeleteButton)
ON_NOTIFY(NM_CLICK, IDC_CITY_LIST, OnClickCityList)
ON_EN_CHANGE(IDC_INT_EDIT, OnChangeIntEdit)
ON_EN_UPDATE(IDC_INT_EDIT, OnUpdateIntEdit)
ON_WM_SHOWWINDOW()
ON_NOTIFY(TCN_SELCHANGE, IDC_PLACE_TAB, OnSelchangePlaceTab)
ON_NOTIFY(TCN_SELCHANGING, IDC_PLACE_TAB, OnSelchangingPlaceTab)
ON_NOTIFY(TVN_SELCHANGED, IDC_TREE1, OnSelchangedTree1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSampleDlg message handlers
BOOL CSampleDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CSpinButtonCtrl* pSpin = (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN1);
pSpin->SetRange(0,100);
pSpin->SetPos(0);
CListBox* pListBox = (CListBox *)GetDlgItem(IDC_COLOR_LIST);
pListBox->InsertString(-1,"Red");
pListBox->InsertString(-1,"Green");
pListBox->InsertString(-1,"Blue");
CScrollBar* pBar = (CScrollBar *)GetDlgItem(IDC_NUMBER_SCROLLBAR);
pBar->SetScrollRange(nMin,nMax);
pBar->SetScrollPos( (nMin + nMax)/2 );
CString str;
str.Format("%d",(nMin + nMax)/2);
SetDlgItemText(IDC_NUMBER_STATIC, str);
CListCtrl* pListCtrl = (CListCtrl *)GetDlgItem(IDC_CITY_LIST);
pListCtrl->InsertItem(0,"ShangHai");
pListCtrl->InsertItem(1,"GuangZhou");
GetDlgItem(IDC_DELETE_BUTTON)->EnableWindow( pListCtrl->GetSelectedCount() > 0 );
CProgressCtrl* pProgCtrl = (CProgressCtrl *)GetDlgItem(IDC_PROGRESS);
pProgCtrl->SetRange(0,100);
pProgCtrl->SetPos(0);
CTabCtrl* pTabCtrl = (CTabCtrl*)GetDlgItem(IDC_PLACE_TAB);
TC_ITEM tci;
tci.mask = TCIF_TEXT;
tci.pszText = "Page 0";
pTabCtrl->InsertItem(0,&tci);
tci.pszText = "Page 1";
pTabCtrl->InsertItem(1,&tci);
tci.pszText = "Page 2";
pTabCtrl->InsertItem(2,&tci);
HICON hIcon[8];
int n;
m_imageList.Create(16, 16, 0, 8, 8);
hIcon[0] = AfxGetApp()->LoadIcon(IDI_WHITE);
hIcon[1] = AfxGetApp()->LoadIcon(IDI_BLACK);
hIcon[2] = AfxGetApp()->LoadIcon(IDI_RED);
hIcon[3] = AfxGetApp()->LoadIcon(IDI_BLUE);
hIcon[4] = AfxGetApp()->LoadIcon(IDI_YELLOW);
hIcon[5] = AfxGetApp()->LoadIcon(IDI_CYAN);
hIcon[6] = AfxGetApp()->LoadIcon(IDI_PURPLE);
hIcon[7] = AfxGetApp()->LoadIcon(IDI_GREEN);
for (n = 0; n < 8; n++) {
m_imageList.Add(hIcon[n]);
}
static char* color[] = {"white", "black", "red",
"blue", "yellow", "cyan",
"purple", "green"};
CListCtrl* pList =
(CListCtrl*) GetDlgItem(IDC_TREE1);
pList->SetImageList(&m_imageList, LVSIL_SMALL);
for (n = 0; n < 8; n++) {
pList->InsertItem(n, color[n], n);
}
pList->SetBkColor(RGB(0, 255, 255));
pList->SetTextBkColor(RGB(0, 255, 255));
CTreeCtrl* pTree =
(CTreeCtrl*) GetDlgItem(IDC_TREE1);
pTree->SetImageList(&m_imageList, TVSIL_NORMAL);
TV_INSERTSTRUCT tvinsert;
tvinsert.hParent = NULL;
tvinsert.hInsertAfter = TVI_LAST;
tvinsert.item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE
| TVIF_TEXT;
tvinsert.item.hItem = NULL;
tvinsert.item.state = 0;
tvinsert.item.stateMask = 0;
tvinsert.item.cchTextMax = 6;
tvinsert.item.iSelectedImage = 1;
tvinsert.item.cChildren = 0;
tvinsert.item.lParam = 0;
tvinsert.item.pszText = "Animal";
tvinsert.item.iImage = 2;
HTREEITEM hTop1 = pTree ->InsertItem(&tvinsert);
tvinsert.item.pszText = "Plant";
HTREEITEM hTop2 = pTree->InsertItem(&tvinsert);
tvinsert.hParent = hTop1;
tvinsert.item.pszText = "Wolf";
tvinsert.item.iImage = 3;
pTree->InsertItem(&tvinsert);
tvinsert.item.pszText = "Rabbit";
pTree->InsertItem(&tvinsert);
tvinsert.hParent = hTop2;
tvinsert.item.pszText = "Tree";
tvinsert.item.iImage = 4;
pTree->InsertItem(&tvinsert);
tvinsert.item.pszText = "Bamboo";
pTree->InsertItem(&tvinsert);
tvinsert.item.pszText = "Flower";
HTREEITEM hOther = pTree->InsertItem(&tvinsert);
tvinsert.hParent = hOther;
tvinsert.item.pszText = "Rose";
tvinsert.item.iImage = 7;
pTree->InsertItem(&tvinsert);
tvinsert.item.pszText = "Lotus";
pTree->InsertItem(&tvinsert);
SetDlgItemText(IDC_STATIC_TREE, "");
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CSampleDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
int nTemp1, nTemp2;
nTemp1 = pScrollBar->GetScrollPos();
switch(nSBCode) {
case SB_THUMBPOSITION:
pScrollBar->SetScrollPos(nPos);
break;
case SB_LINELEFT: // left arrow button
nTemp2 = (nMax - nMin) / 10;
if ((nTemp1 - nTemp2) > nMin) {
nTemp1 -= nTemp2;
}
else {
nTemp1 = nMin;
}
pScrollBar->SetScrollPos(nTemp1);
break;
case SB_LINERIGHT: // right arrow button
nTemp2 = (nMax - nMin) / 10;
if ((nTemp1 + nTemp2) < nMax) {
nTemp1 += nTemp2;
}
else {
nTemp1 = nMax;
}
pScrollBar->SetScrollPos(nTemp1);
break;
}
CString str;
UpdateData(TRUE);
str.Format("%d", m_nScrollNumber);
GetDlgItem(IDC_NUMBER_STATIC)->SetWindowText(str);
}
void CSampleDlg::OnAddButton()
{
CCityDlg dlg;
if( dlg.DoModal() == IDOK )
{
CListCtrl* pListCtrl = (CListCtrl *)GetDlgItem(IDC_CITY_LIST);
pListCtrl->InsertItem(pListCtrl->GetItemCount(), dlg.m_strCity);
pListCtrl->Update(pListCtrl->GetItemCount());
}
}
void CSampleDlg::OnDeleteButton()
{
if( AfxMessageBox("Are you sure to delete the selected item?", MB_OKCANCEL) == IDOK )
{
CListCtrl* pListCtrl = (CListCtrl *)GetDlgItem(IDC_CITY_LIST);
int i = pListCtrl->GetNextItem(-1, LVNI_ALL | LVNI_SELECTED);
pListCtrl->DeleteItem( i );
pListCtrl->RedrawItems(0, pListCtrl->GetItemCount());
GetDlgItem(IDC_DELETE_BUTTON)->EnableWindow(FALSE);
}
}
void CSampleDlg::OnClickCityList(NMHDR* pNMHDR, LRESULT* pResult)
{
CListCtrl* pListCtrl = (CListCtrl *)GetDlgItem(IDC_CITY_LIST);
GetDlgItem(IDC_DELETE_BUTTON)->EnableWindow( pListCtrl->GetSelectedCount() > 0 );
*pResult = 0;
}
void CSampleDlg::OnChangeIntEdit()
{
UpdateData(TRUE);
CProgressCtrl* pProgCtrl = (CProgressCtrl *)GetDlgItem(IDC_PROGRESS);
if(pProgCtrl != NULL)
{
pProgCtrl->SetPos(m_nIntVal);
}
}
void CSampleDlg::OnUpdateIntEdit()
{
/* UpdateData(TRUE);
CProgressCtrl* pProgCtrl = (CProgressCtrl *)GetDlgItem(IDC_PROGRESS);
if(pProgCtrl != NULL)
{
pProgCtrl->SetPos(m_nIntVal);
}
*/
}
void CSampleDlg::OnShowWindow(BOOL bShow, UINT nStatus)
{
CDialog::OnShowWindow(bShow, nStatus);
CTabCtrl* pTabCtrl = (CTabCtrl*)GetDlgItem(IDC_PLACE_TAB);
if( bShow == TRUE )
{
m_FirstDlg.Create(IDD_DIALOG1, GetDlgItem(IDC_PLACE_TAB));//pTabCtrl->GetActiveWindow());
m_FirstDlg.ShowWindow(SW_SHOW);
m_SecondDlg.Create(IDD_DIALOG2, GetDlgItem(IDC_PLACE_TAB));//pTabCtrl->GetActiveWindow());
m_SecondDlg.ShowWindow(SW_HIDE);
m_ThirdDlg.Create(IDD_DIALOG3, GetDlgItem(IDC_PLACE_TAB));//pTabCtrl->GetActiveWindow());
m_ThirdDlg.ShowWindow(SW_HIDE);
}
}
void CSampleDlg::OnSelchangePlaceTab(NMHDR* pNMHDR, LRESULT* pResult)
{
CTabCtrl* pTabCtrl = (CTabCtrl*)GetDlgItem(IDC_PLACE_TAB);
switch( pTabCtrl->GetCurSel() )
{
case 0:
{
m_FirstDlg.ShowWindow( SW_SHOW );
m_SecondDlg.ShowWindow( SW_HIDE );
m_ThirdDlg.ShowWindow( SW_HIDE );
break;
}
case 1:
{
m_FirstDlg.ShowWindow( SW_HIDE );
m_SecondDlg.ShowWindow( SW_SHOW );
m_ThirdDlg.ShowWindow( SW_HIDE );
break;
}
case 2:
{
m_FirstDlg.ShowWindow( SW_HIDE );
m_SecondDlg.ShowWindow( SW_HIDE );
m_ThirdDlg.ShowWindow( SW_SHOW );
break;
}
}
*pResult = 0;
}
void CSampleDlg::OnSelchangingPlaceTab(NMHDR* pNMHDR, LRESULT* pResult)
{
/* CTabCtrl* pTabCtrl = (CTabCtrl*)GetDlgItem(IDC_PLACE_TAB);
switch( pTabCtrl->GetCurSel() )
{
case 0:
{
m_FirstDlg.ShowWindow( SW_SHOW );
m_SecondDlg.ShowWindow( SW_HIDE );
m_ThirdDlg.ShowWindow( SW_HIDE );
break;
}
case 1:
{
m_FirstDlg.ShowWindow( SW_HIDE );
m_SecondDlg.ShowWindow( SW_SHOW );
m_ThirdDlg.ShowWindow( SW_HIDE );
break;
}
case 2:
{
// m_FirstDlg.ShowWindow( SW_HIDE );
// m_SecondDlg.ShowWindow( SW_HIDE );
m_ThirdDlg.ShowWindow( SW_SHOW );
break;
}
}
*/ *pResult = 0;
}
void CSampleDlg::OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
CTreeCtrl* pTree =
(CTreeCtrl*) GetDlgItem(IDC_TREE1);
HTREEITEM hSelected = pNMTreeView->itemNew.hItem;
if (hSelected != NULL) {
char text[31];
TV_ITEM item;
item.mask = TVIF_HANDLE | TVIF_TEXT;
item.hItem = hSelected;
item.pszText = text;
item.cchTextMax = 30;
VERIFY(pTree->GetItem(&item));
SetDlgItemText(IDC_STATIC_TREE, text);
}
*pResult = 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?