windows可视化编程(6)

这章总结下mfc常用的控件,控件比较多,给出一些常见的模板

①button

对于普通按钮最常见的就是点击事件了

void CMy9_1Dlg::OnButton1() 
{
	// TODO: Add your control notification handler code here
	m_btn1.SetWindowText("你已按下了按钮!");//设置按钮上的文字
}

单选按钮可以设置一个组,这样一个组就可以绑定一个变量,值为0,1,2,3表示第1,2,3个按钮

void CMy9_1Dlg::OnCheck1() 
{
	// TODO: Add your control notification handler code here
	if(m_chk1.GetCheck()>0)
	    m_chk1.SetCheck(0);
     else
        m_chk1.SetCheck(1);//单选按钮的setcheck函数,点击选中
}
②slidebar

初始设置

// TODO: Add extra initialization here
	m_Scrollbar.SetScrollRange(0,20);//设置滑动条范围
	m_Scrollbar.SetScrollPos(10);//初始的位置
	char sPos[10];
	itoa(m_Scrollbar.GetScrollPos(),sPos,10);	//10代表10进制数
	m_Edit.SetSel(0,-1);//编辑框选中全部
	m_Edit.ReplaceSel(sPos);//替代选中文字
	UpdateData(FALSE);//将成员变量的值赋值给控件
滚蛋滑条的设置
void CMy9_2Dlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	// TODO: Add your message handler code here and/or call default
char sPos[10];
	int iNowPos;
	switch(nSBCode)
	{
		if(pScrollBar==&m_Scrollbar)
		{
			case SB_THUMBTRACK:		//拖动滚动滑块时
				m_Scrollbar.SetScrollPos(nPos);
				itoa(nPos,sPos,10);
				m_Edit.SetSel(0,-1);
				m_Edit.ReplaceSel(sPos);
			case SB_LINEDOWN:		//单击滚动条向下的箭头
				iNowPos=m_Scrollbar.GetScrollPos();
				iNowPos=iNowPos+1;
				if(iNowPos>20)
					iNowPos=20;
				m_Scrollbar.SetScrollPos(iNowPos);
				itoa(m_Scrollbar.GetScrollPos(),sPos,10);
				m_Edit.SetSel(0,-1);
				m_Edit.ReplaceSel(sPos);
				break;
			case SB_LINEUP:			//单击滚动条向上的箭头
				iNowPos=m_Scrollbar.GetScrollPos();
				iNowPos=iNowPos-1;
				if(iNowPos<0)
					iNowPos=0;
				m_Scrollbar.SetScrollPos(iNowPos);
				itoa(m_Scrollbar.GetScrollPos(),sPos,10);
				m_Edit.SetSel(0,-1);
				m_Edit.ReplaceSel(sPos);
				break;
			case SB_PAGEDOWN:		//单击滚动条下面的箭头与滚动块之间的区域
				iNowPos=m_Scrollbar.GetScrollPos();
				iNowPos=iNowPos+3;
				if(iNowPos>20)
					iNowPos=20;
				m_Scrollbar.SetScrollPos(iNowPos);
				itoa(m_Scrollbar.GetScrollPos(),sPos,10);
				m_Edit.SetSel(0,-1);
				m_Edit.ReplaceSel(sPos);
				break;
			case SB_PAGEUP:		//单击滚动条上面的箭头与滚动块之间的区域
				iNowPos=m_Scrollbar.GetScrollPos();
				iNowPos=iNowPos-3;
				if(iNowPos<0)
					iNowPos=0;
				m_Scrollbar.SetScrollPos(iNowPos);
				itoa(m_Scrollbar.GetScrollPos(),sPos,10);
				m_Edit.SetSel(0,-1);
				m_Edit.ReplaceSel(sPos);
				break;
			}
		}
	
	CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
}

④static
static可以用来加载图片,代码如下

m_bmp.ModifyStyle(0,SS_BITMAP);
HBITMAP hBmp=LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1));
m_bmp.SetBitmap(hBmp);
点击图片弹出消息

void CMy9_3Dlg::OnStaticBmp() 
{
	// TODO: Add your control notification handler code here
        BITMAP bmp;
	GetObject(m_bmp.GetBitmap(),sizeof(BITMAP),&bmp);
	CString msg;
	msg.Format("Image Size %d*%d",bmp.bmWidth,bmp.bmHeight);
	AfxMessageBox(msg);	
}

⑤Listbox

示例代码,把当前目录显示在列表中:

DWORD cchCurDir = MAX_PATH;
LPTSTR lpszCurDir; 
CHAR tchBuffer[MAX_PATH]; 
lpszCurDir = tchBuffer; 
GetCurrentDirectory(cchCurDir, lpszCurDir); 
DlgDirList(lpszCurDir, IDC_LIST_DIR, IDC_STATIC_DIR, 0); 
双击删除:
void CMy9_4Dlg::OnDblclkListDir() 
{
	// TODO: Add your control notification handler code here
	int i = m_list.GetCurSel();//获取当前选择的文字的索引
	CString str;
	m_list.GetText(i, str);//获取当前文字
	m_list.DeleteString(i);//删除索引文字,对应的还要addstring
	CString msg = "Item "+str+" deleted!";
	AfxMessageBox(msg);
	
}

