⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 manyctrls.cpp

📁 MFC窗口程序设计源代码。相信大家看得懂。
💻 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 + -