MFC中滑动条的使用

上传人:s****a 文档编号:117470972 上传时间:2022-07-08 格式:DOCX 页数:13 大小:22.25KB
收藏 版权申诉 举报 下载
MFC中滑动条的使用_第1页
第1页 / 共13页
MFC中滑动条的使用_第2页
第2页 / 共13页
MFC中滑动条的使用_第3页
第3页 / 共13页
资源描述:

《MFC中滑动条的使用》由会员分享,可在线阅读,更多相关《MFC中滑动条的使用(13页珍藏版)》请在装配图网上搜索。

1、滑动控件是Windows中最常用的控件之一。一般而言它是由一个滑动条,一个滑块和可选的刻度组成,用户可以通过移 动滑块在相应的控件中显示对应的值。通常,在滑动控件附近一定有标签控件或编辑框控件,用于显示相应的值。滑动控 件在应用程序中用途级为广泛,如在桌面的属性中就可以看到。为此,让我们一起来看一下它的实现方法。(1)在VC+6.0中新建一个对话框文档的工程。(2 )打开资源管理器,在对话框中放置一个EDIT控件,然后在它旁边放上一个Slider控件。基本的框架已经完成了。(3 )对Slider控件右击,选择“建立类向导,对刚才的Slider控件定义一个变量m_Slider类型为CSIider

2、Ctrl。(4 )在对话框初始化的代码BOOLCMy601Dlg:OnInitDialog(),后添加相应的属性。以下是常用的属性设置函数:*GetRange,SetRange 函数用于查询和设置滑动条的取值范围,默认为0100。函数定义形式如下:voidGetRa nge(i nt&nMin,int&n Max)c on st;voidSetRa nge(i ntn Mi n,intn Max,BOOLbRedrGETaw二FALSE);*GetPos,SetPos 函数用于查询和设置滑动条的当前值。函数定义形式如下:in tGetPos()c on st;in tSetPos(i ntn

3、Pos);*GetLineSize,SetLineSize 函数用于查询和设置在按一下右或左箭头时滑块的移动量,默认为1个单位。函数定义形式如下:in tGetL in eSize()c on st;in tSetL in eSize(i ntn Size);*GetPageSize,SetPageSize 函数用于查询和设置函滑块和块移动量,块移动量是指当按下PgUp或PgDown时滑块的移动量。函数定义形式如下:in tGetPageSize()c on st;*SetTicFreq 函数 用于设置滑动条刻度的频度。默认为一个单位一个函数。函数定义形式如下:voidSetTicFreq(i

4、 ntn Freq);*SetTic 函数用于在指定的位置设置刻度。Windows默认的刻度是均匀的。函数定义形式如下:BOOLSetTic( intn Tic);*ClearTics 函数用于清除所有的刻度。函数定义形式如下:voidClearTics(BOOLbRedraw二FALSE);我们在初始化时写入以下语句:m_Slider.SetRange(-100,100);m_Slider.SetTicFreq(10);即:设置范围为-100到100,刻度为每10个单位一个。(5)现在我们加入事件过程代码。选择Slider的“事件”然后选择第一个过程(NM_CUSTOMDRAW)随后加入以下

5、代码:void CSliderDlg:OnNMCustomdrawSdr1(NMHDR *pNMHDR,LRESULT *pResult)LPNMCUSTOMDRAW pNMCD =reinterpret_cast(pNMHDR);/ TODO:在此添加控件通知处理程序代码*pResult = 0;UpdateData(TRUE);CString str;int sldValue = m_sldThresh.GetPos();str.Format(%d, sldValue);m_editThresh.SetWindowText(str);UpdateData(FALSE);如果你需要添加编辑控

6、件,并能够使用滑动slider可以显示编辑控件的值,也可以设置编辑控件的值来滑动slider,需要下面代码:void CSliderDlg:threshEdit()/ TODO: 如果该控件是RICHEDIT控件,则它将不会/发送该通知,除非重写CDialog:OnInitDialog()/ 函数并调用 CRichEditCtrl().SetEventMask(),/同时将ENM_CHANGE标志“或”运算到掩码中。/ TODO:在此添加控件通知处理程序代码UpdateData(TRUE);CString str;m_editThresh.GetWindowText(str);m_sldThr

