2创建应用程序的过程.DOC

上传人:天*** 文档编号:1887755 上传时间:2019-03-20 格式:DOC 页数:31 大小:142KB
下载 相关 举报
2创建应用程序的过程.DOC_第1页
第1页 / 共31页
2创建应用程序的过程.DOC_第2页
第2页 / 共31页
2创建应用程序的过程.DOC_第3页
第3页 / 共31页
2创建应用程序的过程.DOC_第4页
第4页 / 共31页
2创建应用程序的过程.DOC_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、6.6.2 创建应用程序的过程1使用 MFC AppWizard 创建应用程序框架工程名是 pop3,应用程序的类型是基于对话框的,对话框的标题是 “接收电子邮件客户端程序”,需要 Windows Sockets 的支持,其它部分接受系统的默认设置就可以。应用程序包括两个类:应用程序类:CPop3App,基类是 CWinApp,对应的文件是 pop3.h 和pop3.cpp。对话框类:CPop3Dlg,基类是 CDialog,对应的文件是 pop3Dlg.h 和pop3Dlg.cpp。2为对话框添加控件在程序的主对话框界面中按照图 6-13 添加相应的可视控件对象,并按照表 6-13 修改控件

2、的属性。表 6-13 对话框中的控件属性控件类型 控件 ID Caption静态文本 static text IDC_STATIC 服务器地址静态文本 static text IDC_STATIC 用户名静态文本 static text IDC_STATIC 密码编辑框 edit box IDC_SERVER编辑框 edit box IDC_USER编辑框 edit box IDC_PASSCHECK BOX IDC_DEL 是否删除邮件RichEdit IDC_INFO命令按钮 button IDC_CONN 连接命令按钮 button IDC_VIEW 查看邮件命令按钮 button ID

3、C_DISC 断开命令按钮 button IDCANCAL 退出CChooseDlgCComboBox IDC_MSGLISTCViewDlg编辑框 edit box IDC_MSGTEXT命令按钮 button IDC_SAVE 存储3定义控件的成员变量按照表 6-14,用类向导(Class Wizard)为对话框中的控件对象定义相应的成员变量。表 6-14 控件对象的成员变量控件 IDControl IDs变量名称Member Variable Name变量类别Category变量类型Variable TypeIDC_SERVER server Value CStringIDC_USER

4、user Value CStringIDC_PASS pass Value CStringIDC_DEL del Value BOOLinfo Value CStringIDC_INFOctllnfo Control CRichEditCtrlCChooseDlgIDC_MSGLIST ctlList Control CComboBoxCViewDlgIDC_MSGTEXT text Value CString4添加成员变量的初始化代码在 FtpDlg.cpp 文件的 OnInitDialog()函数中添加成员变量的初始化代码。对服务器名,登录用户名,登录口令的控件变量赋初值。BOOL CFt

5、pDlg:OnInitDialog(). / 前面是 MFC 应用程序向导和类向导自动生成的代码/ TODO: Add extra initialization herem_strFtp=_T(“); / 初始化服务器域名m_strName=_T(“); / 初始化登录用户名m_strPwd=_T(“); / 初始化登录口令UpdateData(FALSE); /更新界面return TRUE; / return TRUE unless you set the focus to a control5为对话框中的控件对象添加事件响应函数按照表 6-15,用类向导(Class Wizard )为对

6、话框中的控件对象添加事件响应函数。表 6-15 对话框控件的事件响应函数控件类型 对象标识 ObjectID消息 Message 函数 Member functions命令按钮 IDC_CONN BN_CLICKED OnConn命令按钮 IDC_VIEW BN_CLICKED OnView命令按钮 IDC_DISC BN_CLICKED OnDiscCChooseDlg命令按钮 IDOK BN_CLICKED OnOKCViewDlg命令按钮 IDC_SAVE BN_CLICKED OnSave6为 CFtpDlg 类添加其它的成员函数BOOL CFtpDlg: Download (CStr

7、ing strSName, CString strDName);BOOL CFtpDlg: Upload (CString strSName, CString strDName);分别用于文件的下载和上传。7手工添加包含语句在 CFtpDlg 类的 FtpDlg.cpp 文件中添加对于 Afxinet.h 的包含命令,来获得对于MFC WinInet 类的支持。8添加事件函数和成员函数的代码9进行测试4创建从 CAsyncSocket 类继承的派生类(1)为了能够捕获并响应 socket 事件,应创建用户自己的套接字类,它应当从CAsyncSocket 类派生,还能将套接字事件传递给对话框,以