⑥edit
删除操作

void CMy9_5Dlg::OnClear2Button() 
{
	// TODO: Add your control notification handler code here
          m_Edit2.SetSel(0,-1);	//表示选中编辑框IDC_EDIT2中的全部内容。
          m_Edit2.ReplaceSel("");
						//用空字符串代替所选中的文本,即把所选的文本删除掉
	
}

复制粘贴:
void CMy9_5Dlg::OnTransferButton() 
{
	// TODO: Add your control notification handler code here
	m_Edit1.SetSel(0,-1);
m_Edit1.Copy();		//将m_Editl编辑框中所选的内容拷贝到剪贴板上
m_Edit2.SetSel(0,-1);
m_Edit2.ReplaceSel("");
m_Edit2.Paste();	//将剪贴板中的内容粘贴到m_Edit2编辑框中

}

撤销

void CMy9_5Dlg::OnUndoButton() 
{
	// TODO: Add your control notification handler code here
  m_Edit1.Undo();	// Undo()函数是CEdit类中的成员函数,表示取消编辑框中上一次操作
 m_Edit2.Undo();
	
}


⑦ combobox

初始化添加字符串:

m_cb.AddString("Monday");
	m_cb.AddString("Tuesday");
	m_cb.AddString("Wednesday");
	m_cb.AddString("Thursday");
	m_cb.AddString("Friday");
	m_cb.AddString("Saturday");
	m_cb.AddString("Sunday");
选中操作

void CMy9_7Dlg::OnSelchangeCombo() 
{
	// TODO: Add your control notification handler code here
	CString msg;
	m_cb.GetLBText(m_cb.GetCurSel(), msg);//获得文字
	AfxMessageBox(msg);
	
}


⑧ picture control

选入后直接载入位图即可,也可以做分割线用

⑨spin

一般要和编辑框一起用,并设置alignment
初始化

CSpinButtonCtrl* pSpin =(CSpinButtonCtrl*) GetDlgItem(IDC_SPIN1);
	pSpin->SetRange(0, 100);//设置范围
	pSpin->SetPos(50);//设置位置
	pSpin->GetBuddy()->SetWindowText("5.0");//得到附属元素然后设置
	

它的事件是VSCROLL:

void CEx9_9Dlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	// TODO: Add your message handler code here and/or call default
	if (pScrollBar->GetDlgCtrlID() == IDC_SPIN1)
	{
		CString strValue;
		strValue.Format("%3.1f", (double) nPos / 10.0);
		((CSpinButtonCtrl*) pScrollBar)->GetBuddy()->SetWindowText(strValue);
	}
	CDialog::OnVScroll(nSBCode, nPos, pScrollBar);

}


⑩progress

初始设置:

CProgressCtrl* pProg =	(CProgressCtrl*) GetDlgItem(IDC_PROGRESS1);
	pProg->SetRange(0, 100);
	pProg->SetPos(50);

按钮触发计时事件

void CEx9_9Dlg::OnButtonStar() 
{
	// TODO: Add your control notification handler code here
	CProgressCtrl* pProg = (CProgressCtrl*) GetDlgItem(IDC_PROGRESS1);
	pProg->SetPos(0);
	SetTimer(1000,100,NULL);
	

void CEx9_9Dlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	if(nIDEvent == 1000){
		CProgressCtrl* pProg = (CProgressCtrl*) GetDlgItem(IDC_PROGRESS1);
		pProg->SetPos(pProg->GetPos()+1);
		if(pProg->GetPos() >= 100){
			KillTimer(nIDEvent);
			AfxMessageBox("进行完毕");
		}
	}
	
	CDialog::OnTimer(nIDEvent);
}

最后slide control

它的初始化

CString strText1;
	CSliderCtrl* pSlide1 =	(CSliderCtrl*) GetDlgItem(IDC_SLIDER1);
	pSlide1->SetRange(0, 100);
	pSlide1->SetPos(50);
	strText1.Format("%d", pSlide1->GetPos());
	SetDlgItemText(IDC_STATIC_SLIDER, strText1);//静态控件添加上文字

它的事件是水平滑动

void CEx9_9Dlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	// TODO: Add your message handler code here and/or call default
	if(pScrollBar->GetDlgCtrlID() == IDC_SLIDER1) 
	{
		CSliderCtrl* pSlide = (CSliderCtrl*) pScrollBar;
		CString strText;
		strText.Format("%d", pSlide->GetPos());
		SetDlgItemText(IDC_STATIC_SLIDER, strText);	
	}
	
	CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}







  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值