第10章 基本控件使用(二)_第1页
第10章 基本控件使用(二)_第2页
第10章 基本控件使用(二)_第3页
第10章 基本控件使用(二)_第4页
第10章 基本控件使用(二)_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第1010章章 基本控件使用基本控件使用( (二二) )第第1010章章 基本控件使用基本控件使用( (二二) )第第1010章章 基本控件使用基本控件使用( (二二) )第第1010章章 基本控件使用基本控件使用( (二二) )10.1 按钮类按钮类10.2 列表框类列表框类10.3 应用实例应用实例第第1010章章 基本控件使用基本控件使用( (二二) )10.1 按钮类按钮类 按钮是一个矩形窗口,通常包含一个标题用来说明按钮的按钮是一个矩形窗口,通常包含一个标题用来说明按钮的作用。作用。 CButton(按钮控件按钮控件)类是从类是从CWnd类继承下来的。类继承下来的。 CCmdTar

2、get CObject CWnd CButton第第1010章章 基本控件使用基本控件使用( (二二) )10.1.1 按钮类的结构按钮类的结构 VC+在在Afxwin.h中定义了中定义了CButton类的结构,结构代码:类的结构,结构代码:class CButton : public CWndDECLARE_DYNAMIC(CButton)public:CButton(); / ConstructorsBOOL Create(LPCTSTR lpszCaption, DWORD dwStyle,const RECT& rect, CWnd* pParentWnd, UINT nID)

3、;/ AttributesUINT GetState() const;void SetState(BOOL bHighlight);int GetCheck() const;void SetCheck(int nCheck);UINT GetButtonStyle() const;void SetButtonStyle(UINT nStyle, BOOL bRedraw = TRUE);第第1010章章 基本控件使用基本控件使用( (二二) )#if (WINVER = 0 x400)HICON SetIcon(HICON hIcon);HICON GetIcon() const;HBITMA

4、P SetBitmap(HBITMAP hBitmap);HBITMAP GetBitmap() const;HCURSOR SetCursor(HCURSOR hCursor);HCURSOR GetCursor();#endif/ Overridables (for owner draw only) virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);/ Implementationpublic:virtual CButton();protected:virtual BOOL OnChildNotify(UINT, WPARAM

5、, LPARAM, LRESULT*);第第1010章章 基本控件使用基本控件使用( (二二) )CButton类中按钮特有的样式类中按钮特有的样式样样式式宏宏 说说 明明 BS_3STATE BS_AUTO3STATE BS_AUTOCHECKBOX BS_AUTORADIOBUTTON BS_CHECKBOX BS_DEFPUSHBUTTON BS_GROUPBOX BS_LEFTTEXT BS_OWNERDRAW BS_PUSHBUTTON BS_RADIOBUTTON 此此样样式式为为复复选选框框,但但是是方方框框可可以以被被选选中中,也也可可以以不不选选(表表明明复复选选框框无无效效

6、) 此此样样式式为为复复选选框框,但但是是方方框框可可以以被被选选中中,也也可可以以不不选选(表表明明复复选选框框无无效效), 当当用用户户选选择择方方框框时时,它它的的选选中中状状态态会会自自动动转转换换 此此样样式式为为复复选选框框,当当用用户户选选择择方方框框时时,它它的的选选中中状状态态会会自自动动转转换换 此此样样式式为为单单选选按按钮钮,当当用用户户选选中中圆圆圈圈时时,按按钮钮自自动动显显示示自自己己被被选选中中的的状状 态态,同同时时使使其其他他具具有有相相同同样样式式的的同同组组的的单单选选按按钮钮处处于于不不被被选选中中的的状状态态 创创建建一一个个复复选选框框,默默认认情

7、情况况下下它它的的右右边边有有标标题题,当当与与 BS_LEFTTEXT 一一 起起使使用用时时,标标题题在在左左边边 创创建建一一个个下下压压式式按按钮钮 创创建建一一个个带带标标题题的的分分组组框框 和和一一个个单单选选按按钮钮或或复复选选按按钮钮一一起起使使用用时时,使使得得按按钮钮文文字字出出现现在在按按钮钮的的左左边边 创创建建自自定定义义按按钮钮,当当按按钮钮外外形形被被改改变变时时,MFC 自自动动调调用用 DrawItem()方方法法, 在在使使用用 BitmapButton 类类时时,这这种种样样式式必必须须被被指指定定 创创建建下下压压式式按按钮钮,用用户户单单击击此此按按

