2创建应用程序的过程Word格式.docx
《2创建应用程序的过程Word格式.docx》由会员分享,可在线阅读,更多相关《2创建应用程序的过程Word格式.docx(38页珍藏版)》请在冰豆网上搜索。
密码
编辑框editbox
IDC_SERVER
IDC_USER
IDC_PASS
CHECKBOX
IDC_DEL
是否删除邮件
RichEdit
IDC_INFO
命令按钮button
IDC_CONN
连接
IDC_VIEW
查看邮件
IDC_DISC
断开
IDCANCAL
退出
CChooseDlg
CComboBox
IDC_MSGLIST
CViewDlg
IDC_MSGTEXT
IDC_SAVE
存储
3.定义控件的成员变量
按照表6-14,用类向导(ClassWizard)为对话框中的控件对象定义相应的成员变量。
表6-14控件对象的成员变量
ControlIDs
变量名称
MemberVariableName
变量类别
Category
变量类型
VariableType
server
Value
CString
user
pass
del
BOOL
info
ctllnfo
Control
CRichEditCtrl
ctlList
text
4.添加成员变量的初始化代码
在FtpDlg.cpp文件的OnInitDialog()函数中添加成员变量的初始化代码。
对服务器名,登录用户名,登录口令的控件变量赋初值。
BOOLCFtpDlg:
:
OnInitDialog()
{
.................//前面是MFC应用程序向导和类向导自动生成的代码
//TODO:
Addextrainitializationhere
m_strFtp=_T("
"
);
//初始化服务器域名
m_strName=_T("
//初始化登录用户名
m_strPwd=_T("
//初始化登录口令
UpdateData(FALSE);
//更新界面
returnTRUE;
//returnTRUEunlessyousetthefocustoacontrol
}
5.为对话框中的控件对象添加事件响应函数
按照表6-15,用类向导(ClassWizard)为对话框中的控件对象添加事件响应函数。
表6-15对话框控件的事件响应函数
对象标识ObjectID
消息Message
函数Memberfunctions
命令按钮
BN_CLICKED
OnConn
OnView
OnDisc
IDOK
OnOK
OnSave
6.为CFtpDlg类添加其它的成员函数
Download(CStringstrSName,CStringstrDName);
Upload(CStringstrSName,CStringstrDName);
分别用于文件的下载和上传。
7.手工添加包含语句
在CFtpDlg类的FtpDlg.cpp文件中添加对于Afxinet.h的包含命令,来获得对于MFCWinInet类的支持。
8.添加事件函数和成员函数的代码
9.进行测试
4.创建从CAsyncSocket类继承的派生类
(1)为了能够捕获并响应socket事件,应创建用户自己的套接字类,它应当从CAsyncSocket类派生,还能将套接字事件传递给对话框,以便执行用户自己的事件处理函数。
选择菜单“插入/新建类”,进入“NewClass”对话框,如图5-12所示。
图5-12添加自己的套接字类
选择或输入以下信息:
ClassType:
选择MFCClass
ClassInfoumation下的Name:
输入mySock
ClassInfoumation下的Baseclass:
选择CAsyncSocket
点击“OK”按钮,系统会自动生成CMySocket类对应的包含文件mySock.h和mySock.cpp文件,在VC界面的ClassView中就可以看到这个类。
(2)利用类向导ClassWizard为这个套接字类添加响应消息的事件处理成员函数。
点菜单View/ClassWizard...,进入类向导对话框,选择MessageMaps(消息映射)卡,确认Classname是mySock,从Messages(消息)栏中选择事件消息,然后点击AddFunction按钮,就会看到在MemberFunction栏中添加了相应的事件处理函数。
如图5-13所示,此程序中需要添加OnConnect,OnClose和OnReceive三个函数。
这一步会在CMySocket类的mySock.h中自动生成这些函数的声明,在mySock.cpp中生成这些函数的框架,以及消息映射的相关代码。
可参看后面的程序清单。
图5-13为套接字类添加响应消息的事件处理成员函数
(3)为套接字类添加一般的成员函数和成员变量
在VC++的界面中,在工作区窗口选择ClassView卡,用右键单击CMySocket类,会弹出快捷菜单,选择其中的AddMemberFunction可以为该类添加成员函数;
选择AddMemberVariable可以为该类添加成员变量。
如图5-14所示。
图5-15和图5-16是添加操作的对话框。
图5-14为指定的类添加成员变量或成员函数
对这个套接字类,添加一个私有的成员变量,是一个对话框类的指针。
private:
CPop3Dlg*m_pDlg;
图5-15为套接字类添加一般的成员变量
再添加一个成员函数:
voidSetParent(CPop3Dlg*pDlg);
图5-16为套接字类添加一般的成员函数
这一步同样会在mySock.h中生成变量或函数的声明,在mySock.cpp中生成函数的框架代码。
如果熟悉的话,这一步的代码也可以直接手工添加。
(4)手工添加其他代码
在VC++的界面中,在工作区窗口选择FileView卡,双击要编辑的文件,在右面的窗口中就会展示该文件的代码,可以编辑添加。
对于mySock.h,应在文件开头,添加对于此应用程序对话框类的声明。
classCPop3Dlg;
对于mySock.cpp,有四处添加:
①应在文件开头,添加包含文件说明。
这是因为此套接字类用到了对话框类的变量。
#include“pop3Dlg.h”
②在构造函数中,添加对于对话框指针成员变量的初始化代码:
mySock:
:
mySock(){m_pDlg=NULL;
}
③在析构函数中,添加对于对话框指针成员变量的初始化代码:
~mySock(){m_pDlg=NULL;
④为成员函数setParent和事件处理函数OnConnect,OnClose和OnReceive添加代码。
详见后面的程序清单。
//pop3.h:
mainheaderfileforthePOP3application
#if!
defined(AFX_POP3_H__INCLUDED_)
#defineAFX_POP3_H__INCLUDED_
#if_MSC_VER>
1000
#pragmaonce
#endif//_MSC_VER>
#ifndef__AFXWIN_H__
#errorinclude'
stdafx.h'
beforeincludingthisfileforPCH
#endif
#include"
resource.h"
//mainsymbols
/////////////////////////////////////////////////////////////////////////////
//CPop3App:
//Seepop3.cppfortheimplementationofthisclass
classCPop3App:
publicCWinApp
public:
CPop3App();
//Overrides
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(CPop3App)
virtualBOOLInitInstance();
//}}AFX_VIRTUAL
//Implementation
//{{AFX_MSG(CPop3App)
//NOTE-theClassWizardwilladdandremovememberfunctionshere.
//DONOTEDITwhatyouseeintheseblocksofgeneratedcode!
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
//MicrosoftVisualC++willinsertadditionaldeclarationsimmediatelybeforethepreviousline.
#endif//