《基本控件使用》PPT课件.ppt
《《基本控件使用》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《基本控件使用》PPT课件.ppt(48页珍藏版)》请在三一办公上搜索。
1、第10章 基本控件使用(二),第10章 基本控件使用(二),10.1 按钮类10.2 列表框类10.3 应用实例,10.1 按钮类,按钮是一个矩形窗口,通常包含一个标题用来说明按钮的作用。CButton(按钮控件)类是从CWnd类继承下来的。,10.1.1 按钮类的结构,VC+在Afxwin.h中定义了CButton类的结构,结构代码:,class CButton:public CWndDECLARE_DYNAMIC(CButton)public:CButton();/ConstructorsBOOL Create(LPCTSTR lpszCaption,DWORD dwStyle,const
2、 RECT,#if(WINVER=0 x400)HICON SetIcon(HICON hIcon);HICON GetIcon()const;HBITMAP SetBitmap(HBITMAP hBitmap);HBITMAP GetBitmap()const;HCURSOR SetCursor(HCURSOR hCursor);HCURSOR GetCursor();#endif/Overridables(for owner draw only)virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);/Implementationp
3、ublic:virtual CButton();protected:virtual BOOL OnChildNotify(UINT,WPARAM,LPARAM,LRESULT*);,CButton类中按钮特有的样式,10.1.2 按钮类的方法,按钮类(CButton类)提供了如下的访问方法。,10.2 列表框类,CListBox类在MFC类层次结构中的位置。,10.2.1 列表框类的结构,结构见教材P241,列表框控件可用的样式:,列表框类的结构,表10-4显示了消息映像项,它用于处理列表框通知。,10.2.2 列表框类的方法,1通用 方法,2单选列表框的方法,列表框的默认模式是单选项模式;所
4、有的通用方法均适用于单选项列表框。,3多选列表框的方法,方法 说明 GetAnchorIndex()获得多项选择列表框中当前定位项的下标GetCaretIndex()获得多项选择列表框中具有光标矩形的项的下标GetSelCount()获得多项选择列表框中当前所选的项的数目GetSelItems()将所有当前被选列表框项下标放入一整型数组缓冲区SelItemRange()切换多选择列表框项范围的选择状态SetAnchorIndex()在多项选择列表框中扩充选择设置开始(定位)项SetCaretIndex()在多项选择列表框中指定下标项设置光标矩形SetSel()在多项选择列表框中切换项目的选择状
5、态,多选项列表框扩展了标准单项选择列表框的能力,可以解决在一个列表框中选择多项带来的复杂性,4特定字符串方法,方法 说明 AddString()在列表框中加入一个字符串DeleteString()从列表框中删除一个字符串Dir()从当前目录加文件名放入列表框FindString()在列表框中搜索一字符串FindStringExact()在列表框中搜索第一个与指定搜索字符串匹配的字符串InsertString()在列表框指定下标处插入一字符串ResetContent()清除列表框中的所有项SelectString()在单选列表框中搜索并选择一字符串,适用于单选择和多选择两种模式的列表框,这些方法
6、处理列表框中的字符串项。,5虚拟方法,CListBox类还声明了几个虚拟方法,编程时可从CListBox类中派生一些类替换到应用程序的类中。,方法 说明 CharToItem()可替换此方法为自绘列表框(没有字符串)处理WM_CHARCompareItem()由MFC调用以得到排序的自绘列表框中的新项的位置DeleteItem()当用户从自绘列表框中删除一项时MFC调用此方法DrawItem()当确定自绘列表框项必须重绘时MFC调用此方法MeasureItem()当一自绘列表框被创建时MFC调用此方法来决定列表框的维数VKeyToItem()可替换此方法,处理具有LBS_WANTKEYBOAR
7、DINPUT样 式的列表框的WM_KEYDOWN消息,10.3 按钮类与列表框类的应用实例,例10-1 编写应用程序。,1应用程序的界面设计,1应用程序的界面设计,对于成组的单选按钮,只在每组的第一个按钮的属性中选中Group设置,在Sex Selecting组中只有Boy单选按钮选中Group属性,在Age Range组中只有“20”单选按钮选中Group属性,设计过程中,同一组单选按钮必须一个接一个地放进对话框中,中间不能插入其它的控件,顺序放置的原因:Visual C按照放入对话框中的先后顺序,给每个控件赋一个ID值,所以控件的ID值是连续的。Group属性的控件之间的控件为一组。从re
8、source.h的资源头文件中可得到ID值#define IDC_SHOW_BUTTON 1006#define IDC_HIDE_BUTTON 1007#define 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,2应用程序的代码编程部分1)给各个控件连接变量(
9、什么情况下需要连接变量?),2)与有关按钮、编辑框等控件的连接方法(什么情况下需要定义方法?),3)方法的实现(3.1)给复选框IDC_DATE_CHECK添加代码,void CSELECTBOXDlg:OnDataCheck()UpdateData(TRUE);/以当前的屏幕显示内容更新控件的变量 if(m_DateCheck=TRUE)/若选中Date则在编辑框中显示日期 CTime tNow;/创建CTime的对象tNow=CTime:GetCurrentTime();/获取当前系统日期CString sNow=tNow.Format(%y.%m.%d);/%y.%B.%d/格式化,并将
10、时间值转换为字符串类型m_DateEdit.SetSel(0,-1);/选择编辑框中的全部内容m_DateEdit.ReplaceSel(sNow);/将编辑框替换为系统日期 else m_DateEdit.SetSel(0,-1);m_DateEdit.ReplaceSel();/编辑框显示为空 UpdateData(FALSE);/将控件的值更新屏幕,void CSELECTBOXDlg:OnTimeCheck()UpdateData(TRUE);/以当前的屏幕显示内容更新控件的变量 if(m_TimeCheck=TRUE)/若选中Time则在编辑框中显示时间 CTime tNow;/创建
11、CTime的对象tNow=CTime:GetCurrentTime();/获取当前系统时间CString sNow=tNow.Format(“%I:%M:%S”);/24小时:%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)为复选框
12、IDC_TIME_CHECK添加代码,void CSELECTBOXDlg: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);/也可表示成:GetDlg
13、Item(IDC_TIME_EDIT)-EnableWindow(TRUE);,CWnd类的成员函数return:A pointer to the given control or child window.,关联变量为BOOL型,关联变量为CEdit型,(3.3)给Enable按钮添加代码,void CSELECTBOXDlg:OnDisableButton()/使复选框不可选GetDlgItem(IDC_DATE_CHECK)-EnableWindow(FALSE);GetDlgItem(IDC_TIME_CHECK)-EnableWindow(FALSE);/使编辑框不可用m_DateE
14、dit.EnableWindow(FALSE);m_TimeEdit.EnableWindow(FALSE);,(3.4)为Disable按钮连接代码,void CSELECTBOXDlg:OnShowButton()/使编辑框可见GetDlgItem(IDC_DATE_CHECK)-EnableWindow(SW_SHOW);GetDlgItem(IDC_TIME_CHECK)-EnableWindow(SW_SHOW);GetDlgItem(IDC_DATE_EDIT)-EnableWindow(SW_SHOW);/表示为:m_DateEdit.ShowWindow(SW_SHOW);Ge
15、tDlgItem(IDC_TIME_EDIT)-EnableWindow(SW_SHOW);/表示为:m_TimeEdit.ShowWindow(SW_SHOW);,基类CWnd的成员函数,(3.5)为Show Again按钮添加代码,void CSELECTBOXDlg:OnHideButton()/使编辑框不可见GetDlgItem(IDC_DATE_CHECK)-EnableWindow(SW_HIDE);GetDlgItem(IDC_TIME_CHECK)-EnableWindow(SW_HIDE);m_DateEdit.ShowWindow(SW_HIDE);/表示为:m_DateE
16、dit.ShowWindow(SW_SHOW);m_TimeEdit.ShowWindow(SW_HIDE);/表示为:m_TimeEdit.ShowWindow(SW_SHOW);,基类CWnd的成员函数,(3.6)为Hide the Clock Setting按钮添加实现代码,void CSELECTBOXDlg:OnShowSexAgeBUTTON()char sEdit50;/声明字符串变量,用来存放显示在编辑框中的字符 int iSexRADIO;int iAgeRADIO;/表示选中按钮的状态/单选按钮组的状态,返回被选按钮的IDiSexRADIO=GetCheckedRadioB
17、utton(IDC_Boy_RADIO,IDC_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_Ag
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本控件使用 基本 控件 使用 PPT 课件

链接地址:https://www.31ppt.com/p-5487070.html