📄 manyctrls.cpp
字号:
// ManyCtrls.cpp : implementation file
//
#include "stdafx.h"
#include <afxsock.h> // MFC socket extensions
#include "..\CommonCtrls.h"
#include "ManyCtrls.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CManyCtrls property page
IMPLEMENT_DYNCREATE(CManyCtrls, CPropertyPage)
CManyCtrls::CManyCtrls() : CPropertyPage(CManyCtrls::IDD)
{
//{{AFX_DATA_INIT(CManyCtrls)
//}}AFX_DATA_INIT
WSADATA wsaData;
WSAStartup(MAKEWORD(1,1),&wsaData);
m_ProcessPos=0;
m_ListBoxCount=0;
m_pMonthFont = NULL;
}
CManyCtrls::~CManyCtrls()
{
WSACleanup();
delete m_pMonthFont;
}
void CManyCtrls::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CManyCtrls)
DDX_Control(pDX, IDC_RADIO1, m_Radio);
DDX_Control(pDX, IDC_COMBOBOXEX1, m_ComboBoxEx);
DDX_Control(pDX, IDC_EDIT1, m_BuddyEdit);
DDX_Control(pDX, IDC_SLIDER1, m_SliderCtrl);
DDX_Control(pDX, IDC_SPIN1, m_SpinButtonCtrl);
DDX_Control(pDX, IDC_LIST1, m_ListBox);
DDX_Control(pDX, IDC_COMBO1, m_ComboBox);
DDX_Control(pDX, IDC_PROGRESS1, m_ProgressCtrl);
DDX_Control(pDX, IDC_DATETIMEPICKER1, m_DateTimeCtrl);
DDX_Control(pDX, IDC_IPADDRESS1, m_IPAddressCtrl);
DDX_Control(pDX, IDC_ANIMATE1, m_AnimateCtrl);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CManyCtrls, CPropertyPage)
//{{AFX_MSG_MAP(CManyCtrls)
ON_NOTIFY(DTN_CLOSEUP, IDC_DATETIMEPICKER1, OnCloseupDatetimepicker1)
ON_CBN_CLOSEUP(IDC_COMBO1, OnCloseupCombo1)
ON_WM_TIMER()
ON_WM_HSCROLL()
ON_BN_CLICKED(IDC_RADIO1, OnRadio1)
ON_BN_CLICKED(IDC_RADIO3, OnRadio3)
ON_NOTIFY(DTN_DROPDOWN, IDC_DATETIMEPICKER1, OnDropdownDatetimepicker1)
ON_WM_VSCROLL()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CManyCtrls message handlers
BOOL CManyCtrls::OnInitDialog()
{
CPropertyPage::OnInitDialog();
// TODO: Add extra initialization here
//AnimateCtrl
m_AnimateCtrl.Open(IDR_AVI1);
// m_AnimateCtrl.Play(0,-1,-1);//设置了自动播放风格
//IP
char szHostName[128];
if( gethostname(szHostName, 128) == 0 )
{
// Get host adresses
struct hostent * pHost;
pHost = gethostbyname(szHostName);
for(int i = 0; pHost!= NULL && pHost->h_addr_list[i]!= NULL; i++ )
{
unsigned char *pIP = (unsigned char*)pHost->h_addr_list[i];
m_IPAddressCtrl.SetAddress(*pIP,*(pIP+1),*(pIP+2),*(pIP+3));
}
}
//ProgressCtrl
m_ProgressCtrl.SetRange(0,100);
m_ProgressCtrl.SetPos(m_ProcessPos);
m_ProgressCtrl.SetStep(1);
SetTimer(0,100,NULL);
//SpinButtonCtrl
// m_SpinButtonCtrl.SetBuddy(&m_BuddyEdit);
m_SpinButtonCtrl.SetRange(0,100);
//SliderCtrl
m_SliderCtrl.SetRange(0,100,TRUE);
//鼠标翻页
m_SliderCtrl.SetPageSize(10);
//使用键盘移动
m_SliderCtrl.SetLineSize(1);
//ComboBoxEx
//创建新的图像列表
m_pImageList = new CImageList;
m_pImageList->Create(IDB_BITMAP_DEFAULT, 16,2, RGB(255, 0,255));
//设置透明背景
m_pImageList->SetBkColor( CLR_NONE );
//设置图像列表
m_ComboBoxEx.SetImageList(m_pImageList);
m_Radio.SetCheck(1);
CWnd* pWnd=(CWnd*)GetDlgItem(IDC_ANI_TEXT);
pWnd->ShowWindow(SW_HIDE);
pWnd=(CWnd*)GetDlgItem(IDC_ANIMATE1);
pWnd->ShowWindow(SW_HIDE);
//设置月历控件的字体
m_pMonthFont = new CFont;
LOGFONT lf;
memset(&lf, 0, sizeof(lf));
lf.lfHeight = -20;
lf.lfWidth = 0;
lf.lfWeight = FW_NORMAL;
lf.lfItalic = FALSE;
lf.lfUnderline = TRUE;
lf.lfStrikeOut = FALSE;
lf.lfEscapement = 0;
lf.lfOrientation = 0;
lstrcpy(lf.lfFaceName, _T("Verdana"));
if (m_pMonthFont->CreateFontIndirect(&lf))
{
//如果成功,则设置月历控件的字体
CDateTimeCtrl* pCtrl = (CDateTimeCtrl*) GetDlgItem(IDC_DATETIMEPICKER1);
ASSERT(pCtrl != NULL);
pCtrl->SetMonthCalFont((HFONT)m_pMonthFont->GetSafeHandle());
COLORREF clr= RGB(0, 192, 192);
pCtrl->SetMonthCalColor(MCSC_MONTHBK, clr);
}
else
{
//如果失败则清除字体
delete m_pMonthFont;
m_pMonthFont = NULL;
}
CScrollBar* pScrollBar=(CScrollBar*)GetDlgItem(IDC_SCROLLBAR2);
pScrollBar->SetScrollRange(0,100);
pScrollBar->SetScrollPos(0);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CManyCtrls::OnCloseupDatetimepicker1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CTime date;
m_DateTimeCtrl.GetTime(date);
CString strTime=date.Format("%Y-%m-%d");
//ComboBox
m_ComboBox.SetCurSel(m_ComboBox.AddString(strTime));
//ComboBoxEx
COMBOBOXEXITEM item;
item.mask =CBEIF_IMAGE |CBEIF_SELECTEDIMAGE | CBEIF_TEXT | CBEIF_LPARAM;
item.cchTextMax = 0;
item.iItem = -1;
item.pszText = (LPSTR)(LPCSTR)strTime;
//随机种子
srand( (unsigned)time(NULL));
item.iImage=(int)((float)rand()*m_ComboBoxEx.GetCount()/(float)RAND_MAX);
item.iSelectedImage=(int)((float)rand()*m_ComboBoxEx.GetCount()/(float)RAND_MAX);
item.iOverlay=(int)((float)rand()*m_ComboBoxEx.GetCount()/(float)RAND_MAX);
item.lParam = ( LPARAM )(LPCSTR)strTime;
//插入列表项
m_ComboBoxEx.SetCurSel(m_ComboBoxEx.InsertItem(&item));
*pResult = 0;
}
void CManyCtrls::OnCloseupCombo1()
{
// TODO: Add your control notification handler code here
CString str;
int index=m_ComboBox.GetCurSel();
if(index!=CB_ERR)
{
m_ComboBox.GetLBText(index,str);
m_ListBox.AddString(str);
m_ListBoxCount++;
}
}
void CManyCtrls::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
m_ProgressCtrl.StepIt();
m_ProcessPos=m_ProgressCtrl.GetPos();
if(m_ProcessPos==100)
{
for(int i=0;i<m_ListBoxCount;i++)
m_ListBox.DeleteString(m_ListBoxCount-1-i);
}
CPropertyPage::OnTimer(nIDEvent);
}
void CManyCtrls::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
int ctrID=pScrollBar->GetDlgCtrlID();
switch(ctrID)
{
case IDC_SLIDER1:
{
//强制转换,关于这个请参看MSDN说明
CSliderCtrl* pSlidCtrl=(CSliderCtrl*)pScrollBar;
//设置滑动条位置
CString str;
str.Format("%d",pSlidCtrl->GetPos());
m_BuddyEdit.SetWindowText(str);
break;
}
default:
break;
}
CPropertyPage::OnHScroll(nSBCode, nPos, pScrollBar);
}
BOOL CManyCtrls::DestroyWindow()
{
// TODO: Add your specialized code here and/or call the base class
KillTimer(0);
if( m_pImageList != NULL )
{
m_pImageList->Detach();
delete m_pImageList;
}
return CPropertyPage::DestroyWindow();
}
void CManyCtrls::OnRadio1()
{
// TODO: Add your control notification handler code here
//显示图片控件
CWnd* pWnd=(CWnd*)GetDlgItem(IDC_STATIC_PICTURE);
pWnd->ShowWindow(SW_SHOW);
pWnd=(CWnd*)GetDlgItem(IDC_PICTURE_TEXT);
pWnd->ShowWindow(SW_SHOW);
//隐藏动画控件
pWnd=(CWnd*)GetDlgItem(IDC_ANI_TEXT);
pWnd->ShowWindow(SW_HIDE);
pWnd=(CWnd*)GetDlgItem(IDC_ANIMATE1);
pWnd->ShowWindow(SW_HIDE);
}
void CManyCtrls::OnRadio3()
{
// TODO: Add your control notification handler code here
CWnd* pWnd=(CWnd*)GetDlgItem(IDC_STATIC_PICTURE);
pWnd->ShowWindow(SW_HIDE);
pWnd=(CWnd*)GetDlgItem(IDC_PICTURE_TEXT);
pWnd->ShowWindow(SW_HIDE);
pWnd=(CWnd*)GetDlgItem(IDC_ANI_TEXT);
pWnd->ShowWindow(SW_SHOW);
pWnd=(CWnd*)GetDlgItem(IDC_ANIMATE1);
pWnd->ShowWindow(SW_SHOW);
}
void CManyCtrls::OnDropdownDatetimepicker1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
//set the background color of the month to gray
//设置月历控件的第一天并更改字体颜色
CDateTimeCtrl* pCtrl = (CDateTimeCtrl*) GetDlgItem(IDC_DATETIMEPICKER1);
ASSERT(pCtrl != NULL);
CMonthCalCtrl* pMonCtrl=(CMonthCalCtrl*)pCtrl->GetMonthCalCtrl();
pMonCtrl->SetFirstDayOfWeek(0);
pMonCtrl->SetColor(MCSC_TEXT,RGB(100,0,255));
*pResult = 0;
}
void CManyCtrls::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
int ctrID=pScrollBar->GetDlgCtrlID();
CString str;
switch(ctrID)
{
case IDC_SCROLLBAR2:
{
int pos=pScrollBar->GetScrollPos();
switch (nSBCode)
{
case SB_LINEUP:
pos -= 1;
break;
case SB_LINEDOWN:
pos += 1;
break;
case SB_PAGEUP:
pos -= 10;
break;
case SB_PAGEDOWN:
pos += 10;
break;
case SB_TOP:
pos = 0;
break;
case SB_BOTTOM:
pos = 100;
break;
case SB_THUMBPOSITION:
pos = nPos;
break;
}
if(pos<0)
pos =0;
else if ( pos >100)
pos = 100;
pScrollBar->SetScrollPos(pos);
str.Format("滚动条的当前值为:%d",pos);
m_BuddyEdit.SetWindowText(str);
break;
}
case IDC_SPIN1:
{
CSpinButtonCtrl* pSpin=(CSpinButtonCtrl*)pScrollBar;
int nPosition;
nPosition=pSpin->GetPos();
str.Format("调节钮的当前值为:%d",nPosition);
AfxMessageBox(str);
break;
}
}
CPropertyPage::OnVScroll(nSBCode, nPos, pScrollBar);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -