内容发布更新时间 : 2024/12/23 10:25:33星期一 下面是文章的全部内容请认真阅读。
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标签,在编辑框中添加选项,选项间用;分割。