FTP客户端(改进)

来源:互联网 发布:单片机算嵌入式系统 编辑:程序博客网 时间:2024/04/26 09:29

上一篇中Ftp客户端是基于Dialog,这里使用SDI基于CListView类。

其ui如下所示:



一、浮动对话框

Style设置为Child,Border设置为None。


用到如下几个函数:

CDialogBar::Create

virtual BOOL Create(CWnd* pParentWnd,          //指向装载浮动对话框父窗口指针UINT nIDTemplate,          //对话框资源IDUINT nStyle,               //对话框在框架窗口的位置UINT nID                   //对话框控件ID);


EnableDocking()

DockControlBar()  框架指定浮动对话框停靠


二、客户区的分割

分为三个区,即三个视图CMsgShow, CFileTree,CFtpTreeView,分别基于类CEditview,CTreeView,CListView


用到如下几个函数:

virtual BOOL CreateStatic

virtual BOOL CreateStatic(CWnd* pParentWnd,                      //分割窗口的父框架窗口int nRows,                             //分割行int nCols,                             //分割列DWORD dwStyle = WS_CHILD | WS_VISIBLE, //指定窗口样式UINT nID = AFX_IDW_PANE_FIRST          //子窗口的ID);


virtual BOOL CreateView

virtual BOOL CreateView(int row,  int col,CRuntimeClass* pViewClass,  //指定一个CRuntimeClass作为新视图SIZE sizeInit,              //指定新视图的初始大小CCreateContext* pContext    //为用来创建上下文的指针创建视图);

SetRowInfo()


SetColumnInfo()


三、客户端的连接

通过调用WinInet API来实现,用到两个类:CInternetSession和CFtpConnection

CInternetSession(LPCTSTR pstrAgent = NULL,                           DWORD_PTR dwContext = 1,DWORD dwAccessType = PRE_CONFIG_INTERNET_ACCESS,LPCTSTR pstrProxyName = NULL,LPCTSTR pstrProxyBypass = NULL,DWORD dwFlags = 0 );CFtpConnection* GetFtpConnection(LPCTSTR pstrServer,                  //包含FTP服务器IP地址的字符串LPCTSTR pstrUserName = NULL,         //用户名字符串,若为NULL,则为默认匿名登录LPCTSTR pstrPassword = NULL,         //密码字符串INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER, //服务器的端口号,对FTP默认为21BOOL bPassive = FALSE                //会话指定为被动或主动,默认为主动模式);


PutFile()

BOOL PutFile(LPCTSTR pstrLocalFile,                    //上传文件的路径字符串LPCTSTR pstrRemoteFile,                   //保存在FTP服务器上文件路径DWORD dwFlags = FTP_TRANSFER_TYPE_BINARY, //指定文件的传输模式DWORD_PTR dwContext = 1                   //文件的标识符); 

GetFile()

BOOL GetFile(LPCTSTR pstrRemoteFile,                 //FTP服务器上文件路径LPCTSTR pstrLocalFile,                  //本地创建的文件路径BOOL bFailIfExists = TRUE,              //当下载路径上有同名文件时,是否会导致下载失败DWORD dwAttributes = FILE_ATTRIBUTE_NORMAL, //文件属性DWORD dwFlags = FTP_TRANSFER_TYPE_BINARY,   //调用时的条件DWORD_PTR dwContext = 1                     //文件检索上下文标识);


四、遍历本地文件夹资源

调用CFileFind类

InsertItem()

HTREEITEM InsertItem(LPCTSTR lpszItem,     //插入项的文本指针int nImage,           //插入项未被选中时的图标索引int nSelectedImage,   //插入项被选中时的图标索引HTREEITEM hParent = TVI_ROOT, //父节点项的句柄,默认为根节点HTREEITEM hInsertAfter = TVI_LAST //新插入项的位置,默认最后);

效果图如下:



源代码


0 0
原创粉丝点击