可视化编程课件_05.ppt
《可视化编程课件_05.ppt》由会员分享,可在线阅读,更多相关《可视化编程课件_05.ppt(116页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第5章 对话框与控件n对话框的基本概念n通用对话框类n各种控件的基本用法n图像列表的例子n树控件的例子1对话框的概念(1)n对话框(Dialog)是收集信息或提供反馈的窗口,它通过控件与用户交互n控件(Controls)是执行用户动作的窗口,通常为其父窗口(对话框、边框窗口、视图或控件栏)所有2对话框的概念(2)n消息对话框用于显示提示信息AfxMessageBox(Overwrite existing file?,MB_YESNOCANCEL|MB_ICONQUESTION)n返回值:IDYES、IDNO、IDOK、IDCANCEL、IDABORT、IDIGNORE与IDRETRY3对话框的
2、概念(3)n模态对话框最常见的对话框类型,不允许对话框打开时执行其它操作用DoModal加载模板与显示对话框n非模态对话框允许对话框打开时执行其它操作自己编写构造函数,用Create加载模板,用ShowWindow显示对话框4对话框的概念(4)n模态对话框n非模态对话框CMyDialogCMyDialog*DlgDlg;DlgDlg=new=new CMyDialog(thisCMyDialog(this););DlgDlg-Create(IDD_MYDIALOGCreate(IDD_MYDIALOG););DlgDlg-ShowWindow(SW_SHOWShowWindow(SW_SHOW
3、););CMyDialogCMyDialog DlgDlg;Dlg.DoModalDlg.DoModal();();5对话框的概念(5)n设置对话框背景颜色SetDialogBkColor(RGB(200,200,200),RGB(0,0,0)n处理对话框中的消息OnInitDialog():初始化对话框OnOk():确定按钮OnCancel():取消按钮6对话框的概念(6)n用对话框编辑器设计对话框n用ClassWizard创建对话框类n为对话框中的控件与对话框类中的消息处理函数建立映射n用ClassWizard添加与控件相关成员变量n创建对话框模板并显示对话框7对话框的例子(1)n设计对话
4、框控件 控件控件 控件标识控件标识 说明说明 Static Text IDC_STATIC 学号 Static Text IDC_STATIC 姓名 Static Text IDC_STATIC 年龄 Edit Box IDC_ID Edit Box IDC_NAME Edit Box IDC_AGE Button IDC_TEST Test(Default)8对话框的例子(2)n为控件添加对应的成员变量控件控件控件标识控件标识 成员变量成员变量 输入限制输入限制Edit Box IDC_IDm_IDMaxChars=5Edit Box IDC_NAME m_NameMaxChars=8Edi
5、t Box IDC_AGEm_AgeMinMaxUInt(18,50)9对话框的例子(3)n在CTestDialog:OnInitDialog()中n在CTestDialog:OnTest()中CStringCString strstr;str.Formatstr.Format(年龄年龄:%:%d,m_Aged,m_Age););strstr=学号学号:+:+m_ID+nm_ID+n姓名姓名:+:+m_Name+n+strm_Name+n+str;MessageBox(strMessageBox(str););m_IDm_ID=1001;=1001;m_Namem_Name=Zhang;=Zh
6、ang;m_Agem_Age=20;=20;UpdateData(falseUpdateData(false););10对话框的例子(4)11通用对话框类(1)n通用对话框是预定义对话框,执行各种标准操作(CCommonDialog)通用控件类通用控件类功能功能CColorDialog“颜色”对话框CFileDialog“文件打开与保存”对话框CFindReplaceDialog“查找与替换”对话框CFontDialog“字体”对话框CPrintDialog“打印与打印设置”对话框CPageSetupDialog“页面设置”对话框12通用对话框类(2)nCFontDialog是字体对话框,m_
7、cf用于初始化字体,其类型为CHOOSEFONTGetColor:获得字体颜色GetFaceName:获得字体名字GetCurrentFont:获得选择的字体IsBold:字体是否为粗体IsItalic:字体是否为斜体IsUnderline:字体是否带下划线13通用对话框类(3)n在CTestView类中添加数据成员n在CTestView构造函数中初始化LOGFONT LOGFONT m_Fontm_Font;COLORREF COLORREF m_Colorm_Color;m_Font.lfHeightm_Font.lfHeight=30;=30;m_Font.lfEscapementm_F
8、ont.lfEscapement=0;=0;m_Font.lfWeightm_Font.lfWeight=FW_NORMAL;=FW_NORMAL;m_Font.lfCharSetm_Font.lfCharSet=GB2312_CHARSET;=GB2312_CHARSET;m_Colorm_Color=RGB(255,0,0);=RGB(255,0,0);14通用对话框类(4)n在CTestView:OnDraw()中CFontCFont NewFontNewFont;NewFont.CreateFontIndirect(&m_FontNewFont.CreateFontIndirect(&
9、m_Font););pDCpDC-SelectObject(&NewFontSelectObject(&NewFont););pDCpDC-SetTextColor(m_ColorSetTextColor(m_Color););pDCpDC-TextOut(50,50,-TextOut(50,50,显示字体属性显示字体属性););15通用对话框类(5)n在CTestView:OnDialog()中CFontDialogCFontDialog DlgDlg;if(Dlg.DoModalif(Dlg.DoModal()=IDOK)()=IDOK)Dlg.GetCurrentFont(&m_Font
10、Dlg.GetCurrentFont(&m_Font););m_Colorm_Color=Dlg.GetColorDlg.GetColor();();InvalidateInvalidate(true(true););16通用对话框类(6)17通用对话框类(7)nCColorDialog是颜色对话框,m_cc用于初始化颜色,其类型为CHOOSECOLORGetColor:获得颜色RGB值GetSavedCustomColors:获得自定义颜色SetCurrentColor:设置所选颜色18通用对话框类(8)nCFileDialog是文件对话框,m_ofn用于初始化文件,其类型为OPENFILE
11、NAMEnCFileDialog Dlg(true,NULL,NULL,OFN_READONLY,C+source|*.cpp)GetFileName:获得文件名GetPathName:获得文件路径GetFileExt:获得文件扩展名GetStartPosition:获得文件列表起始位置19通用对话框类(9)nCPrintDialog是打印对话框,m_pd用于初始化打印,其类型为PRINTDLGnCPrintDialog Dlg(true)GetDefaults:获得默认打印机信息GetCopies:获得打印份数GetFromPage:获得打印起始页GetToPage:获得打印终止页20通用对
12、话框类(10)nCFindReplaceDialog是查找对话框,m_fr用于初始化查找,类型为FINDREPLACEn非模态对话框:CFindReplaceDialog*pDlg=new FindReplaceDialog()FindNext:是否查找字符串下一次出现GetFindString:获得查找字符串GetReplaceString:获得替换字符串MatchCase:是否精确匹配字符串21控件类型(1)控件类控件类控件控件说明说明CStatic静态控件标识其它控件的文本CButton按钮控件下压按钮、单选钮与复选框CListBox列表框控件字符串列表CCombBox组合框控件编辑框与
13、列表框的结合CEdit编辑框控件文本输入CScrollBar滚动条控件对话框中的滚动条CAnimateCtrl 动画控件显示AVI视频文件CHeaderCtrl标题控件显示在文本列上的按钮CHotKeyCtrl热键控件创建热键快速执行动作22控件类型(2)控件类控件类控件控件说明说明CImageList图像列表控件大小相同的图标或位图CListCtrl列表控件图标与文字组成的列表CProgressCtrl进展条控件任务完成进展CRichEditCtrl格式编辑框带格式的文本输入CSilderCtrl滑动条控件包含滑动条与tick标记CSpinButtonCtrl 旋转框控件通过双向箭头增减值C
14、StatusBarCtrl状态栏控件状态信息显示栏CToolBarCtrl工具栏控件工具信息相示栏CToolTipCtrl工具栏提示显示工具用途的窗口23控件类型(3)控件类控件类控件控件说明说明CTabCtrl标签控件显示多页信息或控件CTreeCtrl树状列表控件 显示项的层次列表结构CBitmapButton位图按钮控件 位图做标签的按钮CCheckListBox复选框控件由复选框组成的列表CDragListBox拖放列表控件 允许用户拖动列表项CDateTimeCtrl日期时间控件 显示日期与时间CMonthCalCtrl月历控件显示月历CIPAddressCtrl IP地址控件显示I
15、P地址24静态控件(1)n静态控件(CStatic)用于显示文本、图标、位图等,通常不进行输入与输出n通过CStatic成员函数操作静态控件,例如将静态控件变为输入IDC_STATIC到IDC_CTRLID、IDC_CTRLNAME、IDC_CTRLAGE25静态控件(2)n为静态控件添加成员变量n在CTestDialog:OnTest()中控件控件控件标识控件标识成员变量成员变量Static BoxIDC_CTRLIDm_CtrlIDStatic BoxIDC_CTRLNAMEm_CtrlNameStatic BoxIDC_CTRLAGEm_CtrlAgem_CtrlID.SetWindow
16、Text(IDm_CtrlID.SetWindowText(ID););m_CtrlName.SetWindowText(NAMEm_CtrlName.SetWindowText(NAME););m_CtrlAge.SetWindowText(AGEm_CtrlAge.SetWindowText(AGE););26静态控件(3)27按钮控件(1)n按钮控件(CButton)是一种子窗口,通过单击或双击执行某种操作,主要包括:复选框、单选钮和下压按钮n通过CButton成员函数操作按钮控件GetIcon()、GetCursor()、GetBitmap()、GetButtonStyle()、Get
17、State()、GetCheck()与对应的Set函数28按钮控件(2)n修改按钮控件属性选中IDC_TEST的Icon属性n为按钮控件添加成员变量IDC_TEST对应于m_Testn在CTestDialog:OnInitDialog()中HICON HICON hIhIconcon;hIhIconcon=AfxGetAppAfxGetApp()-()-LoadIcon(IDR_MAINFRAMELoadIcon(IDR_MAINFRAME););m_Test.SetIcon(m_Test.SetIcon(hIhIconcon););29按钮控件(3)30按钮控件(4)n增加一个复选框控件ID
18、C_MYCHECK属于按钮控件n在CTestDialog:OnMyCheck()中CButtonCButton*pCheckpCheck=(=(CButtonCButton*)*)GetDlgItemGetDlgItem (IDC_MYCHECK);(IDC_MYCHECK);CStringCString strstr;str.Formatstr.Format(复选框状态复选框状态:%d,pCheckd,pCheck-GetCheckGetCheck();();MessageBox(strMessageBox(str););31组合框控件(1)n列表框控件(CListBox)用于显示列表项,查
19、看和选择列表项n编辑框控件(CEdit)用于输入文本信息n组合框控件(CComboBox)由静态控件、列表框和编辑框控件组成32组合框控件(2)nCComboBox的成员函数GetCurSel:获得列表框当前项位置GetLBText:获得列表框指定项内容SetCurSel:设置列表框指定项位置AddString:列表框结尾添加字符串InsertString:列表框插入字符串DeleteString:列表框删除字符串ResetContent:删除列表框中所有项33组合框控件(3)n设计对话框控件控件控件控件标识控件标识说明说明Static Text IDC_STATICNumberCombo B
20、oxIDC_NUMBER Group BoxIDC_DISPLAY DisplayButtonIDC_LINELineButtonIDC_ELLIPSE Ellipse(Default)34组合框控件(4)n设置IDC_NUMBER的Data属性添加数据First、Second与Thirdn设置IDC_NUMBER的Type属性DropDown与DropListn为IDC_NUMBER添加成员变量控件控件变量类型变量类型成员变量成员变量IDC_NUMBERValue CStringm_NumberIDC_NUMBERControlm_CtrlNumber35组合框控件(5)n在CTestDia
21、log类定义中n在CTestDialog:OnInitDialog()中GetDlgItem(IDC_DISPLAYGetDlgItem(IDC_DISPLAY)-)-GetWindowRectGetWindowRect (&(&m_Rectm_Rect););ScreenToClient(&m_RectScreenToClient(&m_Rect););m_CtrlNumber.SetCurSel(0);m_CtrlNumber.SetCurSel(0);m_CtrlNumber.GetLBText(m_CtrlNumberm_CtrlNumber.GetLBText(m_CtrlNumbe
22、r.GetCurSel(),m_NumberGetCurSel(),m_Number););private:private:CRectCRect m_Rectm_Rect;36组合框控件(6)n在CTestDialog:OnPaint()的else中n在CTestDialog:OnSelchangeNumber()中m_CtrlNumber.GetLBText(m_CtrlNumberm_CtrlNumber.GetLBText(m_CtrlNumber.GetCurSel(),m_NumberGetCurSel(),m_Number););InvalidateRect(&m_RectInva
23、lidateRect(&m_Rect););CPaintDCCPaintDC dc(thisdc(this););dc.SetTextColor(RGB(0,0,255);dc.SetTextColor(RGB(0,0,255);dc.TextOut(m_Rect.left+dc.TextOut(m_Rect.left+2 20,m_Rect.top+0,m_Rect.top+2 20,0,m_Numberm_Number););37组合框控件(7)n在CTestDialog:OnEditchangeNumber()中m_CtrlNumber.GetWindowText(m_Numberm_C
24、trlNumber.GetWindowText(m_Number););InvalidateRect(&m_RectInvalidateRect(&m_Rect););或者或者CComboBoxCComboBox*pCombpComb=(=(CComboBoxCComboBox*)*)GetDlgItemGetDlgItem (IDC_NUMBER);(IDC_NUMBER);pCombpComb-GetWindowText(m_NumberGetWindowText(m_Number););InvalidateRect(&m_RectInvalidateRect(&m_Rect););38组
25、合框控件(8)n在CTestDialog:OnLine()中n在CTestDialog:OnEllipse()中CDC*CDC*pDCpDC;pDCpDC=GetDCGetDC();();pDCpDC-MoveTo(m_Rect.left+20,m_Rect.top+20);-MoveTo(m_Rect.left+20,m_Rect.top+20);pDCpDC-LineTo(m_Rect.right-20,m_Rect.bottom-20);-LineTo(m_Rect.right-20,m_Rect.bottom-20);ReleaseDC(pDCReleaseDC(pDC););CDC*
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 可视化 编程 课件 _05
限制150内