8、钮钮时时,向向系系统统发发送送 M_COMMAND 消消息息 创创建建单单选选按按钮钮 第第1010章章 基本控件使用基本控件使用( (二二) )10.1.2 按钮类的方法按钮类的方法按钮类按钮类(CButton类类)提供的访问方法提供的访问方法第第1010章章 基本控件使用基本控件使用( (二二) )10.2 列表框类列表框类 CListBox类在类在MFC类层次结构中的位置。类层次结构中的位置。 CCmdTarget CObject CWnd CListBox第第1010章章 基本控件使用基本控件使用( (二二) )10.2.1 列表框类的结构列表框类的结构 结构见教材结构见教材P241,

9、列表框控件可用的样式:,列表框控件可用的样式:样 式 说 明 LBS_DISABLENOSCROLL LBS_EXTENDSEL LBS_HASSTRINGS LBS_MULTICOLUMN LBS_MULTIPLESEL LBS_NOINTEGRALHEIGHT LBS_NOREDRAW LBS_NOSEL LBS_NOTIFY LBS_OWNERDRAWFIXED LBS_OWNERDRAWVARIABLE LBS_SORT LBS_STANDARD LBS_USETABSTOPS LBS_WANTKEYBOARDINPUT 当当列列表表框框不不需需要要滚滚动动条条时时,滚滚动动条条无无效

10、效 允允许许使使用用鼠鼠标标及及特特殊殊键键组组合合进进行行多多项项选选择择 指指明明一一个个自自绘绘的的列列表表框框,其其中中包包括括字字符符串串选选项项,列列表表框框负负责责为为字字符符串串分分配配内内存存,指指定定项项的的文文字字可可以以用用 GetTexT()方方法法检检索索 指指明明一一个个多多列列列列表表框框,它它含含有有一一个个水水平平滚滚动动条条,可可以以用用 SetColumnWidth()方方法法设设置置列列的的宽宽度度 用用户户通通过过单单击击或或双双击击一一项项进进行行选选择择或或取取消消选选择择 将将列列表表框框设设置置为为创创建建时时指指定定的的大大小小 列列表表框

11、框在在变变化化时时不不重重绘绘,可可以以在在任任何何时时候候发发送送 WM_SETREDRAW消消息息改改变变这这种种模模式式 指指明明列列表表框框包包含含只只能能看看不不能能选选择择的的项项 当当用用户户单单击击或或双双击击时时向向父父窗窗口口发发送送消消息息 指指明明列列表表框框的的所所有有者者负负责责填填写写列列表表项项,且且列列表表框框具具有有相相同同的的高高度度 指指明明列列表表框框的的所所有有者者负负责责填填写写列列表表项项,且且列列表表框框可可以以有有不不同同高高度度 列列表表项项按按字字母母顺顺序序排排列列 此此样样式式是是 LBS_NOTIFY、LBS_SORT、WS_VSC

12、ROLL 和和 WS_BORDER 的的组组合合 告告知知列列表表框框在在加加入入字字符符串串列列表表项项时时加加入入 Tab 字字符符 允允许许应应用用程程序序发发送送 WM_VKEYTOITEM 和和 WM_CHARTOITEM 消消息息给给列列表表框框的的所所有有者者来来处处理理键键盘盘输输入入 第第1010章章 基本控件使用基本控件使用( (二二) )消息映像项消息映像项说明说明ON_LBN_DBLCLK双击,具有双击,具有LBS_NOTIFY样式的列表框向样式的列表框向所有者发送此消息所有者发送此消息ON_LBN_ERRSPACE列表框不能分配足够内存以满足要求列表框不能分配足够内存

13、以满足要求ON_LBN_KILLFOCUS当列表框失去输入焦点时出现此消息当列表框失去输入焦点时出现此消息ON_LBN_SELCANCEL取消当前选择时,具有取消当前选择时,具有LBS_NOTIFY样式样式的列表框向所有者发送此消息的列表框向所有者发送此消息ON_LBN_SELCHANGE当 列 表 框 中 的 选 择 改 变 时 , 具 有当 列 表 框 中 的 选 择 改 变 时 , 具 有LBS_NOTIFY样式的列表框向它的父窗口样式的列表框向它的父窗口 发送此通知发送此通知列表框类的结构列表框类的结构列表框的消息映像项,用于处理列表框通知。列表框的消息映像项,用于处理列表框通知。第第

14、1010章章 基本控件使用基本控件使用( (二二) )10.2.2 列表框类的方法列表框类的方法1 1通用通用 方法方法 方方法法 描描述述 GetCount() 获获得得列列表表框框中中列列表表项项数数目目 GetHorizontalExtent() 获获得得列列表表框框的的水水平平滚滚动动宽宽度度(按按像像素素) GetItemData() 获获得得列列表表框框项项有有关关的的 32 位位值值 GetItemDataPtr() 获获得得指指向向列列表表框框项项的的指指针针 GetItemHeight() 获获得得列列表表框框中中项项的的高高度度 GetSel() 确确定定列列表表框框项项的