8、便执行用户自己的事件处理函数。选择菜单“插入/新建类 ”,进入“New Class”对话框,如图 5-12 所示。图 5-12 添加自己的套接字类选择或输入以下信息:Class Type:选择 MFC ClassClass Infoumation 下的 Name: 输入 mySockClass Infoumation 下的 Base class:选择 CAsyncSocket点击“OK”按钮,系统会自动生成 CMySocket 类对应的包含文件 mySock.h 和mySock.cpp 文件,在 VC 界面的 Class View 中就可以看到这个类。(2)利用类向导 ClassWizard

9、为这个套接字类添加响应消息的事件处理成员函数。点菜单 View/ClassWizard.,进入类向导对话框,选择 Message Maps(消息映射)卡,确认 Class name 是 mySock,从 Messages(消息)栏中选择事件消息,然后点击Add Function 按钮,就会看到在 Member Function 栏中添加了相应的事件处理函数。如图 5-13 所示,此程序中需要添加 OnConnect,OnClose 和 OnReceive 三个函数。这一步会在 CMySocket 类的 mySock.h 中自动生成这些函数的声明,在 mySock.cpp中生成这些函数的框架,以

10、及消息映射的相关代码。可参看后面的程序清单。图 5-13 为套接字类添加响应消息的事件处理成员函数(3)为套接字类添加一般的成员函数和成员变量在 VC+的界面中,在工作区窗口选择 ClassView 卡,用右键单击 CMySocket 类,会弹出快捷菜单,选择其中的 Add Member Function 可以为该类添加成员函数;选择Add Member Variable 可以为该类添加成员变量。如图 5-14 所示。图 5-15 和图 5-16是添加操作的对话框。图 5-14 为指定的类添加成员变量或成员函数对这个套接字类,添加一个私有的成员变量,是一个对话框类的指针。private:CPo

11、p3Dlg * m_pDlg;图 5-15 为套接字类添加一般的成员变量再添加一个成员函数:void SetParent(CPop3Dlg * pDlg);图 5-16 为套接字类添加一般的成员函数这一步同样会在 mySock.h 中生成变量或函数的声明,在 mySock.cpp 中生成函数的框架代码。如果熟悉的话,这一步的代码也可以直接手工添加。(4)手工添加其他代码在 VC+的界面中,在工作区窗口选择 FileView 卡,双击要编辑的文件,在右面的窗口中就会展示该文件的代码,可以编辑添加。对于 mySock.h,应在文件开头,添加对于此应用程序对话框类的声明。class CPop3Dlg

12、;对于 mySock.cpp,有四处添加: 应在文件开头,添加包含文件说明。这是因为此套接字类用到了对话框类的变量。#include “pop3Dlg.h” 在构造函数中,添加对于对话框指针成员变量的初始化代码:mySock:mySock() m_pDlg = NULL; 在析构函数中,添加对于对话框指针成员变量的初始化代码:mySock:mySock() m_pDlg = NULL; 为成员函数 setParent 和事件处理函数 OnConnect,OnClose 和 OnReceive 添加代码。详见后面的程序清单。/ pop3.h : main header file for the

13、POP3 application#if !defined(AFX_POP3_H_INCLUDED_)#define AFX_POP3_H_INCLUDED_#if _MSC_VER 1000#pragma once#endif / _MSC_VER 1000#ifndef _AFXWIN_H_#error include stdafx.h before including this file for PCH#endif#include “resource.h“ / main symbols/ CPop3App:/ See pop3.cpp for the implementation of t

14、his classclass CPop3App : public CWinApppublic:CPop3App();/ Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CPop3App)public:virtual BOOL InitInstance();/AFX_VIRTUAL/ Implementation/AFX_MSG(CPop3App)/ NOTE - the ClassWizard will add and remove member functions here./ DO NOT ED

15、IT what you see in these blocks of generated code !/AFX_MSGDECLARE_MESSAGE_MAP();/AFX_INSERT_LOCATION/ Microsoft Visual C+ will insert additional declarations immediately before the previous line.#endif / !defined(AFX_POP3_H_INCLUDED_)/ pop3.cpp : Defines the class behaviors for the application.#inc

16、lude “stdafx.h“#include “pop3.h“#include “pop3Dlg.h“#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CPop3AppBEGIN_MESSAGE_MAP(CPop3App, CWinApp)/AFX_MSG_MAP(CPop3App)/ NOTE - the ClassWizard will add and remove mapping macros here./ DO NOT EDIT what you see i

17、n these blocks of generated code!/AFX_MSGON_COMMAND(ID_HELP, CWinApp:OnHelp)END_MESSAGE_MAP()/ CPop3App constructionCPop3App:CPop3App()/ TODO: add construction code here,/ Place all significant initialization in InitInstance/ The one and only CPop3App objectCPop3App theApp;/ CPop3App initializationB

18、OOL CPop3App:InitInstance()if (!AfxSocketInit()AfxMessageBox(IDP_SOCKETS_INIT_FAILED);return FALSE;AfxEnableControlContainer(); /MFC 自动创建的AfxInitRichEdit(); /自己加的/ Standard initialization/ If you are not using these features and wish to reduce the size/ of your final executable, you should remove fr

19、om the following/ the specific initialization routines you do not need.#ifdef _AFXDLLEnable3dControls(); / Call this when using MFC in a shared DLL#elseEnable3dControlsStatic(); / Call this when linking to MFC statically#endifCPop3Dlg dlg;m_pMainWnd = int nResponse = dlg.DoModal();if (nResponse = ID

20、OK)/ TODO: Place code here to handle when the dialog is/ dismissed with OKelse if (nResponse = IDCANCEL)/ TODO: Place code here to handle when the dialog is/ dismissed with Cancel/ Since the dialog has been closed, return FALSE so that we exit the/ application, rather than start the applications mes

21、sage pump.return FALSE;/ pop3Dlg.h : header file#if !defined(AFX_POP3DLG_H_INCLUDED_)#define AFX_POP3DLG_H _INCLUDED_#include “pop31.h“#include “resource.h“#if _MSC_VER 1000#pragma once#endif / _MSC_VER 1000/ CPop3Dlg dialogclass CPop3Dlg : public CDialog/ Constructionpublic:CPop3 pop3;void Dispatch

22、(LONG param);CPop3Dlg(CWnd* pParent = NULL); / standard constructor/ Dialog Data/AFX_DATA(CPop3Dlg)enum IDD = IDD_POP3_DIALOG ;CRichEditCtrl ctlInfo;CString info;CString pass;CString server;CString user;BOOL del;/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CPop3Dlg)protect

23、ed:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:HICON m_hIcon;/ Generated message map functions/AFX_MSG(CPop3Dlg)virtual BOOL OnInitDialog();afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();afx_msg void OnConn();afx_msg void OnDisc()

24、;afx_msg void OnView();/AFX_MSGDECLARE_MESSAGE_MAP();/AFX_INSERT_LOCATION/ Microsoft Visual C+ will insert additional declarations immediately before the previous line.#endif / !defined(AFX_POP3DLG_H_INCLUDED_)/ pop3Dlg.cpp : implementation file#include “stdafx.h“#include “pop3.h“#include “pop31.h“#

25、include “Gniazdo.h“#include “ChooseDlg.h“#include “pop3Dlg.h“#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CPop3Dlg dialogCPop3Dlg:CPop3Dlg(CWnd* pParent /*=NULL*/): CDialog(CPop3Dlg:IDD, pParent)/AFX_DATA_INIT(CPop3Dlg)info = _T(“);pass = _T(“wxpwxp“);serv

26、er = _T(““);user = _T(“busywxp“);del = FALSE;/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CPop3Dlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CPop3Dlg)DDX_Control(pDX, IDC_INFO

27、, ctlInfo);DDX_Text(pDX, IDC_INFO, info);DDX_Text(pDX, IDC_PASS, pass);DDX_Text(pDX, IDC_SERVER, server);DDX_Text(pDX, IDC_USER, user);DDX_Check(pDX, IDC_DEL, del);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CPop3Dlg, CDialog)/AFX_MSG_MAP(CPop3Dlg)ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_CONN, OnConn)

28、ON_BN_CLICKED(IDC_DISC, OnDisc)ON_BN_CLICKED(IDC_VIEW, OnView)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CPop3Dlg message handlersBOOL CPop3Dlg:OnInitDialog()CDialog:OnInitDialog();/ Set the icon for this dialog. The framework does this automatically/ when the applications main window is not a dialogSetIcon(m_hIcon, TRUE); / Set big iconSetIcon(m_hIcon, FALSE); / Set small icon/ TODO: Add extra initialization hereCHARFORMAT cf; /设置默认的字符格式cf.cbSize=sizeof(cf);cf.dwMask=CFM_COLOR | CFM_FACE;cf.dwEffects=0;cf.crTextColor=RGB(255,0,0);strcpy(cf.szFaceName,“Verdana“);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 1

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。