一下控件的用法全部在VC2012下调试通过,特发文收藏(部分内容来自或参考自网络):

Static Text:

将ID号改成唯一的一个,如:IDC_XX,然后进一次类向导点确定产生这个ID,之后更改Caption属性:

GetDlgItem(IDC_XX)->SetWindowText(L"dsgdhfgdffd");

设置字体:

CFont *pFont= newCFont;

pFont->CreatePointFont(120,_T("华文行楷"));

GetDlgItem(IDC_XX)->SetFont(pFont);

Edit Control:

设置文本:

SetDlgItemText(IDC_XX,L"iuewurebfdjf");

获取所有输入:

建立类向导创建一个成员变量(假设是shuru1,shuru2……)类型选value,变量类型任选。

UpdateData(true);

GetDlgItem(IDC_XX)->SetWindowText(shuru1);

第一句更新所有建立了变量的对话框组件,获取输入的值。第二句将前面的IDC_XX的静态文本内容改为shuru1输入的内容。

若类型选用control:

1.设置只读属性:

shuru1.SetReadOnly(true);

2. 判断edit中光标状态并得到选中内容(richedit同样适用)

int nStart,nEnd;

CStringstrTemp;

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 <= '9') ||

(nChar >= 'a'&& nChar <= 'f') ||

(nChar >= 'A'&& nChar <= 'F') ||

nChar == VK_BACK ||

nChar == VK_DELETE)      //msdn的virtual key

{

CEdit::OnChar(nChar, nRepCnt, nFlags);

}

}

如果在对话框程序中不能正常接收消息,则还需要重载虚函数PreTranslateMessage:

BOOLCMFCApplication3Dlg::PreTranslateMessage(MSG* pMsg)

{

// TODO:在此添加专用代码和/或调用基类

SendMessage(pMsg->message,pMsg->wParam,pMsg->lParam);

returnCDialogEx::PreTranslateMessage(pMsg);  //或return 0;

}

这样才能正常接收VM_CHAR消息。

6.如何使用richedit

添加AfxInitRichEdit();

CxxxApp::InitInstance()

AfxInitRichEdit();

.............

注意:如果不添加该方法,可能会造成对话框无法生成或启动,程序闪退等现象。

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(L"fdfjkfdj");//添加一项内容

xuanze1.GetCurSel();//获取选择的行数

xuanze1.SetCurSel(1);//设置所选行

xuanze1.GetWindowTextW(strTemp);//获取文本

xuanze1.GetCount();//获取总行数

xuanze1.DeleteString(1);//删除某行

xuanze1.InsertString(1,L"dskjjfjfkds");//将行插入到指定位置

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);

CStringstrTime;

strTime=time.Format("%Y-%m-%d");     //获取到的为日期如:2010-03-05

strTime=time.Format("%H:%M:%S");     //获取到的为时间如:16:27:33

2.获取当前时间并将其转换为字符串:

CDateTimeCtrlm_DateItmeCtrl_Time;

m_DateItmeCtrl_Time.SetFormat(_T("yyyy-MM-ddHH:mm:ss"));

CTimeTimeTemp=TimeTemp.GetCurrentTime();

m_DateItmeCtrl_Time.SetTime(&TimeTemp);

CStringstrTime;

COleDateTime   dtTime;

strTime=dtTime.Format(_T("%Y-%m-%d%H:%M:%S"));

3.将CString转换为COleDateTime类型:

CString strTime =_T("2009-08-1111:22:33");

COleVariantVariantTime;

VariantTime =strTime;

VariantTime.ChangeType(VT_DATE);

COleDateTimeDataTime = 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:在此添加消息处理程序代码和/或调用默认值

intm=huakuai.GetPos();//取得当前位置值,储存在变量m中

CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);

}

Progress Control:

1.常用方法:

jindu.GetPos(); //获取进度条的当前位置

jindu.OffsetPos(10); //用指定的增量推进进度条控件的当前位置,重绘进度条反映新位置

jindu.SetBkColor(COLORREFclrNew); //设定进度条的背景颜色

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)

{

LPNMUPDOWNpNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);

// TODO:在此添加控件通知处理程序代码

CStringstrValue ;

shuru1.GetWindowTextW(strValue);                 //得到编辑框中的内容

if(pNMUpDown->iDelta> 0)                    //如果点击的是Spin中的往上按钮

{

if(!strValue.IsEmpty())

{

strValue.SetAt(0 ,strValue[0] + 1);   //编辑框首字母加1

shuru1.SetWindowTextW(strValue);         //保存修改

}

}

elseif(pNMUpDown->iDelta< 0)    //如果点击的是Spin中往下按钮

{

if(!strValue.IsEmpty())

{

strValue.SetAt(0 ,strValue[0] - 1);   //编辑框首字母减1

shuru1.SetWindowTextW(strValue);         //保存修改

}

}

*pResult = 0;

}

用于实现旋转按钮控件的操作。注意,这里是直接在字符串上加减的,如需处理数字,还需转换或使用其它方法。

附:转换方法(须包含文件stdlib.h):

字符串转数字:atof,atoi,atol等,形式:double atof(constchar *nptr);

Strtod,strtoi,strtol等,形式:double strtoi(constchar *nptr,char**endptr);

后面的参数如果不为NULL,将把转换终止之后的字符串通过该指针传回。

如果是unicode字符或TCHAR类型的字符串,则将a换成_w或_t即可。

数字转字符串:将上述函数反过来即可。如果是unicode字符或TCHAR类型的字符串,则在方法前加_并将a换成w或t即可。

注意:浮点数转ASCII字符串使用gcvt方法:

char *gcvt(double number,size_tndigits,char *buf);