15、的选选择择状状态态 GetText() 把把列列表表框框中中字字符符串串复复制制到到缓缓冲冲区区 GetTextLen() 返返回回列列表表框框字字符符串串的的长长度度(按按字字节节) GetTopIndex() 获获得得列列表表框框中中第第一一个个可可见见项项的的下下标标(基基于于 0) ItemFromPoint() 确确定定和和返返回回离离某某点点最最近近的的列列表表框框项项的的下下标标 SetColumnWidth() 设设置置多多列列列列表表框框的的列列宽宽度度 SetHorizontalExtent() 设设置置列列表表框框的的水水平平滚滚动动宽宽度度(按按像像素素) SetIte

16、mData() 设设置置与与一一列列表表框框项项有有关关的的 32 位位值值 SetDataPtr() 设设置置一一列列表表框框项项的的指指针针 SetItemHeight() 设设置置列列表表框框中中项项的的高高度度 SetLocale() 设设置置列列表表框框的的位位置置标标识识(LCID) SetTabStops() 设设置置列列表表框框的的制制表表位位(Tab_Stop)位位置置 GetTopIndex() 设设置置列列表表框框中中第第一一个个可可见见项项的的下下标标(基基于于 0) 第第1010章章 基本控件使用基本控件使用( (二二) )2单选列表框的方法单选列表框的方法列表框的默

17、认模式是单选项模式;所有的通用方法均适用于单列表框的默认模式是单选项模式;所有的通用方法均适用于单选项列表框。选项列表框。只有两个类方只有两个类方法专门处理单法专门处理单选项列表框选项列表框GetCurSel()SetCurSel()获得当前选择列表获得当前选择列表框项的下标框项的下标(基于基于0)选择列表框字符串选择列表框字符串第第1010章章 基本控件使用基本控件使用( (二二) )3多选列表框的方法多选列表框的方法 方法方法 说明说明 GetAnchorIndex()获得多项选择列表框中当前定位项的下标获得多项选择列表框中当前定位项的下标GetCaretIndex() 获得多项选择列表框

18、中具有光标矩形的项的下标获得多项选择列表框中具有光标矩形的项的下标GetSelCount()获得多项选择列表框中当前所选的项的数目获得多项选择列表框中当前所选的项的数目GetSelItems()将所有当前被选列表框项下标放入一整型数组缓冲区将所有当前被选列表框项下标放入一整型数组缓冲区SelItemRange() 切换多选择列表框项范围的选择状态切换多选择列表框项范围的选择状态SetAnchorIndex()在多项选择列表框中扩充选择设置开始在多项选择列表框中扩充选择设置开始(定位定位)项项SetCaretIndex() 在多项选择列表框中指定下标项设置光标矩形在多项选择列表框中指定下标项设置

19、光标矩形SetSel() 在多项选择列表框中切换项目的选择状态在多项选择列表框中切换项目的选择状态多选项列表框扩展了多选项列表框扩展了标准单项选择列表框标准单项选择列表框的能力,可以解决在的能力,可以解决在一个列表框中选择多一个列表框中选择多项带来的复杂性项带来的复杂性第第1010章章 基本控件使用基本控件使用( (二二) )4特定字符串方法特定字符串方法 方法方法 说明说明 AddString() 在列表框中加入一个字符串在列表框中加入一个字符串DeleteString() 从列表框中删除一个字符串从列表框中删除一个字符串Dir() 从当前目录加文件名放入列表框从当前目录加文件名放入列表框F

20、indString() 在列表框中搜索一字符串在列表框中搜索一字符串FindStringExact() 在列表框中搜索第一个与指定搜索字符串匹配的字符串在列表框中搜索第一个与指定搜索字符串匹配的字符串InsertString() 在列表框指定下标处插入一字符串在列表框指定下标处插入一字符串ResetContent() 清除列表框中的所有项清除列表框中的所有项SelectString() 在单选列表框中搜索并选择一字符串在单选列表框中搜索并选择一字符串适用于单选择和多选择两种模式的列表框,这些方法处理列适用于单选择和多选择两种模式的列表框,这些方法处理列表框中的字符串项。表框中的字符串项。第第1

21、010章章 基本控件使用基本控件使用( (二二) )5虚拟方法虚拟方法CListBox类还声明了几个虚拟方法,编程时可从类还声明了几个虚拟方法,编程时可从CListBox类中派类中派生一些类替换到应用程序的类中。生一些类替换到应用程序的类中。 方法方法 说明说明 CharToItem()可替换此方法为自绘列表框(没有字符串)处理可替换此方法为自绘列表框(没有字符串)处理WM_CHARCompareItem() 由由MFC调用以得到排序的自绘列表框中的新项的位置调用以得到排序的自绘列表框中的新项的位置DeleteItem()当用户从自绘列表框中删除一项时当用户从自绘列表框中删除一项时MFC调用此

