MFC控件使用方法 下载本文

VC2012下MFC程序各控件的常用方法

分类:vc控件 2013-02-16 16:32 94人阅读评论(0) 收藏举报

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

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

GetDlgItem(IDC_XX)->SetWindowText(L\); 设置字体:

CFont *pFont= newCFont;

pFont->CreatePointFont(120,_T(\华文行楷\)); GetDlgItem(IDC_XX)->SetFont(pFont); Edit Control: 设置文本:

SetDlgItemText(IDC_XX,L\); 获取所有输入:

建立类向导创建一个成员变量(假设是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标签,在编辑框中添加选项,选项间用;分割。