Windows标准控件在可视化编程中的应用.pptx

上传人:莉*** 文档编号:77432453 上传时间:2023-03-14 格式:PPTX 页数:131 大小:1.35MB
返回 下载 相关 举报
Windows标准控件在可视化编程中的应用.pptx_第1页
第1页 / 共131页
Windows标准控件在可视化编程中的应用.pptx_第2页
第2页 / 共131页
点击查看更多>>
资源描述

《Windows标准控件在可视化编程中的应用.pptx》由会员分享,可在线阅读,更多相关《Windows标准控件在可视化编程中的应用.pptx(131页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、19.1概述9.1.1 在程序界面中增加控件方法1.使用类的成员函数完成控件的增加使用控件类定义一个实例对象Cbuttonmybtn;调用该类的Create()函数创建相应的控件Mybtn.Create(DWORDdwStyle,constRECT&rect,CWnd*pParentWnd,UINTnID);使用ShowWindow()函数显示该控件ShowWindow()调用MoveWindow()、SetWindowPos()、SetWindowText()等函数等窗口管理函数来移动、显示或隐藏控件、改变控件的位置、尺寸以及其它操作第1页/共131页2窗口类名窗口类简介CButtonCBu

2、tton代表一个按钮的小长方形的子窗口(按钮控件)CComboBoxCComboBox代表一个选择列表框的子窗口(组合框控件)CEditCEdit代表一个接收用户输入的文本输入子窗口(编辑框控件)CListBoxCListBox代表字符串列表的子窗口(列表框控件)CScrollBarCScrollBar代表一个滚动条的子窗口(滚动条控件)CStaic CStaic 代表一个显示静态文本的子窗口(静态控件)系统预定义的窗口类第2页/共131页2.使用可视化工具在基于对话框的应用程序中添加控件3第3页/共131页9.1.2 为控件添加消息映射消息映射:对控件进行操作,从而引发各种事件,在应用程序中

3、添加控件的消息响应的方法,并将之绑定的机制。如:ON_BN_CLICKED(IDC_BUTTON1,OnBnClickedButton1)4标明了消息的类型控件的ID处理消息的函数在对话框对应的头文件中申明处理事件的函数;如:afx_msgvoidOnBnClickedButton1();消息映射形式:BEGIN_MESSAGE_MAPON_BN_CLICKED(IDC_BUTTON1,OnBnClickedButton1)END_MESSAGE_MAP第4页/共131页5子窗口子窗口控件控件消息通知代码消息通知代码对应事件简介对应事件简介按钮控按钮控件件BN_CLICKEDBN_CLICKE

4、D用户在按钮子窗口中单击用户在按钮子窗口中单击BN_DOUBLECLICKBN_DOUBLECLICKEDED用户在按钮子窗口中双击用户在按钮子窗口中双击编编辑辑框框控件控件EN_CHANGEEN_CHANGE用用户户在在编编辑辑框框子子窗窗口口中中更更改改了了输输入入框中的数据框中的数据EN_ERRSPACEEN_ERRSPACE编辑框的空间已用完编辑框的空间已用完EN_HSCROLLEN_HSCROLL水平滚动条被按下并被激活水平滚动条被按下并被激活EN_KILLFOCUSEN_KILLFOCUS编辑框失去输入焦点编辑框失去输入焦点EN_MAXTEXTEN_MAXTEXT输输入入的的正正文

5、文数数超超过过了了编编辑辑框框的的最最大大容量容量EN_SETFOCUSEN_SETFOCUS编辑框子窗口获得输入焦点编辑框子窗口获得输入焦点EN_UPDATEEN_UPDATE编辑框子窗口将更新显示内容编辑框子窗口将更新显示内容EN_VSCROLLEN_VSCROLL垂直滚动条被按下并激活垂直滚动条被按下并激活第5页/共131页6子窗口子窗口控件控件消息通知代码消息通知代码对应事件简介对应事件简介列表框列表框控件控件LBN_DBLCLKLBN_DBLCLK字符串列表框中的字符串被双击字符串列表框中的字符串被双击LBN_ERRSPACELBN_ERRSPACE分分配配给给字字符符串串列列表表框

6、框的的内内存存已已经经用用完完LBN_KILLFOCUSLBN_KILLFOCUS字符串列表框失去焦点字符串列表框失去焦点LBN_SELCHANGELBN_SELCHANGE在在字字符符串串列列表表框框进进行行的的选选择择发发生生了了改变改变LBN_SELCANCELLBN_SELCANCEL在在列列表表框框中中取取消消某某个个选选择择时时发发出出的的消息消息LBN_SETFOCUSLBN_SETFOCUS字符串列表框获得输入焦点字符串列表框获得输入焦点组合框组合框控件控件CBN_DBLCLKCBN_DBLCLK选择选择组合组合框中的字符串被双击框中的字符串被双击CBN_DROPDOWNCBN

7、_DROPDOWN选择选择组合组合框将被取消框将被取消CBN_EDITCHANGECBN_EDITCHANGE 选择选择组合组合框中的正文将被修该框中的正文将被修该CBN_EDITUPDATECBN_EDITUPDATE 选择选择组合组合框中的正文将被更新框中的正文将被更新CBN_ERRSPACECBN_ERRSPACE分配给选择分配给选择组合组合框的内存已用完框的内存已用完CBN_KILLFOCUSCBN_KILLFOCUS选择选择组合组合框失去焦点框失去焦点第6页/共131页7子窗口控子窗口控件件消息通知代码消息通知代码对应事件简介对应事件简介组合框控组合框控件件CBN_SELENDCAN

8、CCBN_SELENDCANCELEL当当用用户户选选择择了了列列表表框框中中的的某某一一项项后后又又选选了了其其他他控控键键或或关关闭闭对对话话框框,此此时时发发出此消息出此消息CBN_SELCHANGECBN_SELCHANGE选择列表框中的选择项发生改变选择列表框中的选择项发生改变CBN_SELENDOKCBN_SELENDOK用用户户选选择择了了某某一一项项,或或选选择择后后关关闭闭了了组合组合框后发送的消息框后发送的消息CBN_CLOSEUPCBN_CLOSEUP组合框关闭时发送的消息组合框关闭时发送的消息CBN_SETFOCUSCBN_SETFOCUS选择选择组合组合框获得焦点框获

9、得焦点滚滚动动条条控控件件没有与滚动条相关的通知代码没有与滚动条相关的通知代码静态控件静态控件 没有与静态文本框相关的通知代码没有与静态文本框相关的通知代码控件及其相应的通知代码第7页/共131页8为控件的事件添加消息映射第8页/共131页9为处理消息的成员函数添加代码void Cch07_1_2Dlg:OnBnClickedExit()OnOK();第9页/共131页9.1.3 在应用程序中使用控件1.使用GetDlgItem函数根据控件ID来获取控件的地址。GetDlgItem函数的原型为:virtual CWnd*GetDlgItem(int nID)const;CEdit*pEdit;

10、/定义一个指向CEdit控件指针pEdit=(C Edit*)GetDlgItem(IDD_EDIT1);/获取ID为IDD_EDIT1编辑框的指针 pEdit-SetSel(2,5);/使用控件指针10第10页/共131页2、为控件定义标识符如果控件使用频繁,可为控件指定一个标识符。控件类型有两种:一种是控件类型,这样定义的控件标识符就是控件类的实例对象,可以用标识符访问类的所有成员;另一种是将控件定义为一个C+数据类型,如将编辑框定义为CString类型。11第11页/共131页12第12页/共131页控件定义为value类型的刷新问题:刷新操作都是通过DDX技术来完成,DDX是将控件ID

11、和控件变量绑定的一种技术,其数据交换通过DoDataExchange()函数:Void DoDataExchange(CDataExchange*pDX)CDialog:DoDataExchange(pDX);DDX_Control(pDX,IDC_EDIT1,m_edit);DDX_Text(pDX,IDC_EDIT2,m_name);UpdateData(true)UpdateData(false)第13页/共131页9.1.4 自定义控件类控件类可以被继承的类,派生出新的控件类,就可以扩展控件类的功能。操作步骤:1、在项目上单击快捷菜单,选择“添加-类”,进入类向导,选择“MFC类”,然

12、后,单击“添加”按钮142、指定派生类的基类,输入新类的名称3、增加类的成员,扩展控件类的功能;4、为控件定义变量,在变量类型中输入自定义的控件类第14页/共131页159.2 按钮控件及其应用 按钮控件普通按钮圆按钮复选框按钮组框按钮自绘按钮第15页/共131页169.2.1 按钮控件的创建过程 CButton类的成员函数Create负责创建按钮控件,该函数的声明为:BOOLCreate(LPCTSTRlpszCaption,/指定了按钮显示的正文DWORDdwStyle,/按钮的风格constRECT&rect,/按钮的位置和大小CWnd*pParentWnd,/指向父窗口,UINTnID

13、/按钮的ID)第16页/共131页17按钮控件消息:ON_BN_CLICKEDON_BN_DBLCLICKEDON_COMMAND两个类似按钮是最常见的控件之一复选框单选按钮下压式按钮分组框常用于只有两种完全相反状态的情况下适用于同一组属性相同的数据中选一个数据适用于消息的发送没有太多的操作只是在窗口中划分区域范围第17页/共131页18GetCheck()SetCheck()GetBitmap()SetBitmap()GetButtonStyle()SetButtonStyle()GetCursor()SetCursor()GetIcon()SetIcon()GetState()SetSta

14、te()CButton类的成员函数在知道按钮ID的前提下,还可使用与按钮有关的CWnd成员函数来设置或查询按钮状态CheckDlgButtonCheckRadioButtonGetCheckedRadioButtonIsDlgButtonCheckedGetWindowTexGetWindowTextLengthSetWindowText第18页/共131页19MFC还提供了一个CBitmapButton的类,允许用户以图标的方式显示按钮,它是在CButton下派生的 MFC调用方法DrawItem()在按钮上绘制位图,LoadBitmaps()方法为一个CBitmapButton对象附上位图

15、,最多可以有4个位图自定义按钮第19页/共131页209.2.2 按钮控件示例 第20页/共131页21主要步骤:1.创建基于对话框项目2.设置按钮的属性IDCaptionGroupAutoIDC_BUTTON1这里是一个按钮,按我吧!这里是一个按钮,按我吧!IDC_BUTTON2这是缺省按钮,按下看看吧!这是缺省按钮,按下看看吧!IDC_RADIO1自动单选按钮自动单选按钮1IDC_RADIO2自动单选按钮自动单选按钮2IDC_RADIO3单选按钮单选按钮1IDC_RADIO3单选按钮单选按钮2IDC_CHECK1自动复选按钮自动复选按钮1IDC_CHECK2复选按钮复选按钮2第21页/共1

16、31页22添加成员变量控件控件ID变量类型变量类型成员变量名成员变量名IDC_BUTTON1CButtonM_btn1IDC_BUTTON2CButtonM_btn2IDC_RADIO3CButtonM_rad3IDC_RADIO4CButtonM_rad4IDC_CHECK2CButtonM_chk2添加消息响应函数控件控件ID成员变量名成员变量名消息处理函数消息处理函数IDC_BUTTON1M_btn1OnBnClickedButton1IDC_BUTTON2M_btn2OnBnClickedButton2IDC_RADIO3M_rad3OnBnClickedRadio3IDC_RADIO

17、4M_rad4OnBnClickedRadio4IDC_CHECK2M_chk2OnBnClickedCheck2第22页/共131页23void Cch07_1Dlg:OnBnClickedButton1()m_btn1.SetWindowText(L你已按下了按钮!);void Cch07_1Dlg:OnBnClickedButton2()m_btn2.SetWindowText(L按钮已被按下!);void Cch07_1Dlg:OnBnClickedRadio3()m_rad3.SetCheck(1);m_rad4.SetCheck(0);第23页/共131页24void Cch07_

18、1Dlg:OnBnClickedRadio4()m_rad3.SetCheck(0);m_rad4.SetCheck(1);void Cch07_1Dlg:OnBnClickedCheck2()if(m_chk2.GetCheck()m_chk2.SetCheck(0);elsem_chk2.SetCheck(1);第24页/共131页259.3 滚动条控件 滚动条是一个交互式的、高度可视化的控件它包括一个滑块、滚动条的两端的按钮等。滚动条控件与属于窗口的滚动条是不一样的处于窗口的滚动条是由该窗口创建、管理和释放的滚动条控件是由用户创建、管理和释放的第25页/共131页269.3.1 滚动条类

19、的结构及其方法 滚动条可以通过通知代码来创建,也可以用对话框资源模板来创建第26页/共131页27常用滚动条动作标识及其说明SB_TOP/SB_BOTTOM:滚动到滚动条最顶/底端SB_LINEUP/SB_LINEDOWN:向上/下滚动一行SB_LEFT/SB_RIGHT:滚动到左/右边SB_LINELEFT/SB_LINERIGHT:向左/右滚动一行SB_PAGEUP/SB_PAGEDOWN:向上/下滚动一页SB_PAGELEFT/SB_PAGERIGHT:向左/右滚动一页SB_THUMBPOSITION:滚动框移动到新位置SB_THUMBTRACK:滚动框被拖动SB_ENDSCROLL:滚

20、动到最终位置第27页/共131页289.3.2 创建与初始化滚动条类 创建CScrollBar对象的一般步骤(1)用C+关键字new和构造函数CScrollBar:CScrollBar()为一个ScrollBar对象分配一个实例(2)初始化CScrollBar对象,将一个Windows滚动条赋予它,并用CScroll:Create()方法设置参数和样式分配一个滚动条控件对象并返回指向该对象的指针CScrollBar:pMyScroll=new CScrollBar调用CScrollBar:Create()方法初始化指针BOOL Create(DWORD dwStyle,const RECT&r

21、ect,CWnd*pParentWnd,UINT nID);滚动条窗口的样式表示控件的大小和位置指向控件所属窗口的指针父窗口与滚动条通信的标识第28页/共131页29在设置滚动条控件时,要通过如下方法设置其范围CScrollBar:SetScrollRange()例如,设置滚动范围为-100到100的垂直滚动条pMyScroll-SetScrollRange(SB_VERT,-100,100);通过SetScrollPos()设置滚动块当前位置例如,滚动快的位置在-100到100的中间,即为0的位置pMyScroller-SetScrollPos(0);第29页/共131页309.3.3滚动条

22、类编程实例 标题为ApplicationofScrollBar滚动条的滚动范围设为0到20单击滚动块与箭头之间的区域。滚动块上移或下移三格,编辑框中的数字加3或减3单击向上或向下的箭头,滚动块向上或向下移动一格,编辑框中的数字加1或减1按住滚动块上下拖动。编辑框中的数字随着随之变化当前值为10单击Up按钮,滚动块移到最上边,编辑框的数字变为0单击Down按钮,滚动块移到最下边,编辑框的数字变为20单击Reset按钮,滑块移到中间,编辑框的数字变为10单击Exit按钮,退出应用程序第30页/共131页31(1)应用程序的可视化编程部分对象对象ID变量名及类型变量名及类型Caption只读只读滚动

23、条滚动条IDC_SCROLLBARm_scrollbar(control)无无编辑框编辑框IDC_EDIT1m_dispinfo(control)无无Top按钮按钮IDC_BTN_TOP&TopBottom按钮按钮 IDC_BTN_BOTTOM&BottomReset按钮按钮IDC_BTN RESET&ResetExit按钮按钮IDC_BTN EXIT&Exit第31页/共131页32(2)应用程序的代码编程部分在Cch07_2Dlg类中加入一个成员函数ChangeDisplayInfo(intpos),用于将数值型参数pos显示到编辑框控件中第32页/共131页第33页/共131页void

24、Cch07_2Dlg:ChangeDisplayInfo(int pos)TCHAR sPos10;_itow(pos,sPos,10);m_dispinfo.SetSel(0,-1);m_dispinfo.ReplaceSel(sPos);UpdateData(FALSE);/将与控件绑定的变量内容显示到屏幕上函数_itow(pos,sPos,10)是将数值pos按十进制形式转化到字符串sPos中,SetSel()和ReplaceSel()是CEdit类的成员函数,SetSel(0,-1)表示选中编辑框中的所有内容,ReplaceSel(sPos)表示用sPos的值去替换编辑框中的内容。第3

25、4页/共131页35BOOL Cch07_2Dlg:OnInitDialog()CDialog:OnInitDialog();SetIcon(m_hIcon,TRUE);SetIcon(m_hIcon,FALSE);m_scrollbar.SetScrollRange(0,20);m_scrollbar.SetScrollPos(10);ChangeDisplayInfo(m_scrollbar.GetScrollPos();return TRUE;(b)初始化滚动条第35页/共131页在Cch07_2Dlg的属性框中选择“消息”选项卡,选择“WM_VSCROLL”消息,单击右侧的向下的箭头按

26、钮,然后添加一个成员函数OnVScroll第36页/共131页37(3)给滚动条消息添加代码 void Cch07_2Dlg:OnVScroll(UINT nSBCode,UINT nPos,CScrollBar*pScrollBar)int iNowPos;switch(nSBCode)if(pScrollBar=&m_scrollbar)case SB_THUMBTRACK:m_scrollbar.SetScrollPos(nPos);ChangeDisplayInfo(m_scrollbar.GetScrollPos();第37页/共131页38case SB_LINEDOWN:iNow

27、Pos=m_scrollbar.GetScrollPos();iNowPos=iNowPos+1;if(iNowPos20)iNowPos=20;m_scrollbar.SetScrollPos(iNowPos);ChangeDisplayInfo(m_scrollbar.GetScrollPos();break;第38页/共131页39case SB_LINEUP:/单击滚动条向上的箭头iNowPos=m_scrollbar.GetScrollPos();iNowPos=iNowPos-1;if(iNowPos20)iNowPos=20;m_scrollbar.SetScrollPos(iN

28、owPos);ChangeDisplayInfo(m_scrollbar.GetScrollPos();break;第40页/共131页41case SB_PAGEUP:/单击滚动条上面的箭头与滚动块之间的区域iNowPos=m_scrollbar.GetScrollPos();iNowPos=iNowPos-3;if(iNowPosSetRange(0,100);pSpin-SetPos(50);pSpin-GetBuddy()-SetWindowText(L5.0);returnTRUE;设置Spin的范围是0100,当前位置是50,同时设置它的配对控件的显示值第99页/共131页100在

29、对话框中添加WM_VSCROLLWM_VSCROLL消息的响应:void CEx9_9Dlg:OnVScroll()if(pScrollBar-GetDlgCtrlID()=IDC_SPIN1)CString strValue;strValue.Format(L%3.1f,(double)nPos/10.0);(CSpinButtonCtrl*)pScrollBar)-GetBuddy()-SetWindowText(strValue);CDialog:OnVScroll(nSBCode,nPos,pScrollBar);第100页/共131页1019.8.3 Progress控件的使用 进度

30、控件是一个用来指示长时间操作的进展程度的控件。MFC中表示进度控制的是CProgressCtrl类 进度条有一个范围和当前位置。范围表示整个操作的持续时间,当前位置表示当前进行到的位置,进度条根据当前位置来判断进行的百分比,来显示进度第101页/共131页102 添加一个Progress控件,保持默认ID,设置Smooth属性。在旁边添加一个按钮,设置ID为“IDC_BUTTON_START”,Caption为“开始”在OnInitDialog中添加如下代码:CProgressCtrl*pProg=(CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);pProg-

31、SetRange(0,100);pProg-SetPos(50);为“开始”按钮添加点击事件实现代码:voidCEx9_9Dlg:OnButtonStar()CProgressCtrl*pProg=(CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);pProg-SetPos(0);SetTimer(1000,100,NULL);第102页/共131页103在CCtrlDlg中添加对WM_TIMER消息的响应函数:void CEx9_9Dlg:OnTimer(UINT nIDEvent)if(nIDEvent=1000)CProgressCtrl*pProg=(C

32、ProgressCtrl*)GetDlgItem(IDC_PROGRESS1);pProg-SetPos(pProg-GetPos()+1);if(pProg-GetPos()=100)KillTimer(nIDEvent);AfxMessageBox(进行完毕);CDialog:OnTimer(nIDEvent);每隔0.1秒,进度条前进一步第103页/共131页1049.8.4 Slider控件的使用 滑块控件可以使用户通过拖动滑块来快速获得指定的数据。当用户滑动滑块的时候,控件将发送消息来指示变化。滑块控件在你选择一系列离散值或者一段连续范围内的时候十分有用。第104页/共131页CPr

33、ogressCtrl类的主要成员 成员成员描述描述CProgressCtrl构造CProgressCtrl对象。Create创建进度条。SetRange设置表示范围。SetPos设置当前位置。SetStep设置渐进步长。StepIt前进一步。第105页/共131页106 在对话框上增加一个Slider控件,设置Point属性为“Bottom/Right”,然后在旁边添加一个Static控件,ID设置为IDC_STATIC_SLIDER。该控件用来显示滑块的当前位置。在OnInitDialog函数中添加如下代码:CProgressCtrl*pProg=(CProgressCtrl*)GetDlg

34、Item(IDC_PROGRESS1);pProg-SetRange(0,100);pProg-SetPos(50);为开始按钮添加点击事件,实现代码如下:voidCEx9_9Dlg:OnButtonStar()CProgressCtrl*pProg=(CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);pProg-SetPos(0);SetTimer(2008,100,NULL);第106页/共131页107 为了响应滑块移动的消息,添加WM_HSCROLL消息的响应(Slider是水平的,如果是垂直的,则需要响应WM_VSCROLL)。实现如下:void CE

35、x9_9Dlg:OnHScroll()if(pScrollBar-GetDlgCtrlID()=IDC_SLIDER1)CSliderCtrl*pSlide=(CSliderCtrl*)pScrollBar;CString strText;strText.Format(L%d,pSlide-GetPos();SetDlgItemText(IDC_STATIC_SLIDER,strText);CDialog:OnHScroll(nSBCode,nPos,pScrollBar);第107页/共131页1089.8.5 Date Time Picker控件的使用 Date Timer Picker可

36、以用来接收日期或者时间输入。用户可以直接按照指定的形式输入,也可以在弹出的日历控件中选择日期。如果让用户以字符串形式输入,则由于输入的多样性,程序不好解析第108页/共131页109成员成员描述描述CDateTimeCtrl构造CDateTimeCtrl对象。Create创建进日期控件。SetMothCalColor设置内嵌的日历控件的颜色,包括背景、文字等颜色。SetFormat设置显示日期的格式。SetRange设置日期范围。GetTime获得表示的时间。CDateTimeCtrl类主要成员第109页/共131页110 在对话框上添加一个Date Time Picker控件,设置Forma

37、t为“Short Date”,选择“Use Spin Control”,如果不选择使用Spin控件,则用户在弹出的日历控件中进行输入。在该控件旁边添加一个按钮,ID为“IDC_BUTTON_TIME”,Caption为“报时”。在OnInitDialog中添加如下代码:CDateTimeCtrl*pDT=(CDateTimeCtrl*)GetDlgItem(IDC_DATETIMEPICKER1);CStringformatStr=_T(今天是:yy/MM/dd);pDT-SetFormat(formatStr);第110页/共131页111添加对【报时】按钮的点击事件的响应函数:void C

38、Ex9_9Dlg:OnButtonTime()CDateTimeCtrl*pDT=(CDateTimeCtrl*)GetDlgItem(IDC_DATETIMEPICKER1);CTime t;pDT-GetTime(t);CString s=t.Format(L%A,%B%d,%Y%H:%M:%S);AfxMessageBox(s);第111页/共131页1129.8.6 List Control控件的使用列表控件第112页/共131页113 列表控件是Windows应用程序中最常用的控件之一。最常见的用途就是资源管理器右边的文件列表。MFC中使用CListCtrl类来封装列表控件的功能。列

39、表控件通常可以包括一个图标和一个标签。此外,每一项还可以具有其它附加信息,例如资源管理器中文件的具体信息就是附加信息。第113页/共131页114列表控件的视图风格图标视图:每项显示3232图标,在图标下面显示标签。用户可以将图标拖放到视图内任何位置小图标视图:每项显示1616图标,在图标右边显示标签。用户可以将图标拖放到视图内任何位置列表视图:每项显示1616图标,在图标右边显示标签。每一项按列排列,不能随意拖动图标报表视图:每项占一行,第一列是主项,显示1616图标,在图标右侧显示标签。右边的列显示子项,具体由程序来决定第114页/共131页115成员成员描述描述成员成员描述描述CList

40、CtrlCListCtrl构造构造CListCtrlCListCtrl对象对象SetItemTextSetItemText设设置置列列表表项项的的标标签签文字文字CreateCreate创建列表控件创建列表控件GetHotItemGetHotItem获获得得当当前前位位于于鼠鼠标标之下的列表项之下的列表项SetBkColorSetBkColor设置背景颜色设置背景颜色GetSelectionMaGetSelectionMarkrk获获得得当当前前选选择择的的列列表项表项SetImageListSetImageList设置图像列表设置图像列表SubItemHitTestSubItemHitTes

41、t获获得得指指定定点点下下的的列列表项表项SetItemSetItem设置列表项数据设置列表项数据SetBkImageSetBkImage设置背景图片设置背景图片GetItemRectGetItemRect获获得得列列表表项项的的所所占占区域区域InsertItemInsertItem插入列表项插入列表项GetEditContrGetEditControlol获获得得当当前前正正在在编编辑辑的的列列表表项项的的EditEdit控控件件EditLabelEditLabel启启动动显显示示编编辑辑标标签签文字文字SetTextColorSetTextColor设置文字颜色设置文字颜色CreateD

42、ragImaCreateDragImagege创创建建用用于于拖拖放放的的图图片片SetTextBkColSetTextBkColoror设置文字背景颜色设置文字背景颜色列表控件的主要成员第115页/共131页116为使用列表控件,首先需要创建图标资源,在ResourceView的Icon一栏内创建8个图标资源 在Cex9_9Dlg类中增加成员如下:CImageListm_imageList;在OnInitDialog函数中添加初始化图片列表的代码:HICONhIcon8;intn;m_imageList.Create(16,16,0,8,8);hIcon0=AfxGetApp()-LoadI

43、con(IDI_ICON_WHITE);hIcon1=AfxGetApp()-LoadIcon(IDI_ICON_BLACK);hIcon2=AfxGetApp()-LoadIcon(IDI_ICON_RED);hIcon3=AfxGetApp()-LoadIcon(IDI_ICON_BLUE);hIcon4=AfxGetApp()-LoadIcon(IDI_ICON_YELLOW);hIcon5=AfxGetApp()-LoadIcon(IDI_ICON_CYAN);hIcon6=AfxGetApp()-LoadIcon(IDI_ICON_PURPLE);hIcon7=AfxGetApp()

44、-LoadIcon(IDI_ICON_GREEN);for(n=0;nSetImageList(&m_imageList,LVSIL_SMALL);/设置小图标图片列表for(n=0;n InsertItem(n,colorn,n);pList-SetBkColor(RGB(0,255,255);/设置背景色pList-SetTextBkColor(RGB(255,0,255);/设置文字的背景色 现在编译运行已经可以看到列表的运行效果了。第118页/共131页119 在 列 表 控 件 下 添 加 static控 件,ID为IDC_STATIC_LIST。对 列 表 控 件 添 加 对LVN

45、_ITEMCHANGED消息的响应:void CEx9_9Dlg:OnItemchangedList1()NM_LISTVIEW*pNMListView=(NM_LISTVIEW*)pNMHDR;/TODO:Add your control notification handler code hereCListCtrl*pList=(CListCtrl*)GetDlgItem(IDC_LIST1);int nSelected=pNMListView-iItem;if(nSelected=0)CString strItem=pList-GetItemText(nSelected,0);SetDl

46、gItemText(IDC_STATIC_LIST,strItem);*pResult=0;第119页/共131页120 在设置控件属性时,设置了Edit labels属性,下面是对列表控件的NM_RCLICK消息的响应:void CEx9_9Dlg:OnRclickList1()/TODO:Add your control notification handler code hereNM_LISTVIEW*pNMListView=(NM_LISTVIEW*)pNMHDR;CListCtrl*pList=(CListCtrl*)GetDlgItem(IDC_LIST1);int nSelect

47、ed=pNMListView-iItem;if(nSelected=0)pList-EditLabel(nSelected);*pResult=0;第120页/共131页121 运行程序,右击某一项,已可以编辑标签了,但无法保存编辑效果。若要保存,需要响应列表控件的LVN_ENDLABELEDIT消息,在这里可以判断新输入的文字是否合法,然后设置标签为编辑得到的文字:void CEx9_9Dlg:OnEndlabeleditList1()LV_DISPINFO*pDispInfo=(LV_DISPINFO*)pNMHDR;/TODO:Add your control notification

48、handler code hereLVITEMA item=pDispInfo-item;CString str=item.pszText;str.TrimLeft();str.TrimRight();if(str.GetLength()0)CListCtrl*pList=(CListCtrl*)GetDlgItem(IDC_LIST1);pList-SetItemText(item.iItem,item.iSubItem,item.pszText);*pResult=0;第121页/共131页1229.8.7 Tree Control控件的使用 树状视图控件是一种用来显示层次结构的控件,例如

49、Windows资源管理器左边的视图。视图中的每一项包括一个标签,位图是可选的,每项还可以附加若干子项。点击每一项,可展开或合拢当前树节点第122页/共131页123本例中继续使用ListControl中的图标。接下来在对话框中添加树状控件,其ID为IDC_TREE1,选中Hasbuttons、Haslines、Linesatroot和Editlabels属性 Has buttons:决定可展开项之前是否有“+”、“”按钮 Has Lines:决定相关节点之间是否显示虚线连接 Lines at root:决定位于第一层的节点之间是否有虚线连接Editlabels:表示标签是否可编辑第123页/共

50、131页124然后在OnInitDialog函数中添加如下代码:CTreeCtrl*pTree=(CTreeCtrl*)GetDlgItem(IDC_TREE1);pTree-SetImageList(&m_imageList,TVSIL_NORMAL);/设置图片列表TV_INSERTSTRUCTtvinsert;/创建待插入的TV_INSERTSTRUCT结构tvinsert.hParent=NULL;/无父结点tvinsert.hInsertAfter=TVI_LAST;/插入到本层最后tvinsert.item.mask=TVIF_IMAGE|TVIF_SELECTEDIMAGE|TV

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