22、方法调用此方法DrawItem()当确定自绘列表框项必须重绘时当确定自绘列表框项必须重绘时MFC调用此方法调用此方法MeasureItem()当一自绘列表框被创建时当一自绘列表框被创建时MFC调用此方法来决定列表框的维数调用此方法来决定列表框的维数VKeyToItem()可替换此方法,处理具有可替换此方法,处理具有LBS_WANTKEYBOARDINPUT样样 式的列表框的式的列表框的WM_KEYDOWN消息消息第第1010章章 基本控件使用基本控件使用( (二二) )10.3 按钮类与列表框类的应用实例按钮类与列表框类的应用实例例例10-1 编写应用程序编写应用程序第第1010章章 基本控件

23、使用基本控件使用( (二二) )1应用程序的界面设计应用程序的界面设计第第1010章章 基本控件使用基本控件使用( (二二) )1应用程序的界面设计应用程序的界面设计第第1010章章 基本控件使用基本控件使用( (二二) )对于成组的单选按钮,只对于成组的单选按钮,只在每组的第一个按钮的属在每组的第一个按钮的属性中选中性中选中Group设置设置在在Sex Selecting组组中只有中只有Boy单选按单选按钮选中钮选中Group属性属性在在Age Range组中只组中只有有“20”单选按钮选单选按钮选中中Group属性属性设计过程中,同一组单选按钮设计过程中,同一组单选按钮必须一个接一个地放进

24、对话框必须一个接一个地放进对话框中,中间不能插入其它的控件中,中间不能插入其它的控件第第1010章章 基本控件使用基本控件使用( (二二) )顺序放置的原因:顺序放置的原因:Visual C按照放入对话框中的先后顺序,按照放入对话框中的先后顺序,给每个控件赋一个给每个控件赋一个ID值,所以控件的值,所以控件的ID值是连续的。值是连续的。Group属性的控件之间的控件为一组。属性的控件之间的控件为一组。从从resource.h的资源头文件中可得到的资源头文件中可得到ID值值:#define IDC_SHOW_BUTTON 1006#define IDC_HIDE_BUTTON 1007#defi

25、ne IDC_Boy_RADIO 1008#define IDC_Girl_RADIO 1009#define IDC_Age1_RADIO 1010#define IDC_Age2_RADIO 1011#define IDC_Age3_RADIO 1012#define IDC_Show_Sex_Age_BUTTON 1013#define IDC_Result_EDIT 1014第第1010章章 基本控件使用基本控件使用( (二二) )2应用程序的代码编程部分应用程序的代码编程部分1) 给各个控件连接变量给各个控件连接变量(什么情况下需要连接变量?)(什么情况下需要连接变量?)第第1010

26、章章 基本控件使用基本控件使用( (二二) )2) 与有关按钮控件的连接方法与有关按钮控件的连接方法( 什么情况下需要定义消什么情况下需要定义消息响应函数?)息响应函数?)3) 方法的实现方法的实现(3.1) 给复选框给复选框IDC_DATE_CHECK添加代码添加代码void CSELECTBOXDlg :OnDataCheck() UpdateData(TRUE); /以当前的屏幕显示内容更新控件的变量以当前的屏幕显示内容更新控件的变量 if(m_DateCheck=TRUE) /若选中若选中Date则在编辑框中显示日期则在编辑框中显示日期 CTime tNow ; /创建创建CTime的

27、对象的对象tNow=CTime:GetCurrentTime(); /获取当前系统日期获取当前系统日期CString sNow=tNow.Format(%y.%m.%d); / %y.%B.%d /格式化格式化,并将时间值转换为字符串类型,并将时间值转换为字符串类型m_DateEdit.SetSel(0,-1); /选择编辑框中的全部内容选择编辑框中的全部内容m_DateEdit.ReplaceSel(sNow); /将编辑框替换为系统日期将编辑框替换为系统日期 else m_DateEdit.SetSel(0,-1);m_DateEdit.ReplaceSel( ); /编辑框显示为空编辑框

28、显示为空 / UpdateData(FALSE); ? m_DateEdit.SetWindowText(sNow);m_DateEdit.SetWindowText( );第第1010章章 基本控件使用基本控件使用( (二二) )CTime t = CTime:GetCurrentTime(); /获取系统日期获取系统日期int y=t.GetYear(); /获取年份获取年份int m=t.GetMonth(); /获取月份获取月份int d=t.GetDay(); /获得几号获得几号int h=t.GetHour(); /获取时获取时int mm=t.GetMinute(); /获取分获

