常用控件类的函数文档格式.docx
《常用控件类的函数文档格式.docx》由会员分享,可在线阅读,更多相关《常用控件类的函数文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
)。
获取状态很简单,UpdateData(TRUE)后判断m_nRadio1的值即可。
问题2:
如何使用多组?
多组和一组是一样的使用,只要搞清楚哪个是哪一组的就行了。
再为对话框添加Radio3和Radio4。
很简单,先为这些RadioButton排个顺序(这个必须要做,比如你的一组控件有Radio1,Radio2,Radio3,就把它们的TAB顺序分别设为1,2,3,并将Radio1的Group属性设为True,这样,当选中Radio1的时候和它关联的变量就是0,当选中Radio2的时候和它关联的变量就是1,依此类推),就是排列他们的TABORDER。
在对话框资源面板上Ctrl+D,然后按你自己的理想顺序用鼠标逐个点击就可以了。
不妨假设Radio1、Radio2、Radio3、Radio4分别是1、2、3、4。
Radio1和Radio3都选上Group属性,那么,1、2是一组,3、4是另外一组,因为分组的原则是在选上Group属性的这一个开始直到碰到下一个选上Group属性的。
你不妨再Ctrl+D,令Radio1、Radio2、Radio3、Radio4分别是1、3、2、4,那么Radio1和Radio3是一组,如果m_nRadio1=1,此时是Radio3被选上而不是Radio2被选上。
。
二单选按钮控件(RadioButton)的使用
对单选按钮进行分组:
每组的第一个单选按钮设置属性:
Group,Tabstop,Auto;
其余按钮设置属性Tabstop,Auto。
如:
Radio1、Radio2、Radio3为一组,Radio4、Radio5为一组
设定Radio1属性:
Group,Tabstop,Auto
设定Radio2属性:
Tabstop,Auto
设定Radio3属性:
设定Radio4属性:
设定Radio5属性:
用ClassWizard为单选控件定义变量,每组只能定义一个。
m_Radio1、m_Radio4。
用ClassWizard生成各单选按钮的单击消息函数,并加入内容:
voidCWEditView:
:
OnRadio1()
{
m_Radio1=0;
//第一个单选按钮被选中
}
OnRadio2()
m_Radio1=1;
//第二个单选按钮被选中
OnRadio3()
m_Radio1=2;
//第三个单选按钮被选中
OnRadio4()
m_Radio4=0;
//第四个单选按钮被选中
OnRadio5()
m_Radio4=1;
//第五个单选按钮被选中
设置默认按钮:
在定义控件变量时,ClassWizard在构造函数中会把变量初值设为-1,只需把它改为其它值即可。
//{{AFX_DATA_INIT(CUnitBlockTypeFlankPublicAdd)
m_Radio1=0;
//初始时第一个单选按钮被选中
m_Radio4=0;
//初始时第四个单选按钮被选中
//}}
//RadioButton使用
使用方法一:
在工程中添加控件后,直接在控件的Click事件中写入需要的代码即可
使用方法二:
1.建立一个基于对话框的用用程序,在其中加入三个RadioButton,ID分别为:
IDC_RADIO1,IDC_RADIO2,IDC_RADIO3
2.控件的初始化:
在对话框类的OnInitDialog中加入代码:
CheckRadioButton(IDC_RADIO1,IDC_RADIO3,IDC_RADIO3);
//第一个参数为该组的第一个单选按钮的ID
//第二个参数为该组的最后一个单选按钮的ID
//第三个参数为该组中被选中的单选按钮的ID
3.在加入一个Button控件,并为其写入Click事件代码:
intiRadioButton;
iRadioButton="
GetCheckedRadioButton"
(IDC_RADIO1,IDC_RADIO3);
if(iRadioButton==IDC_RADIO1)
MessageBox("
ClickButton1"
);
if(iRadioButton==IDC_RADIO2)
ClickButton2"
if(iRadioButton==IDC_RADIO3)
ClickButton3"
其他说明:
RadioButton成组使用时,只需保证在添加控件时资源号连续,并且第一个RadioButton的属性中Group被选中即可.
这样就可以给这一组控件添加成员变量使用
例:
1.建立一个基于对话框的应用程序,添加三个RadioButton,和一个Button
选中第一个RadioButton属性中的Group
2.在Button的Click事件中添加代码:
UpdateData(TRUE);
if(m_radio==0)
0"
if(m_radio==1)
1"
if(m_radio==2)
2"
UpdateData(false);
三:
MFC里CHECKBOX用法
可以对变量进行get或者set之类的操作来设置或者判断复选框的选择状态。
得到复选框状态的函数:
CButton*pBtn=(CButton*)GetDlgItem(IDC_CHECK);
intstate=pBtnNONE->
当state==1时表示该复选框没有被选中;
当state==0时表示该复选框被选中
设置复选框状态的函数:
pBtnNONE->
SetCheck
(1);
SetCheck
(1)表示设置复选框为“选中”状态;
SetCheck(0)表示设置复选框为“未选中”状态;
四:
在MFC中CComboBox(组合框)使用技巧
1.CComboBox风格
CBS_AUTOHSCROLL//自动水平滚动条
CBS_DISABLENOSCROLL//选中时始终显示滚动条
CBS_DROPDOWN//下拉式
CBS_DROPDOWNLIST//下拉列表
CBS_HASSTRINGS//为字符串提供GetText()函数
CBS_LOWERCASE//转换为小写
CBS_NOINTEGRALHEIGHT//指定组合框由应用程序来指定大小的
CBS_OEMCONVERT//OEM字符集转换
CBS_OWNERDRAWFIXED//所有项目的高度是一样的
CBS_OWNERDRAWVARIABLE//指定单一项目的高度
CBS_SIMPLE//简单风格
CBS_SORT//排序
CBS_UPPERCASE//转换为大写
2.初始化数据
1).在ComboBox控件属性的Data标签里面添加,一行表示ComboBox下拉列表中的一行。
换行用ctrl+回车。
2).在程序初始化时动态添加
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->
AddString(strTemp);
//strTemp为CString
3.删除指定行
DeleteString(UINTnIndex)//删除指定行
4.插入指定位置
InsertString(intnIndex,LPCTSTRlpszItem)//将行插入到指定位置
5.删除所有项
ResetContent();
//消除ID为IDC_COMBO_CF现有所有内容
6.查找指定字符串
FindString(intnStartAfter,LPCTSTRlpszItem)//可以在当前所有行中查找指定的字符串的位置,nStartAfter指明从那一行开始进行查找。
SelectString(intnStartAfter,LPCTSTRlpszItem)//可以选中包含指定字符串的行
7.选择其中某行
//
(1)选中:
intiPos=((CComboBox*)GetDlgItem(IDC_COMBO_CF))->
GetCurSel();
//当前选中的行。
//
(2)设置
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->
SetCurSel(n)//设置第n行内容为显示的内容。
8.获取总行数
intGetCount()//得到当前列表框中行的数量
9.取得ComboBox框内容
/*
(1)取当前内容*/
GetWindowText(strTemp);
//将获取的值存放到CString类型变量strTemp中。
//如果定义了关联的变量,例如m_combo,可以直接获取:
m_combo->
/*
(2)取其他行内容*/
GetLBText(n,strTemp);
//其中n为从0开始的索引值
10.获得焦点
通常要判断控件是否获得了焦点,可以用GetFocus()函数
例如:
if(GetFocus()==GetDlgItem(IDC_EDIT_VALUE2))//判断焦点是否在编辑框IDC_EDIT_VALUE2内。
但是combobox的焦点不同,因为它是由edit和listbox两部分组成的,所以获得焦点要用GetParent():
if((GetFocus()->
GetParent())==GetDlgItem(IDC_COMBO_CF))
11.改变下拉框大小
在设计界面里,点击一下ComboBox的下拉箭头,此时出现的调整框就是ComboBox的下拉调整框
12.常用消息映射宏
ON_CBN_DBLCLK鼠标双击
ON_CBN_DROPDOWN列表框被弹出
ON_CBN_KILLFOCUS/ON_CBN_SETFOCUS在输入框失去/得到输入焦点时产生
ON_CBN_SELCHANGE列表框中选择的行发生改变
ON_CBN_EDITUPDATE输入框中内容被更新
使用以上几种消息映射的方法为定义原型如:
afx_msgvoidmemberFxn();
的函数,并且定义形式如ON_Notification(id,memberFxn)的消息映射。
如果在对话框中使用组合框,ClassWizard会自动列出相关的消息,并能自动产生消息映射代码。
常用的函数:
GetCount()函数功能:
用以获得列表框中的选项数目.
GetCurSel()函数功能:
用以得到用户选中下拉列表框中数据的索引值.返回的值是重0开始的,如果没有选择任何选项将会返回-1
SetCurSel函数功能:
选取列表框中的一个选项,索引从0开始,-1为什么都不选.当你需要把列表框中已经选取的内容清空时就可以使用这个函数;
SetEditSel函数功能:
设置编辑区中蓝色选中字段的长度原型:
BOOLSetEditSel(intnStartChar,intnEndChar);
说明:
nStartChar是起始的位置,当设置为-1时为不选择任何字段,nEndChar是结束位置.还有一个对应的函数GetEditSel是取得其位置,在此不详解.
Clear()Cut()Paste()Copy()
这四个函数我放在一起说,因为他们都是针对编辑框中选定的文字进行编辑的函数,很多初学者很不明白这4个函数,使用这些函数没有作用,其实不然,这些函数对于在编辑框中的内容不进行处理,他真正处理的是你用鼠标选中的内容,对于Clear()函数很多书中解释都是有误的,很多书中对他的解释是清除当前选中的文本,我认为这样的解释是有歧异的,真正的解释是把你刚选中的文本释放掉,也就是不选,而不是把选中的删除,真正的删除选中的文本的函数是Cut(),Copy()是复制选中的文本,Paste()是粘贴到光标处.其演示就不写在程序中,有兴趣的朋友可以自己试试.
LimitText()函数功能:
其作用是限制在编辑框中键入的文本长度原型:
BOOLLimitText(intnMaxChars);
当nMaxChars为0时,不是不能输入,而是长度最大化为65535字节
GetLBText()函数原型:
voidGetLBText(intnIndex,CString&
rString).说明:
nIndex为列表框中数据的索引值,rString为字符串,其作用就是把索引号为nIndex的数据放到rString变量中.与其对应的GetLBTextLen(intnIndex)函数就是得到索引号为nIndex中数据的长度
AddString()DeleteString()InsertString()ResetContent()四个函数放在一起,他们都是针对下拉列表框的处理函数,
AddString(LPCTSTRlpszString)是在列表框的尾巴添加一条数据,参数为字符串.
DeleteString(UINTnIndex)为删除指定索引为nIndex的数据.InsertString(intnIndex,LPCTSTRlpszString)在索引nIndex处插入IpszString的内容.
ResetContent()是清除列表框中所有的内容.
SetDroppedWidth(UINTnWidth)函数.用于设定下拉列表框的最小宽度,当下拉列表框中的数据很长不能完全显示时,我们可以使用这个函数把列表框的宽度设置的大些.同样GetDroppedWidth()是返回列表框的宽度.
五:
在MFC中TabControl(选项卡)的使用
1、首先创建一个MFC对话框框架,在对话框资源上从工具箱中添加上一个TabControl控件,根据需要修改一下属性,然后右击控件,为这个控件添加一个变量,
将此控件跟一个CTabCtrl类变量绑定在一起,这里设为m_tabctrl
2、创建两个新的对话框资源,其属性作如下修改:
Border:
none//边界为空,这样它就没了标题栏
Style:
Child//这样这个模板就可以当作另一个窗口的子窗口了。
其它如果没有必要,就不用改了。
在上面加一些控件什么的,具体操作跟普通对话框没有区别。
完成后从这两个对话框模板生成两个新的对话框类。
3、在主对话框中为新添加进来的两个类增加两个变量:
如:
CDialog1m_mm1;
CDialog2m_mm2;
4、在主对话框的OnInitDialog()函数中添加如下类似的代码:
TCITEMitem;
item.mask=TCIF_TEXT;
item.pszText="
第一页"
;
m_tabctrl.InsertItem(0,&
item);
第二页"
m_tabctrl.InsertItem(1,&
m_mm1.Create(IDD_DIALOG1,&
m_tabctrl);
m_mm2.Create(IDD_DIALOG2,&
m_mm1.SetWindowPos(NULL,10,30,400,100,SWP_SHOWWINDOW);
m_mm2.SetWindowPos(NULL,10,30,400,100,SWP_HIDEWINDOW);
解释如下:
两个InsertItem函数的调用是为了给标签控件增加两个标签页面,文本是标题。
SetWindowPos()函数设置这两个对话框在Z顺序中的位置,显示或隐藏状态.。
5、在主对话中为标签控件添加一个标签选择改变(TCN_SELCHANGE)的控件通知消息,以便在用户选择标签时通知主对话框。
在主对话框的编辑界面右击标签控件
,选择添加一个事件可以完成这个操作。
在事件处理中添加如下代码,如下例:
voidCtabdialogDlg:
OnTcnSelchangeTab1(NMHDR*pNMHDR,LRESULT*pResult)
{
CRectr;
m_tabctrl.GetClientRect(&
r);
switch(m_tabctrl.GetCurSel())
{
case0:
m_mm1.SetWindowPos(NULL,10,30,r.right-20,r.bottom-40,SWP_SHOWWINDOW);
m_mm2.SetWindowPos(NULL,10,30,r.right-20,r.bottom-40,SWP_HIDEWINDOW);
break;
case1:
m_mm1.SetWindowPos(NULL,10,30,r.right-20,r.bottom-40,SWP_HIDEWINDOW);
m_mm2.SetWindowPos(NULL,10,30,r.right-20,r.bottom-40,SWP_SHOWWINDOW);
}
*pResult=0;
}
要想知道用户选择那个标签页,要通过m_tabctrl.GetCurSel()函数。
为了不使显示的子对话框覆盖标签控件的显示,所以要获得标签控件的尺寸然后设置各页面
的尺寸。
在MFC中Slider(滑块控件)的使用
主要要方法有:
1、设置、取得滑动范围:
voidSetRange(intnMin,intnMax,BOOLbRedraw=FALSE);
voidGetRange(int&
nMin,int&
nMax)const;
2、设置、取得按下左右箭头滑动间隔:
intSetLineSize(intnSize);
intGetLineSize()const;
3、设置、取得按下PgUp、PgDown时滑动间隔:
intSetPageSize(intnSize);
intGetPageSize()const;
4、设置、取得滑块位置:
voidSetPos(intnPos);
intGetPos()const;
5、设置滑动条刻度的频度:
voidSetTicFreq(intnFreq);
实例:
在对话框中放一个Slider控件,添加相应的Ctrl型变量为m_slider。
在对话框初始化函数OnInitDialog()中添加:
BOOLCDlgSetup:
OnInitDialog()
CDialog:
OnInitDialog();
//TODO:
Addextrainitializationhere
m_slider.SetRang(0,100);
//设置滑动范围
m_slider.SetTicFreq(10);
//每10个单位画一刻度
returnTRUE;
//returnTRUEunlessyousetthefocustoacontrol
//EXCEPTION:
OCXPropertyPagesshouldreturnFALSE
Slider控件本身并没有响应滑动的消息函数,但可以通过主窗体的OnHScroll()响应。
在类向导中为对话框添加WM_HSCROLL消息,在响应函数中添加:
voidCDlgSetup:
OnHScroll(UINTnSBCode,UINTnPos,CScrollBar*pScrollBar)
Addyourmessagehandlercodehereand/orcalldefault
CSliderCtrl*pSlidCtrl=(CSliderCtrl*)GetDlgItem(IDC_SLIDER1);
m_int=pSlidCtrlHue->
GetPos();
//取得当前位置值
OnHScroll(nSBCode,nPos,pScrollBar);
//m_int即为当前滑块的值。
注意:
设置最大值和最小值
过函数SetRange来完