MFC对话框程序中的各组件常用方法_第1页
MFC对话框程序中的各组件常用方法_第2页
MFC对话框程序中的各组件常用方法_第3页
MFC对话框程序中的各组件常用方法_第4页
MFC对话框程序中的各组件常用方法_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

MFC对话框程序中的各组件常用方法:Static Text:将ID号改成唯一的一个,如:IDC_XX,然后进一次类向导点确定产生这个ID,之后更改Caption属性:GetDlgItem(IDC_XX)-SetWindowText(Ldsgdhfgdffd);设置字体:CFont *pFont = newCFont;pFont-CreatePointFont(120,_T(华文行楷);GetDlgItem(IDC_XX)-SetFont(pFont);Edit Control:设置文本:SetDlgItemText(IDC_XX,Liuewurebfdjf);获取所有输入:建立类向导创建一个成员变量(假设是shuru1,shuru2)类型选value,变量类型任选。UpdateData(true);GetDlgItem(IDC_XX)-SetWindowText(shuru1);第一句更新所有建立了变量的对话框组件,获取输入的值。第二句将前面的IDC_XX的静态文本内容改为shuru1输入的内容。若类型选用control:1.设置只读属性:shuru1.SetReadOnly(true);2.判断edit中光标状态并得到选中内容(richedit同样适用)int nStart, nEnd;CString strTemp;shuru1.GetSel(nStart, nEnd);if(nStart = nEnd)strTemp.Format(_T( 光标在%d ), nStart);AfxMessageBox(strTemp);else/得到edit选中的内容shuru1.GetWindowText(strTemp);strTemp = strTemp.Mid(nStart,nEnd-nStart);AfxMessageBox(strTemp);其中nStart和nEnd分别表示光标的起始和终止位置,从0开始。strTemp.Format方法用于格式化字符串。AfxMessageBox(strTemp)显示一个提示对话框,其内容是字符串strTemp。strTemp = strTemp.Mid(nStart,nEnd-nStart)返回一个被截取的字符串,从nStart开始,长度为nEnd-nStart。如果nStart = nEnd说明没有选择文本。注:SetSel(0,-1)表示全选;SetSel(-1,i)表示删除所选。3.在edit的末尾添加字段:CString str;shuru1.SetSel(-1, -1);shuru1.ReplaceSel(str);4.随输入自动滚动到最后一行(richedit同样适用)shuru1.PostMessage(WM_VSCROLL, SB_BOTTOM, 0);注:作密码使用,设置密码掩码字符用SetPasswordChar(*)方法。5.如何限制edit输入指定字符创建一个CEdit的子类,自动化,并创建子类的WM_CHAR类型的消息:voidCyxEdit:OnChar(UINTnChar, UINTnRepCnt, UINTnFlags)/ TODO: 在此添加消息处理程序代码和/或调用默认值if ( (nChar= 0&nChar= a&nChar= A&nCharmessage,pMsg-wParam,pMsg-lParam);returnCDialogEx:PreTranslateMessage(pMsg); /或return 0;这样才能正常接收VM_CHAR消息。6.如何使用richedit 添加AfxInitRichEdit();CxxxApp:InitInstance()AfxInitRichEdit2();.注意:如果不添加该方法,可能会造成对话框无法生成或启动,程序闪退等现象。7.改变richedit指定区域的颜色及字体CHARFORMAT cf;ZeroMemory(&cf, sizeof(CHARFORMAT);cf.cbSize = sizeof(CHARFORMAT);cf.dwMask = CFM_BOLD | CFM_COLOR | CFM_FACE |CFM_ITALIC | CFM_SIZE | CFM_UNDERLINE;cf.dwEffects = 0;cf.yHeight = 12*12; /文字高度cf.crTextColor = RGB(200, 100, 255); /文字颜色*cf.szFaceName = *_T( 隶书 ); /设置字体待定shuru2.SetSel(1, 5); /设置处理区域shuru2.SetSelectionCharFormat(cf);8.设置行间距(只适用于richedit2.0)PARAFORMAT2 pf2;pf2.cbSize = sizeof(PARAFORMAT2);pf2.dwMask = PFM_LINESPACING | PFM_SPACEAFTER;pf2.dyLineSpacing = 200;pf2.bLineSpacingRule = 4;shuru2.SetParaFormat(pf2);ComboBox Contorl:1.在编辑状态下点那个控件的向下的三角形,就出冒出来一个可以调高度的东东。将高度调高,否则在执行时会不能显示下拉选项。2.为combobox添加选项,在编辑状态下选combobox控件的属性,选Data标签,在编辑框中添加选项,选项间用;分割。3.ComboBox.SetCurSel(0)用来设置下拉菜单初始值。4.常用方法有:xuanze1.ResetContent();/清除所有内容xuanze1.AddString(Lfdfjkfdj);/添加一项内容xuanze1.GetCurSel();/获取选择的行数xuanze1.SetCurSel(1);/设置所选行xuanze1.GetWindowTextW(strTemp);/获取文本xuanze1.GetCount();/获取总行数xuanze1.DeleteString(1);/删除某行xuanze1.InsertString(1,Ldskjjfjfkds);/将行插入到指定位置Radio Button:1.使用多组:在对话框编辑界面按下Ctrl+D,将单选框按想要的顺序点击,然后把每一组的第一个单选框的Group属性设为true。2.获取选择状态:每组的第一个单选框ID可以设置一个变量。选择int型,然后给每个单选框都设置一个BN_CLICKED事件,在其中改变这组单选框的变量:voidCMFCApplication3Dlg:OnClickedRadio1()danxuan1=1;voidCMFCApplication3Dlg:OnBnClickedRadio2()danxuan1=2;voidCMFCApplication3Dlg:OnBnClickedRadio3()danxuan1=3;3.快速获取选择的位置(特别是一组中有很多单选框的时候):danxuan2=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO3);该函数返回从单选框IDC_RADIO1到IDC_RADIO3中被选上的ID号,使用时须确保他们在一个组里。注意这里返回的是ID号,即假如IDC_RADIO3所代表的那个单选框被选上了,那么返回的是数字(具体多少看宏定义),所以检查的时候也要判断是否和IDC_RADIO3相等。Check Box:关联一个BOOL类型的变量MFC Edit Browse:获取文件路径:GetDlgItemTextW(IDC_MFCEDITBROWSE1,strTemp);MFC Date Time Picker:1.设置时间控件变量shijian,然后创建一个CTime变量存储时间,并将其转换为字符串。CTime time;shijian.GetTime(time);CString strTime;strTime=time.Format(%Y-%m-%d); /获取到的为日期如:2010-03-05strTime=time.Format(%H:%M:%S); /获取到的为时间如:16:27:332.获取当前时间并将其转换为字符串:CDateTimeCtrl m_DateItmeCtrl_Time;m_DateItmeCtrl_Time.SetFormat(_T(yyyy-MM-dd HH:mm:ss);CTime TimeTemp=TimeTemp.GetCurrentTime();m_DateItmeCtrl_Time.SetTime(&TimeTemp);CString strTime;COleDateTime dtTime; strTime =dtTime.Format(_T(%Y-%m-%d %H:%M:%S);3.将CString转换为COleDateTime类型:CString strTime =_T(2009-08-11 11:22:33);COleVariant VariantTime;VariantTime = strTime;VariantTime.ChangeType(VT_DATE);COleDateTime DataTime = VariantTime;shijian.SetTime(DataTime);4.注意SetTime方法的参数须为指针。设置控件时间为当前时间:shijian.SetTime(&CTime:GetCurrentTime();注:如果该控件的格式是日期,你依然可以通过该控件获取时间,得到的将是当前的时间和该控件设置的日期。(格式为时间时同理。)Slider Control:1.常用方法:huakuai.SetRange(0,100);/设置范围。另有SetRangeMin和SetRangeMax可分别设置,此项最好在初始化时设置huakuai.SetLineSize(20);/按下键盘的上下键或左右键滑动的间隔huakuai.SetPageSize(3);/鼠标点击滑块两侧滑动的间隔huakuai.SetPos(20);/设置滑块位置huakuai.SetTicFreq(10);/设置刻度频度(仅仅是刻度的频度,不影响最小刻度)。另外,SetTic函数可以在指定的位置设置刻度,而ClearTic函数则清除所有的刻度2.添加事件:滑块可以用父窗体中的WM_HSCROLL消息(垂直的同理):voidCMFCApplication3Dlg:OnHScroll(UINTnSBCode, UINTnPos, CScrollBar* pScrollBar)/ TODO: 在此添加消息处理程序代码和/或调用默认值int m=huakuai.GetPos();/取得当前位置值,储存在变量m中CDialogEx:OnHScroll(nSBCode, nPos, pScrollBar);Progress Control:1.常用方法:jindu.GetPos(); /获取进度条的当前位置jindu.OffsetPos(10); /用指定的增量推进进度条控件的当前位置,重绘进度条反映新位置jindu.SetBkColor(COLORREF clrNew); /设定进度条的背景颜色jindu.SetPos(200); /设定进度条控件的当前位置,重绘进度条反映新位置jindu.SetRange(0,1000); /设定进度条控件的范围的下限和上限(short型参数)jindu.SetRange32(0,100000); /设定进度条控件的范围的下限和上限(int型参数)jindu.SetStep(5); /指定进度条控件的步进增量jindu.StepIt(); /通过步进增量,推进进度条控件的当前位置,重绘进度条反映新位置最好在初始化的时候就指定进度条的上下限、初始位置等参数;2.定时器:在程序中使用:SetTimer(1,500,NULL);设置定时器。三个参数分别表示定时器号,时间间隔(ms),其他。然后,在消息中添加WM_TIMER,在其中写上:voidCMFCApplication3Dlg:OnTimer(UINT_PTRnIDEvent)/ TODO: 在此添加消息处理程序代码和/或调用默认值if(nIDEvent = 1)jindu.StepIt();CDialogEx:OnTimer(nIDEvent);则每隔0.5秒将以前面指定的步长推进进度条。注:使用KillTimer(m);方法可以删除定时器号为m的定时器。SetStep方法一次走2倍的数值!Spin Control:1.常用属性:设置属性:Auto Buddy(自动取关联控件为TAB顺序前一个)Set Buddy Interger(使控件设置关联控件数值,这个值可以是十进制或十六进制)Wrap(数值超过范围时循环)Arrow keys(当按下向上和向下方向键时,控件可以增加或减小)Alignment控件在伙伴窗口的位置安排:Unattached(不相干)、Right(右边,同UDS_ALIGNRIGHT)、Left(左边, 同UDS_ALlGNLEFT)。2.常用方法:dianji.SetRange(0,100);/设置范围dianji.SetBuddy(&shuru1);/设置伙伴窗口(设置完了之后会根据Alignment属性自动调整spin控件的位置)dianji.SetBase(10);/设置基数(十进制还是十六进制)dianji.SetPos(20);/设置当前位置其它的方法滑块、进度条类似。3.相应方法:添加该控件的UDN_DELTAPOS消息,并在处理函数中添加:voidCMFCApplication3Dlg:OnDeltaposSpin2(NMHDR *pNMHDR, LRESULT *pResult)LPNMUPDOWN pNMUpDown = reinterpret_cast(pNMHDR);/ TODO: 在此添加控件通知处理程序代码CString strValue ;shuru1.GetWindowTextW(strValue); /得到编辑框中的内容if(pNMUpDown-iDelta 0) /如果点击的是Spin中的往上按钮if(!strValue.IsEmpty()strValue.SetAt(0 , strValue0 + 1); /编辑框首字母加1shuru1.SetWindowTextW(strValue); /保存修改elseif(pNMUpDown-iDelta EnableWindow(true);/允许控件GetDlgItem(IDC_BUTTON1)-EnableWindow(false);/禁止控件wenjian.SetWindowPos(NULL,30,200,0,0,SWP_NOSIZE);/移动或改变控件大小第一个参数一般为NULL,后两个参数分别表示控件的x,y位置,再后两个参数表示控件的宽度和高度,最后一个参数有三种:SWP_NOZORDER忽略第一个参数;SWP_NOMOVE忽略x,y,只改变宽度和高度;SWP_NOSIZE忽略大小,仅改变位置。Cstring转char *型字符串:CString str;char ipdizhi20;WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK,str.GetBuffer(),-1,ipdizhi,strlen(ipdizhi),NULL,NULL);Char * 型字符串转Cstring:char recv

温馨提示

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

最新文档

评论

0/150

提交评论