29、取分int s=t.GetSecond(); /获取秒获取秒int w=t.GetDayOfWeek(); /获取星期几,注意获取星期几,注意1为星期天,为星期天,7为星期六为星期六其他获取时间的函数:其他获取时间的函数:GetLocalTime() /得到系统时间日期得到系统时间日期GetSystemTime() /返回的是格林威志标准时间返回的是格林威志标准时间第第1010章章 基本控件使用基本控件使用( (二二) )VC下的时间格式化下的时间格式化 %y Year without century, as decimal number(00-99) %Y Year with century

30、, as decimal number %m Month as decimal number(01-12) %b Abbreviated month name %B Full month name %d Day of month as decimal number(01-31) %H Hour in 24-hour format(00-23) %I Hour in 12-hour format(01-12) %p Current locales A.M./P.M. indicator for 12-hour clock %M Minute as decimal number(00-59) %S

31、 Second as decimal number(00-59) %a Abbreviated weekday name %A Full weekday name %c Date and time representation appropriate for locale %j Day of year as decimal number(001-366) %U Week of year as decimal number, with Sunday as first day of week(00-53) %w Weekday as decimal number(0-6; Sunday is 0)

32、 %W Week of year as decimal number, with Monday as first day of week(00-53) %x Date representation for current locale %X Time representation for current locale %z, %Z Either the time-zone name or time zone abbreviation, depending on registry settings; % Percent sign 例如例如:CString strDate=CTime:GetCur

33、rentTime().Format(%Y-%m-%d %H:%M:%S);void CSELECTBOXDlg :OnTimeCheck() UpdateData(TRUE); /以当前的屏幕显示内容更新控件的变量以当前的屏幕显示内容更新控件的变量 if(m_TimeCheck=TRUE) /若选中若选中Time则在编辑框中显示时间则在编辑框中显示时间 CTime tNow; /创建创建CTime的对象的对象tNow=CTime:GetCurrentTime(); /获取当前系统时间获取当前系统时间CString sNow=tNow.Format(“%I:%M:%S”); / 24小时:小时:

