Presentation is loading. Please wait.

Presentation is loading. Please wait.

用MFC制作windows风格界面步骤:

Similar presentations


Presentation on theme: "用MFC制作windows风格界面步骤:"— Presentation transcript:

1 用MFC制作windows风格界面步骤:
启动VC++6.0, 从File菜单中选择New选项, 选择Projects标签,然后单击MFC AppWizard(exe)。 在Location域中输入一个合适的路径名或单击Browse按钮来选择一个。在Project name中输入项目名称(比如:mfc_1)。点OK。 2 1 3

2 打开MFC AppWizard-Step1对话框后。选择基本对话。点下一个 。

3 在MFC AppWizard-Step2 of 4对话框。 输入标题对话,如:我的第一个MFC程序。点下一个。

4 在MFC AppWizard-Step3 of 4对话框。不做任何更改,直接点下一个。

5 在MFC AppWizard-Step4 of 4对话框。可以修改分类名等信息,在这里不做任何更改,直接点完成。

6

7 删除系统给的所有控件,自己创建某一样式的界面,点编排菜单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

8 选择按纽“确定”和“退出”,点鼠标右键Events…,分别添加鼠标单击事件:
然后点Edit Existing进行相关代码的输入。

9 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. }

10 程序执行结果,输入“测试”后点“确定”按纽,等到的结果如下:

11 常见的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());

12 常见的其他数据类型转换为CString的方法。
通用格式:output.Format(“% ¥”,变量); ¥取值:d 整型 l 长整型 u 无符号整型 f 浮点型 %.nf n表示浮点数的精度 实例 CString   output;     int   i=-10;     long   l=120;     UINT   u=250;     double  d=      output.Format("%d",   i);     output.Format("%l",   l);     output.Format("%u",   u);     output.Format("%.5f",   d);  

13 整型数据输入输出的实例 输入: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

14 CEdit 使用技巧 注:m_edit1代表ID为IDC_EDIT1的CEdit控件的control类型的变量
1.设置edit只读属性     方法一:                 m_edit1.SetReadOnly(TRUE);     方法二:                 ::SendMessage(m_edit1.m_hWnd, EM_SETREADONLY, TRUE, 0);

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

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

17 void CStrDlg::OnButton1() { // TODO: Add your control notification handler code here CString ss=" "; 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函数的功能很强,值得你研究一下。


Download ppt "用MFC制作windows风格界面步骤:"

Similar presentations


Ads by Google