其中:第二个参数表示要转换的位数,转换后的字符串放在第三个参数所指向的空间。返回的是转换的结果,同buf指针。

Picture Control:

1.导入位图:

在资源视图中添加资源,选择一个bmp格式的文件,该文件会自动进入Bitmap类型中,并自动分配一个ID号。在对话框中添加一个Picture控件,类型选Bitmap,在image属性中就会出现刚才添加的位图的ID号,选择即可。(Icon图标同理,也用bmp类型的文件)。

其它常用方法:

设置控件焦点用XXX.SetFocus();方法。获取焦点控件用GetFocus();方法。

wenjian.ShowWindow(SW_HIDE);//隐藏控件

wenjian.ShowWindow(SW_SHOW);//显示控件

wenjian.SetWindowPos(NULL,30,200,0,0,SWP_NOSIZE);//移动或改变控件大小

第一个参数一般为NULL,后两个参数分别表示控件的x,y位置,再后两个参数表示控件的宽度和高度,最后一个参数有三种:SWP_NOZORDER忽略第一个参数;SWP_NOMOVE忽略x,y,只改变宽度和高度;SWP_NOSIZE忽略大小,仅改变位置。

VC2012下MFC程序各控件的常用方法相关推荐

  1. VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程

    VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程 开篇语:最近在弄ocx控件发布到asp.net网站上使用,就是用户在使用过程中,自动下载安装ocx控件.(此文章也是 ...

  2. MFC中的控件是怎么实现的呢?一个按钮就是一个窗口?还是所有按钮画在一个分层窗口上再叠

    请教一下MFC中的控件是怎么实现的呢(通过调用什么样的API,传递什么参数)?一个按钮就是一个窗口?还是所有按钮画在一个分层窗口上再叠在主窗口上?还是直接在主窗口上画图? 我想到的是: JavaScr ...

  3. 使用MFC开发ActiveX控件

    摘要: 本文对COM组件中的ActiveX控件的MFC开发方法进行了介绍,讲述了用户自定义和库存属性.方法以及事件的添加方法和属性页的制作过程.使读者能够掌握基本的MFC ActiveX开发方法. 前 ...

  4. MFC combo, radio控件使用

    1. 下拉框combo控件 Data中输入,默认值.还可以在OnInitDialog()增加项目,设置默认值. 新建控件变量m_combo_Num 2. 单选框radio控件 新建一组单选框控件 在第 ...

  5. 基于MFC的ActiveX控件开发

    转自:http://www.cnblogs.com/lidabo/archive/2012/12/04/2800921.html ActiveX 控件是基于组件对象模型 (COM) 的可重用软件组件, ...

  6. Winform下的地图开发控件(GMap.NET)使用心得之二

    在上篇<Winform下的地图开发控件(GMap.NET)使用心得>中简单介绍了GMap.NET的控件基本情况,本篇开始介绍一下相关的代码操作. 其实目前GMap.NET提供的功能还不是很 ...

  7. MFC之ComboBox控件用法

    本文以实例形式较为详细的讲述了MFC中ComboBox控件的用法.分享给大家供大家参考之用.具体方法如下: 一.ComboBox简介: ComboBox控件是由一个文本输入控件和一个下拉菜单组成的.用 ...

  8. MFC如何使控件大小随着对话框大小自动调整

    MFC如何使控件大小随着对话框大小自动调整 2012-04-27 16:24:50|  分类: MFC |  标签: |字号大中小 订阅 对话框的大小变化后,假若对话框上的控件大小不变化,看起来会比较 ...

  9. C++ 一个程序获取另一个程序Edit控件的内容

    转载地址:https://www.cnblogs.com/lujin49/p/4796502.html //一个程序获取另一个程序Edit控件的内容 //根据指定程序的标题名获取改程序窗口的句柄 HW ...

最新文章

  1. object-c中的继承
  2. “习惯测试”三步法,打造完美用户体验
  3. vue 拷贝 数组_vue 使用lodash实现对象数组深拷贝操作
  4. 异步(python 版)
  5. linux+PATH
  6. SAP License:SAP学习笔记
  7. java xml stax_如何使用Java StAX Iterator API用Java编写XML文件
  8. Luogu5607 [Ynoi2013] 无力回天 NOI2017
  9. php 每七天执行代码,十天学会PHP之第七天
  10. 力荐收藏:新QC七大工具(完整版)
  11. C# 后台js重定向Response.Write
  12. NLP入门从入门到实战 实体命名识别 +中文预处理之繁简体转换及获取拼音
  13. springboot基于微信小程序“智慧校园” 一体式的设计与实现毕业设计源码091634
  14. 中奖人js滚动效果_原生js实现中奖信息无间隙滚动效果
  15. keras 中的 verbose 参数详解
  16. java bean 首字母大写_javaBean命名规范 get / set 后的首字母大写
  17. 解决office2010安装过程出错的问题
  18. 使用CCS调试CC3200芯片GPIO接口应用----流水灯程序
  19. 【教学类-16-01】20221121《数字卡片9*2》(中班)
  20. 东辉创投放心用姓名存钱的利害,存款一切权归吗?

热门文章

  1. Typora使用学习通图床
  2. java h5模板引擎_详解SpringBoot+Thymeleaf 基于HTML5的现代模板引擎
  3. 多个word vba批量替换文字(一个文件夹)
  4. 机器学习——RBF神经网络
  5. 气象绘图软件Panoply使用教程 (不定时更新)
  6. iOS蓝牙开发:蓝牙的连接和数据的读写
  7. javascript压缩上传图片
  8. 51单片机 16X192点阵程序动态显示汉字 PROTEUS 和51单片机教程(附仿真文件+源代码)
  9. sca标准值_如何制造符合精品咖啡协会SCA标准的矿物水?
  10. Android MTK修改Key键