34、%H:%M:%Sm_TimeEdit.SetSel(0,-1);m_TimeEdit.ReplaceSel(sNow); /将编辑框替换为系统时间将编辑框替换为系统时间 elsem_TimeEdit.SetSel(0,-1);m_TimeEdit.ReplaceSel( ); /UpdateData(FALSE); 函数函数Format的参数的参数%I是时是时间的小时表示法(间的小时表示法(0112),),%m是分的表示法是分的表示法(0059),),%d是秒的表是秒的表示法(示法(0059) (3.2)为复选框为复选框IDC_TIME_CHECK添加代码添加代码void CSELECTBOX

35、Dlg :OnEnableButton() GetDlgItem(IDC_DATE_CHECK)-EnableWindow(TRUE); /使复选框可选,函数返回指向对象的指针函数使复选框可选,函数返回指向对象的指针函数 GetDlgItem(IDC_TIME_CHECK)-EnableWindow(TRUE); m_DateEdit.EnableWindow(TRUE); /使编辑框可用使编辑框可用 /也可表示成:也可表示成: GetDlgItem(IDC_DATE_EDIT)-EnableWindow(TRUE); m_TimeEdit.EnableWindow(TRUE); /也可表示成

36、:也可表示成:GetDlgItem(IDC_TIME_EDIT)-EnableWindow(TRUE); GetDlgItem是是CWnd类的成员函数,类的成员函数,return: A pointer to the given control or child window.关联变量为关联变量为BOOL型型关联变量为关联变量为CEdit型型(3.3) 给给Enable按钮添加代码按钮添加代码第第1010章章 基本控件使用基本控件使用( (二二) )void CSELECTBOXDlg :OnDisableButton() /使复选框不可选使复选框不可选GetDlgItem(IDC_DATE_C

37、HECK)-EnableWindow(FALSE);GetDlgItem(IDC_TIME_CHECK)-EnableWindow(FALSE); /使编辑框不可用使编辑框不可用m_DateEdit.EnableWindow(FALSE);m_TimeEdit.EnableWindow(FALSE); (3.4) 为为Disable按钮连接代码按钮连接代码第第1010章章 基本控件使用基本控件使用( (二二) )void CSELECTBOXDlg :OnShowButton() /使编辑框可见使编辑框可见GetDlgItem(IDC_DATE_CHECK)-EnableWindow(SW_S

38、HOW);GetDlgItem(IDC_TIME_CHECK)-EnableWindow(SW_SHOW);GetDlgItem(IDC_DATE_EDIT)-EnableWindow(SW_SHOW);m_DateEdit. ShowWindow(SW_SHOW);GetDlgItem(IDC_TIME_EDIT)-EnableWindow(SW_SHOW);m_TimeEdit. ShowWindow(SW_SHOW); 基类基类CWnd的成员函数的成员函数(3.5) 为为Show Again按钮添加代码按钮添加代码第第1010章章 基本控件使用基本控件使用( (二二) )void CSE

39、LECTBOXDlg :OnHideButton() /使编辑框不可见使编辑框不可见GetDlgItem(IDC_DATE_CHECK)-EnableWindow(SW_HIDE);GetDlgItem(IDC_TIME_CHECK)-EnableWindow(SW_HIDE);m_DateEdit. EnableWindow(SW_HIDE);m_DateEdit.ShowWindow(SW_HIDE);m_TimeEdit. EnableWindow(SW_HIDE); m_TimeEdit.ShowWindow(SW_HIDE); 基类基类CWnd的成员函数的成员函数(3.6) 为为Hi

40、de the Clock Setting按钮添加实现代码按钮添加实现代码第第1010章章 基本控件使用基本控件使用( (二二) )void CSELECTBOXDlg :OnShowSexAgeBUTTON() char sEdit50; /声明字符串变量,用来存放显示在编辑框中的字符声明字符串变量,用来存放显示在编辑框中的字符 int iSexRADIO; int iAgeRADIO; /表示选中按钮的状态表示选中按钮的状态 /单选按钮组的状态,返回被选按钮的单选按钮组的状态,返回被选按钮的IDiSexRADIO=GetCheckedRadioButton(IDC_Boy_RADIO, ID

41、C_Girl_RADIO);if(iSexRADIO=IDC_Boy_RADIO)strcpy(sEdit, The boys age is); if(iSexRADIO=IDC_Girl_RADIO)strcpy(sEdit,The girls age is); /复制字符串到变量中复制字符串到变量中iAgeRADIO=GetCheckedRadioButton(IDC_Age1_RADIO, IDC_Age3_RADIO);if(iAgeRADIO=IDC_Age1_RADIO)strcat(sEdit, great than 20);if(iAgeRADIO=IDC_Age2_RADIO

42、)strcat(sEdit, between 15 and 20);if(iAgeRADIO=IDC_Age3_RADIO)strcat(sEdit, less than 15);m_ResultEdit.SetSel(0,-1); m_ResultEdit.ReplaceSel(sEdit); /选中并替换选中并替换 第一个第一个最后一个最后一个(3.7) 给给Show_the_Sex_and_Age按钮添加代码按钮添加代码第一个第一个最后一个最后一个m_ResultEdit.SetWindowText(sEdit);void CSELECTBOXDlg :OnShowComboButton

43、() UpdateData(TRUE); char sCourseEdit30; char sRecordEdit15; /编辑框中显示编辑框中显示course,record int iCourseRadio; /声明选中的课程声明选中的课程 iCourseRadio=GetCheckedRadioButton(IDC_ENGLISH_RADIO,IDC_NATURE_RADIO); /单选按钮组的状态,返回被选按钮的单选按钮组的状态,返回被选按钮的IDif(iCourseRadio=IDC_ENGLISH_RADIO) strcpy(sCourseEdit,English record is

44、 );if(iCourseRadio=IDC_COMPUTER_RADIO) strcpy(sCourseEdit,Computer record is );if(iCourseRadio=IDC_NATURE_RADIO)strcpy(sCourseEdit,Natural record is );m_Record.GetWindowText(sRecordEdit,15); /获取列表框中选中的内容获取列表框中选中的内容strcat(sCourseEdit, ); /字符串连接空格字符串连接空格strcat(sCourseEdit, sRecordEdit); /字符串连接分数字符串连接分

45、数m_ComboEdit=_T(sCourseEdit); /或或m_ComboEdit=sCourseEdit; UpdateData(FALSE); /显示更新显示更新(3.8) 为为Show_Combo按钮添加代码按钮添加代码m_ComboEdit若定义为若定义为CEdit类型时,可替换为类型时,可替换为m_ComboEdit.SetSel(0,-1); m_ComboEdit.ReplaceSel(sCourseEdit);种类为种类为control,类型为,类型为CComboBoxint nSel;nSel = m_Record.GetCurSel();/选中的索引选中的索引m_Re

46、cord.GetLBText(nSel,sRecordEdit); /保存选中的内容保存选中的内容第第1010章章 基本控件使用基本控件使用( (二二) )void CSELECTBOXDlg :OnExitButton() OnOK(); (3.9) 给给OnExitButton()方法添加代码方法添加代码第第1010章章 基本控件使用基本控件使用( (二二) )BOOL CSELECTBOXDlg :OnInitDialog()CDialog:OnInitDialog();/ TODO: Add extra initialization here /初始化选中的按钮初始化选中的按钮Chec

47、kRadioButton(IDC_Boy_RADIO, IDC_Girl_RADIO, IDC_Boy_RADIO);CheckRadioButton(IDC_Age1_RADIO, IDC_Age3_RADIO, IDC_Age2_RADIO);m_English=1; /变量变量m_English的类型为的类型为int,设置初始选中第二个单选框设置初始选中第二个单选框m_Record.AddString(85);m_Record.AddString(90);m_Record.AddString(95);m_Record.SelectString(-1, 95); /默认显示的初始值默认显示

48、的初始值UpdateData(FALSE); /将控件的值更新屏幕将控件的值更新屏幕return TRUE; 第一个第一个最后一个最后一个选中的按钮选中的按钮ID添加列表框中的选项添加列表框中的选项4) 初始化单选按钮初始化单选按钮int SelectString( int nStartAfter, LPCTSTR lpszItem );nStartAfter:在要搜索的第一项之前包含项的从零开始的索引。:在要搜索的第一项之前包含项的从零开始的索引。 如果如果 nStartAfter 为为 1,整个列表框从开始处搜索。,整个列表框从开始处搜索。第第1010章章 基本控件使用基本控件使用( (二

49、二) )10.4 对话框通用控件对话框通用控件 大部分控件都是在对话框中使用的,无论是基于对话框的大部分控件都是在对话框中使用的,无论是基于对话框的应用程序还是应用程序还是Doc/View结构的应用程序,控件通常是放在结构的应用程序,控件通常是放在对话框中的。包括:对话框中的。包括:1. Picture控件控件2. Spin控件控件3. Progress控件控件4. Slider控件控件5. Date Time Picker控件控件 本节将以一个名为本节将以一个名为“Ctrl”的基于对话框的应用程序来介绍的基于对话框的应用程序来介绍各种各种Windows通用控件的使用。通用控件的使用。 第第1