7、esh.SetPos(atoi(str);m_editThresh.SetSel(str.GetLength(), str.GetLength(),TRUE);UpdateData(FALSE);WM_CTLCOLOR和 OnCtIColor 消息的用法2011-05-07 22:44:11| 分类:VC2 | 字号 订阅WM_CTLC0L0R消息用来完成对EDIT、STATIC、BUTTON等控件设置背景和字体颜色,其用法 如下:1.首先在自己需要设置界面的对话框上点击右键一建立类向导一加入WM_CTLC0L0R消息 自动生成OnCtlColor ()函数,此函数可以对本对话框的控件的界面外

8、观做修饰,用法如 下:将类向导产生的函数做如下修改:HBRUSH CDialogColor:0nCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)HBRUSH hbr = CDialog:0nCtlColor(pDC,pWnd, nCtlColor);/ T0D0: Change any attributes of theDC here/设置显示字体CFont * eFont二new CFont;cFon t-Crea teFon t(16,0,0,0,FW_SEMIB0LD,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT

9、_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH&FF_SWISS,Arial);/对特定的控件做修改switch(nCtlColor)case CTLCOLOR_STATIC: /对所有静态文本控件的设置pDC-SetBkMode(TRANSPARENT);/设置背景为透明pDC-Se tTex tColor(RGB(255,255,0); /设置字体颜色 pWnd-Se tFon t(cFon t); /设置字体HBRUSH B = CreateSolidBrush(RGB(125,125,255);/创建画刷return

10、(HBRUSH) B; /返回画刷句柄case CTLC0L0R_EDIT: /对所有编辑框的设置pDC-SetBkMode(TRANSPARENT);pDC-Se tTex tColor(RGB(255,255,0);pWnd-SetFont(cFont);HBRUSH B = CreateSolidBrush(RGB(125,125,255);return (HBRUSH) B;default: return CDialog:OnCtlColor(pDC,pWnd, nCtlColor);注:case的类别有以下几种:CTLCOLOR_BTN按钮控件CTLCOLOR_DLG 对话框CTLC

11、OLOR_EDIT 编辑框CTLCOLOR_LISTBOX 列表框CTLCOLOR_MSGBOX 消息框CTLCOLOR_SCROLLBAR 滚动条CTLCOLOR_STATIC 静态文本2.你可能觉得对所有的控件使用统一的界面设置觉得不自由,其实VC同样可以对特定的ID的 控件进行设置,方法如下:switch (pWnd-GetDlgCtrlID()/针对ID为IDC_CTL1、IDC_CTL2和IDC_CTL3的控件进行同样的设置case IDC_CTL1:case IDC_CTL2:case IDC_CTL3:pDC-SetBkMode(TRANSPARENT);pDC-Se tTex

12、tColor(RGB(255,255, 0);pWnd-SetFont(cFont);HBRUSH B = CreateSolidBrush(RGB(125,125,255);return (HBRUSH) B;default:return CDialog:OnCtlColor(pDC, pWnd, nCtlColor);通过消息WM_CTLCOLOR我们可以改变对话框或一些特殊控件的背景颜色1、添加WM_CTLCOLOR消息映射。2、在CWnd:OnCtlColor里面作相应的处理HRESULT CWnd:OnCtlColor(CDC *pDC, CWnd *pWnd, UINT nCtlC

13、olor)switch (nCtlColor)case CTLCOLOR_BTN:/ Button controlpDC-SetBkColor( RGB( 255, 0, 0);break;case CTLCOLOR_DLG:/ Dialog boxbreak;case CTLCOLOR_EDIT:/ Edit controlCOLORREF bkColor = RGB(255,0,0);CRect rect;CBrush br;pWndGetClientRect(&rect);br.CreateSolidBrush(bkColor);pDC-FillRect(rect, &br);*/ pD

14、C-SetBkColor(bkColor);break;case CTLC0L0R_LISTB0X: break;case CTLC0L0R_MSGB0X: break;case CTLC0L0R_SCR0LLBAR:break;case CTLC0L0R_STATIC:break;default:break;return CWnd:0nCtlColor(pDC,/ List-box control/ Message box/ Scroll-bar control/ Static controlpWnd, nCtlColor);CWn d: On CtIColorafx_msg HBRUSH

15、OnCtlColor( CDC* pDC, CWnd* pWric, UINT nCtIColor); ReturnValueOnCtlColormustreturnahandletothebrushthatistobeusedforpaintingthecontrolbackground.Parameters pDCContainsapointertothedisplaycontextforthechildwindow.Maybetemporary. pWndContainsapointertothecontrolaskingforthecolor.Maybetemporary. nCtlC

16、olorContainsoneofthefollowingvalues,specifyingthetypeofcontrol: CTLCOLOR_BTNButtoncontrol CTLCOLOR_DLG Dialogbox CTLCOLOR_EDIT Editcontrol CTLCOLOR_LISTBOX List - boxcontrol CTLCOLOR_MSGBOX Messagebox CTLCOLOR_SCROLLBAR Scroll-barcontrol CTLCOLOR_STATIC StaticcontrolRemarksTheframeworkcallsthismembe

17、rfunctionwhenachildcontrolisabouttobedrawn.Mostcontrolssendthismessageto theirparent(usuallyadialogbox)topreparethepDCfordrawingthecontrolusingthecorrectcolors.Tochangethetextcolor,callthe SetTextColormemberfunctionwiththedesiredred,green,andblue(RGB)values.To change the background color of a single

18、-line edit control, set the brush handle in both the CTLCOLOR_EDIT andCTLCOLOR_MSGBOXmessagecodes,andcalltheCDC:SetBkColorfunctioninresponsetotheCTLCOLOR_EDITcode.OnCtIColorwillnotbecalledforthelistboxofadrop-downcomboboxbecausethedrop-downlistboxisactuallyachild ofthecomboboxandnotachildofthewindow

19、.Tochangethecolorofthedrop-downlistbox,createaCComboBoxwithanoverrideof OnCtICoIorthatchecksfor CTLCOLOR_LISTBOXinthe nCtlColorparameter.Inthishandler,the SetBkCoIor memberfunctionmustbeusedtosetthebackgroundcolorforthetext.Note Thismemberfunctioniscalledbytheframeworktoallowyourapplicationtohandlea

20、Windowsmessage.The parameterspassedtoyourfunctionreflecttheparametersreceivedbytheframeworkwhenthemessagewasreceived.If youcallthebase-classimplementationofthisfunction,thatimplementationwillusetheparametersoriginallypassedwith themessageandnottheparametersyousupplytothefunction.Example/ThisOnCtICol

21、orhandlerwillchangethecolorofastaticcontrolwiththeIDofIDC_MYSTATIC.ThecodeassumesthattheCMyDialogclasshasaninitializedandcreatedCBrushmembernamedm_brush./Thecontrolwillbepaintedwithredtextandabackgroundcolorofm_brush.HBRUSHCZilchDlg:OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor)/Callthebaseclassimpleme

22、ntationfirst!Otherwise,itmay/undowhatweretryingtoaccomplishhere.HBRUSHhbr=CDialog:OnCtlColor(pDC,pWnd,nCtlColor);ArewepaintingtheIDC_MYSTATICcontrol?WecanuseCWnd:GetDlgCtrlID()toperformthemostefficienttest.if(pWnd-GetDlgCtrlID()=IDC_MYSTATIC)/SetthetextcolortoredpDC-SetTextColor(RGB(255Q0);/Settheba

23、ckgroundmodefortexttotransparent/sobackgroundwillshowthru. pDC-SetBkMode(TRANSPARENT);/ReturnhandletoourCBrushobjecthbr=m_brush;returnhbr;CWndOverview | ClassMembers | HierarchyChartSee Also CDC:SetBkColorMFC类库提供了 CWnd:OnCtlColor函数,在工作框架的子窗口被重画时将调用该成员函数.因此可以重载WM_CTLCOLOR 消息的响应函数.此函数的原型:afx_msg HBRUS

24、H OnCtlColor(CDC *pDC,CWnd *pWnd,UINT nCtIColor);参数nCtlColor用于指定控件的类型,可以是:.CTLCOLOR_BTN按钮控件.CTLCOLOR_DLG.CTLCOLOR_EDIT.CTLCOLOR_LISTBOX .CTLCOLOR MSGBOX对话框编辑框列表控件消息控件.CTLCOLOR_SCROLLBAR 滚动条控件.CTLCOLOR STATIC静态控件假设你已有了名为My的对话框工程你有了一个STATIC的控件,ID为IDC_STATIC.HBRUSH CMyDlg:OnCtlColor(CDC* pDC, CWnd* pWn

25、d, UINT nCtlColor)HBRUSH hbr = CDialog:OnCtlColor(pDC, pWnd, nCtlColor);/ TODO: Change any attributes of the DC hereif (nCtlColor=CTLCOLOR_STATIC) pDC-SetTextColor(RGB(255,O,0); 字体颜色 pDC- SetBkColor(RGB(0, 0, 255); 字体背景色/ TODO: Return a different brush if the default is not desiredreturn hbr;如果要指定某个

26、特定控件可以这样写:ID为IDC_STATIC1if (pWnd-GetDlgCtrllD()=IDC_STATIC1)pDC-SetTextColorRGB(255,0,0); /设置字体颜色pDC-SetBkMode(TRANSPARENT); /设置字体背景为透明 TODO: Return a different brush if the default is not desired return (HBRUSH):GetStockObject(BLACK_BRUSH); / 设置背景色 elsereturn hbr;【注】同蠟 “ Hsnxa 多 OJ-JOH 同冏zsnHmllli HsnHmlAVHe 回咚工snHm山b工多 回郦xsnHmINQVIm

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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