用MFC制作windows风格界面步骤: 启动VC++6.0, 从File菜单中选择New选项, 选择Projects标签,然后单击MFC AppWizard(exe)。 在Location域中输入一个合适的路径名或单击Browse按钮来选择一个。在Project name中输入项目名称(比如:mfc_1)。点OK。 2 1 3
打开MFC AppWizard-Step1对话框后。选择基本对话。点下一个 。
在MFC AppWizard-Step2 of 4对话框。 输入标题对话,如:我的第一个MFC程序。点下一个。
在MFC AppWizard-Step3 of 4对话框。不做任何更改,直接点下一个。
在MFC AppWizard-Step4 of 4对话框。可以修改分类名等信息,在这里不做任何更改,直接点完成。
删除系统给的所有控件,自己创建某一样式的界面,点编排菜单Tab Order,得到如下样式的界面(见1): 2 ID: 标题 1 Static 不修改 输入数据 2 输出数据 3 Button1 ID_ok 确定 4 Button2 ID_cancel 退出 5 Edit ID_inout 6 ID_output 1 对编号1-6的控件分别选择点鼠标右键设置如图2,最后得到界面如图3形式。 3
选择按纽“确定”和“退出”,点鼠标右键Events…,分别添加鼠标单击事件: 然后点Edit Existing进行相关代码的输入。
void CMfc_1Dlg::Onok() { // TODO: Add your control notification handler code here CString input,output; GetDlgItemText(ID_input,input); //用CString类的变量input接收Edit框ID_input内的数据。 /********************************************************************/ //数据处理过程,包括数据类型的转换等; output=input; SetDlgItemText(ID_output,output); //将CString类的变量output的数据输出到Edit框ID_output里。 } void CMfc_1Dlg::Oncancel() { // TODO: Add your control notification handler code here this->EndDialog(ID_cancel);//退出按纽的ID是:ID_cancel. }
程序执行结果,输入“测试”后点“确定”按纽,等到的结果如下:
常见的CString转换为其他数据类型的方法。 atof() 将字符串转换成双精度数 atoi() 将字符串转换成整型数 atol() 将字符串转换成长整型数 实例1: CString input; int i; double d; i=atoi(input.GetBuffer(input.GetLength())); d=atof(input.GetBuffer(input.GetLength())); 实例2: CString input; int i; long l; i = atoi((LPCTSTR) input); l = atol((LPCTSTR) input); CString转换为字符串 char *str = input.GetBuffer(input.GetLength());
常见的其他数据类型转换为CString的方法。 通用格式:output.Format(“% ¥”,变量); ¥取值:d 整型 l 长整型 u 无符号整型 f 浮点型 %.nf n表示浮点数的精度 实例 CString output; int i=-10; long l=120; UINT u=250; double d= 3.14159265 output.Format("%d", i); output.Format("%l", l); output.Format("%u", u); output.Format("%.5f", d);
整型数据输入输出的实例 输入:10 输出:110 void CMfc_1Dlg::Onok() { // TODO: Add your control notification handler code here CString input,output; GetDlgItemText(ID_input,input); int i; i=atoi((LPCTSTR) input); i=i+100; output.Format("%d",i); SetDlgItemText(ID_output,output); } 输入:10 输出:110
CEdit 使用技巧 注:m_edit1代表ID为IDC_EDIT1的CEdit控件的control类型的变量 1.设置edit只读属性 方法一: m_edit1.SetReadOnly(TRUE); 方法二: ::SendMessage(m_edit1.m_hWnd, EM_SETREADONLY, TRUE, 0);
2. 在edit最后添加字符串 CString str; m_edit1. SetSel(-1, -1); m_edit1 2.在edit最后添加字符串 CString str; m_edit1.SetSel(-1, -1); m_edit1.ReplaceSel(str); 3.随输入自动滚动到最后一行 extern CEdit* pmyEdit; int nFirstVisible = pmyEdit->GetFirstVisibleLine(); if (nFirstVisible > 0) { pmyEdit->LineScroll(-nFirstVisible, 0); }
4.如何限制edit输入指定字符 可以从CEdit派生一个类,添加WM_CHAR消息映射。下面一个例子实现了限定输入16进制字符的功能。 void CMyEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) { 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); } }
void CStrDlg::OnButton1() { // TODO: Add your control notification handler code here CString ss="1212.12"; int temp=atoi(ss); CString aa; aa.Format("%d",temp); AfxMessageBox("var is " + aa); } sart.Format("%s",buf); CString互转char* ///char * TO cstring CString strtest; char * charpoint; charpoint="give string a value"; strtest=charpoint; ///cstring TO char * charpoint=strtest.GetBuffer(strtest.GetLength()); 标准C里没有string,char *==char []==string 可以用CString.Format("%s",char *)这个方法来将char *转成CString。要把CString转成char *,用操作符(LPCSTR)CString就可以了。 CString转换 char[100] char a[100]; CString str("aaaaaa"); strncpy(a,(LPCTSTR)str,sizeof(a)); string 转 CString CString.format("%s", string.c_str()); char 转 CString CString.format("%s", char*); char 转 string string s(char *); string 转 char * char *p = string.c_str(); CString 转 string string s(CString.GetBuffer()); 1,string -> CString CString.format("%s", string.c_str()); 用c_str()确实比data()要好. 2,char -> string string s(char *); 你的只能初始化,在不是初始化的地方最好还是用assign(). 3,CString -> string string s(CString.GetBuffer()); GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间. 《C++标准函数库》中说的 有三个函数可以将字符串的内容转换为字符数组和C—string 1.data(),返回没有”\0“的字符串数组 2,c_str(),返回有”\0“的字符串数组 3,copy() --------------------------------------------------------------- CString与int、char*、char[100]之间的转换- - CString与int、char*、char[100]之间的转换- - CString互转int 将字符转换为整数,可以使用atoi、_atoi64或atol。 而将数字转换为CString变量,可以使用CString的Format函数。如 CString s; int i = 64; s.Format("%d", i) Format函数的功能很强,值得你研究一下。