50、010章章 基本控件使用基本控件使用( (二二) )1. Picture控件的使用控件的使用 (1)分隔线分隔线 将将Picture控件拖放到对话框中控件拖放到对话框中【Type】属性选择属性选择“Frame”【Color】属性选择属性选择“Etched”将控件拖到最细,此时将控件拖到最细,此时Picture控件象一条分隔线控件象一条分隔线第第1010章章 基本控件使用基本控件使用( (二二) )Picture控件的使用控件的使用(2) 图片图片将将【Type】属性设置为属性设置为“Icon”或者或者“Bitmap” 设置设置【Image】属性为相应的属性为相应的资源资源ID,显示图标或位图。

51、,显示图标或位图。 在资源中导入一位图,命名为在资源中导入一位图,命名为IDB_BITMAP_DOT,设置,设置Picture控件控件【Type】为为“Bitmap”,【Image】为为“IDB_BITMAP_DOT”第第1010章章 基本控件使用基本控件使用( (二二) )2. Spin控件的使用控件的使用 Spin按钮控件提供了一对箭按钮控件提供了一对箭头,用户通过点击箭头可以头,用户通过点击箭头可以微调该控件所表示的数值。微调该控件所表示的数值。Spin控件通常和控件通常和tab order位于它之前的位于它之前的控件成对使用。通控件成对使用。通过过CSpinButtonCtrl的的Ge

52、tBuddy方法可获方法可获得与之配对的控件得与之配对的控件 表示表示Spin控件的是控件的是CSpinButtonCtrl类类第第1010章章 基本控件使用基本控件使用( (二二) )成员成员描述描述CSpinButtonCtrlCreateSetBaseSetBuddySetPosSetRange构造构造CSpinButtonCtrl对象对象创建一个微调按钮对象创建一个微调按钮对象设置显示的基,即以十进制或十六进制或其他设置显示的基,即以十进制或十六进制或其他进制显示数据进制显示数据设置该控件的伙伴窗口设置该控件的伙伴窗口设置当前位置设置当前位置设置取值范围设置取值范围CSpinButto

53、nCtrl类常用成员类常用成员第第1010章章 基本控件使用基本控件使用( (二二) ) 在对话框中拖放一个在对话框中拖放一个Edit控件控件,设为,设为只读只读,然后拖放一个,然后拖放一个Spin控件控件紧挨着刚才的紧挨着刚才的Edit控件,两个控件的控件,两个控件的ID都使用默认都使用默认值,设置值,设置Spin控件的控件的【Allignment】属性为属性为“Right”,选中,选中【Auto buddy】属性属性 BOOL CEx9_9Dlg:OnInitDialog() / TODO: Add extra initialization hereCSpinButtonCtrl* pSp

