MFC控件及功能实现

发布时间 : 星期六 文章MFC控件及功能实现更新完毕开始阅读

4. 调用GetConnect可返回当前的连接字符串。 5. 相关函数声明: virtual void Close( );

BOOL IsOpen( ) const; //返回TRUE则表明当前有一个连接 const CString& GetConnect( ) const;

6. CDatabase的析构函数会调用Close,所以只要删除了CDatabase对象就可以与数据源脱离。 代码实现:

CDatabase database;//定义数据对象

database.Open(\打开ODBC数据源 CRecordset set(&database);

CString str1,str2,str3,str4,str5,str6,str7,str8,str9,str10,str11; str.Format(\联系人\if(set.IsOpen())//判断数据源是否打开 set.Close();

set.Open(CRecordset::dynaset,str);

while(!set.IsEOF())//循环读取数据到表格 {

m_list.InsertItem(i,\si.Format(\

m_list.SetItemText(i,0,si); set.GetFieldValue(\ m_list.SetItemText(i,1,str1); set.GetFieldValue(\ m_list.SetItemText(i,2,str2); set.MoveNext(); i++; }

set.Close();//关闭数据

17、VC下删除、复制和移动文件实现

bool DeleteFile(char * lpszPath) {

SHFILEOPSTRUCT FileOp={0};

FileOp.fFlags = FOF_ALLOWUNDO | //允许放回回收站

FOF_NOCONFIRMATION; //不出现确认对话框 FileOp.pFrom = lpszPath; FileOp.pTo = NULL; //一定要是NULL

FileOp.wFunc = FO_DELETE; //删除操作

return SHFileOperation(&FileOp) == 0; }

//复制文件或文件夹

第 12 页 共 20页

bool CopyFile(char *pTo,char *pFrom) {

SHFILEOPSTRUCT FileOp={0};

FileOp.fFlags = FOF_NOCONFIRMATION|

//不出现确认对话框

FOF_NOCONFIRMMKDIR ; //需要时直接创建一个文件夹,不需用户确定 FileOp.pFrom = pFrom; FileOp.pTo = pTo;

FileOp.wFunc = FO_COPY;

return SHFileOperation(&FileOp) == 0; }

//移动文件或文件夹

bool MoveFile(char *pTo,char *pFrom) {

SHFILEOPSTRUCT FileOp={0};

FileOp.fFlags = FOF_NOCONFIRMATION| //不出现确认对话框

FOF_NOCONFIRMMKDIR ; //需要时直接创建一个文件夹,不需用户确定 FileOp.pFrom = pFrom; FileOp.pTo = pTo;

FileOp.wFunc = FO_MOVE;

return SHFileOperation(&FileOp) == 0; }

//从命名文件或文件夹

bool ReNameFile(char *pTo,char *pFrom) {

SHFILEOPSTRUCT FileOp={0};

FileOp.fFlags = FOF_NOCONFIRMATION;

//不出现确认对话框 FileOp.pFrom = pFrom; FileOp.pTo = pTo;

FileOp.wFunc = FO_RENAME;

return SHFileOperation(&FileOp) == 0; }

应用举例:

DeleteFile(\ //删除一个文件夹

DeleteFile(\删除多个文件 CopyFile(\临时程序\\0\\0\ //把\临时程序\文件夹放到d盘下面

CopyFile(\临时程序\\\\PID.dsp\\0D:\\\\MyProjects\\\\临时程序\\\\PID.dsw\\0\//把PID.dsp和PID.dsw俩个文件放到d盘下面

ReNameFile(\把PID文件夹从命名为NewName

注意:,如果你想把\临时程序\\0\\0\的文件夹复制到D盘下,并从命名为NewName,应该这

第 13 页 共 20页

CopyFile(\临时程序\\\\*.*\\0\\0\//把\临时程序\文件夹复制到d盘下并从命名为\

下面这个类方便你复制多个文件或文件夹,仅作参考 //连接多个路径的类 class JOINFILEPATH {

private: int pos;

char* MultipleFilePath; public:

JOINFILEPATH() {

pos=0;

MultipleFilePath=new char[MAX_PATH*10]; memset(MultipleFilePath,0,MAX_PATH*10); }

~JOINFILEPATH() { delete []MultipleFilePath; } void join(char *FilePath) {

while(*FilePath!='\\0')

MultipleFilePath[pos++]=*FilePath++; pos++; }

char * GetMultipleFilePath() {return MultipleFilePath;} };

//应用举例:

JOINFILEPATH FilePath;

FilePath.join(\临时程序\\\\PID\\\\PID.dsp\FilePath.join(\临时程序\\\\PID\\\\PID.dsw\CopyFile(\

1 pFrom和pTo最好以\\0\\0结尾(把存放路径的字符串初始化为0),不然有可能会出错,中间的每一个路径用\\0隔开

2 pFrom所指向的文件或文件夹(可以多个)会被复制或移动到pTo所指向的文件夹下面(假如文件夹不存在会询问是否创建,当然你也可以选择直接创建) 参数详解:

Typedef struct _ShFILEOPSTRUCT {

HWND hWnd; //消息发送的窗口句柄; UINT wFunc; //操作类型

LPCSTR pFrom; //源文件及路径 LPCSTR pTo; //目标文件及路径

FILEOP_FLAGS fFlags; //操作与确认标志 BOOL fAnyOperationsAborted; //操作选择位

第 14 页 共 20页

LPVOID hNameMappings; //文件映射

LPCSTR lpszProgressTitle; //文件操作进度窗口标题 }SHFILEOPSTRUCT, FAR * LPSHFILEOPSTRUCT;

在这个结构中,hWnd是指向发送消息的窗口句柄,pFrom与pTo是进行文件操作的源文件名和目标文件名,它包含文件的路径,对应单个文件的路径字符串,或对于多个文件,必须以NULL作为字符串的结尾或文件路径名之间的间隔,否则在程序运行的时候会发生错误。另外,pFrom和pTo都支持通配符*和?,这大大方便了开发人员的使用。例如,源文件或目录有两个,则应是:char pFrom[]=\,它表示对要D:盘Test目录下的所有文件和D:盘上的Text.txt文件进行操作。字符串中的\是C语言中的'\\'的转义符,'\\0'则是NULL。wFunc 是结构中的一个非常重要的成员,它代表着函数将要进行的操作类型,它的取值为如下: FO_COPY: 拷贝文件pFrom到pTo 的指定位置。

FO_RENAME: 将pFrom的文件名更名为pTo的文件名。 FO_MOVE: 将pFrom的文件移动到pTo的地方。 FO_DELETE: 删除pFrom指定的文件。

使用该函数进行文件拷贝、移动或删除时,如果需要的时间很长,则程序会自动在进行的过程中出现一个无模式的对话框(Windows操作系统提供的文件操作对话框),用来显示执行的进度和执行的时间,以及正在拷贝、移动或删除的文件名,此时结构中的成员lpszProgressTitle显示此对话框的标题。fFlags是在进行文件操作时的过程和状态控制标识。它主要有如下一些标识,也可以是其组合: FOF_FILESONLY:执行通配符,只执行文件;

FOF_ALLOWUNDO:保存UNDO信息,以便在回收站中恢复文件;

FOF_NOCONFIRMATION:在出现目标文件已存在的时候,如果不设置此项,则它会出现确认是否覆盖的对话框,设置此项则自动确认,进行覆盖,不出现对话框。

FOF_NOERRORUI:设置此项后,当文件处理过程中出现错误时,不出现错误提示,否则会进行错误提示。

FOF_RENAMEONCOLLISION:当已存在文件名时,对其进行更换文提示。 FOF_SILENT:不显示进度对话框。

FOF_WANTMAPPINGHANDLE:要求SHFileOperation()函数返回正处于操作状态的实际文件列表,文件列表名柄保存在hNameMappings成员中。

SHFILEOPSTRUCT结构还包含一个SHNAMEMAPPING结构的数组,此数组保存由SHELL计算的每个处于操作状态的文件的新旧路径。

在使用该函数删除文件时必须设置SHFILEOPSTRUCT结构中的神秘FOF_ALLOWUNDO标志,这样才能将待删除的文件拷到Recycle Bin,从而使用户可以撤销删除操作。需要注意的是,如果pFrom设置为某个文件名,用FO_DELETE标志删除这个文件并不会将它移到Recycle Bin,甚至设置FOF_ALLOWUNDO标志也不行,在这里你必须使用全路径名,这样SHFileOperation才会将删除的文件移到Recycle Bin。

18、VC与MFC组合键的使用

MFC中,一般在WM_KEYUP或WM_KEYDOWN中,普通的按键可以实现组合,但ctrl,shirt这些却不能,这个是什么原因,我自己也不清楚。但解决的方法如下:

可以在mainframe等类中重载pretranslatemessage函数,然后这样实现: BOOL CMainFrame::PreTranslateMessage(MSG* pMsg) {

// TODO: Add your specialized code here and/or call the base class char nChar = pMsg->wParam;

第 15 页 共 20页

联系合同范文客服:xxxxx#qq.com(#替换为@)