54、in =(CSpinButtonCtrl*) GetDlgItem(IDC_SPIN1);pSpin-SetRange(0, 100); /设置设置Spin的范围是的范围是0100pSpin-SetPos(50); /当前位置是当前位置是50pSpin-GetBuddy()-SetWindowText(5.0); /设置配对控件的显示值设置配对控件的显示值 return TRUE; 第第1010章章 基本控件使用基本控件使用( (二二) ) 在对话框中添加在对话框中添加WM_VSCROLL消息(消息(SPIN控件上下滚动控件上下滚动消息)的响应:消息)的响应:void CEx9_9Dlg:On

55、VScroll() /若操作对象为若操作对象为SPIN控件控件 if (pScrollBar-GetDlgCtrlID() = IDC_SPIN1) CString strValue; /创建字符串对象创建字符串对象 strValue.Format(%3.1f, (double) nPos / 10.0); /格式化输出内容格式化输出内容 (CSpinButtonCtrl*)pScrollBar)-GetBuddy()-SetWindowText(strValue); /获取伙伴编辑框进行显示获取伙伴编辑框进行显示 CDialog:OnVScroll(nSBCode, nPos, pScrol

56、lBar); 保证微调保证微调步长为步长为0.1第第1010章章 基本控件使用基本控件使用( (二二) )3. Progress控件的使用控件的使用 进度控件用来指示长时间操作的进度控件用来指示长时间操作的进展程度。包括从左到右使用系进展程度。包括从左到右使用系统高亮颜色显示渐进过程的矩形。统高亮颜色显示渐进过程的矩形。 MFC中表示进度控制的是中表示进度控制的是CProgressCtrl类类 。进度条有一个范围和进度条有一个范围和当前位置当前位置。范围表示整个操作的持续时间,。范围表示整个操作的持续时间,当前位置表示当前进行的位置,进度条根据当前位置来判断进当前位置表示当前进行的位置,进度条

57、根据当前位置来判断进行的百分比,并显示进度行的百分比,并显示进度 。成员成员描述描述CProgressCtrlCreateSetPos GetPos构造构造CProgressCtrl对象对象创建进度条对象创建进度条对象设置当前位置设置当前位置获取当前位置获取当前位置成员成员描述描述SetRangeSetStepStepIt设置取值范围设置取值范围设置步长设置步长前进一步前进一步第第1010章章 基本控件使用基本控件使用( (二二) ) 添加一个添加一个Progress控件,保持默认控件,保持默认ID,设置,设置Smooth属性。在旁属性。在旁边添加一个按钮,设置边添加一个按钮,设置ID为为“I

58、DC_BUTTON_START”,Caption为为“开始开始” 。在在OnInitDialog中添加如下代码:中添加如下代码:CProgressCtrl* pProg =(CProgressCtrl*) GetDlgItem(IDC_PROGRESS1); /设置指向进度条的指针设置指向进度条的指针pProg-SetRange(0, 100); /设置范围为设置范围为0100pProg-SetPos(50); /设置当前位置为设置当前位置为50为为“开始开始”按钮添加点击事件实现代码:按钮添加点击事件实现代码:void CEx9_9Dlg:OnButtonStart() CProgressC

59、trl* pProg=(CProgressCtrl*)GetDlgItem(IDC_PROGRESS1); pProg-SetPos(0); /设置初始值为设置初始值为0 SetTimer(1000,100,NULL); /启动计时器,自动调用启动计时器,自动调用OnTimer()函数函数 /计时器计时器ID为为1000,100毫秒为单位毫秒为单位第第1010章章 基本控件使用基本控件使用( (二二) )在在CCtrlDlg中添加对中添加对WM_TIMER消息的响应函数:消息的响应函数:void CEx9_9Dlg:OnTimer(UINT nIDEvent) if(nIDEvent = 10

60、00) /根据根据ID判断计时器判断计时器 CProgressCtrl* pProg = (CProgressCtrl*) GetDlgItem(IDC_PROGRESS1); pProg-SetPos(pProg-GetPos()+1); /前进一步前进一步 if(pProg-GetPos() = 100) /判断是否达到最大值判断是否达到最大值 KillTimer(nIDEvent); /终止计时器终止计时器AfxMessageBox(进行完毕进行完毕); CDialog:OnTimer(nIDEvent); 每隔每隔0.1秒,进秒,进度条前进一步度条前进一步 第第1010章章 基本控件使用基本控

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论