MFC怎么实现将源文件复制到要保存的目标路径?

MFC怎么实现将源文件复制到要保存的目标路径?,第1张

要注意的是你要copy文件到C盘(系统盘),要以管理员权限运行该程序,否则copy到系统盘会失败的

TCHAR SourceFileName[MAX_PATH]={0} , TargetFileNmae[MAX_PATH]={0}

GetDlgItemText(IDC_EDIT_S,SourceFileName,-1)

GetDlgItemText(IDC_EDIT_T,TargetFileNmae,-1)

if(!CopyFile(SourceFileName,TargetFileNmae,FALSE))//若目标文件存在,对其覆盖

{

AfxMessageBox("文件复制失败,请检测文件路径是否正确!")

return

}

AfxMessageBox("文件复制成功!")

再次重声,文件 *** 作属于内核对象 *** 作。。所以设计到安全问题,即UAC,所以你要想对c盘文件 *** 作,必须要管理员权限 *** 作

听你这么说。我假定你已经学习了c++ 和 win32 (至少看过win32 的 hello word 示例程序)

一个简单程序简化为 如下:

窗口函数

LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)

{

....

}

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)

创建注册窗口

MSG msg

while(GetMessage(&msg,NULL,0,0))

{

TranslateMessage(&msg)

DispatchMessage(&msg)

}

return msg.wParam 

}  

工程名.cpp 工程名.h 是一个 CWinApp 的派生类 。这2个文件执行的就是以下这些代码 :

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)

MSG msg

while(GetMessage(&msg,NULL,0,0))

{

TranslateMessage(&msg)

DispatchMessage(&msg)

}

return msg.wParam 

}  

工程名Dlg.cpp 工程名Dlg.h 这2个文件创建一个窗口 。执行的代码是:

窗口函数

LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)

{

....

}

创建注册窗口

这只是粗略说说,至于细说,一言难尽。哎!太复杂了。我学习了很久才懂个大概。mfc真是难于理解。

下面我再贴一个mfc的简单例子。相比对话框例子。我觉得这能更好的理解mfc 。

//下面这个程序是在Win32工程里模拟MFC程序初始化并创建窗口的简单过程(当然,它只是模拟,意在理解MFC创建程序机制,其中是有漏洞的)

//1.创建一个Win32 Application工程-->新建一个C++ Source File-->复制并粘贴代码

//2.Alt+F7调出设置对话框-->在Microsoft基础类-->选择"使用MFC作为静态链接库"

//3.运行

#include"afxwin.h"

//窗口基类,用来最为程序的主窗口,当然也可继承于CFrameWnd类

class CMyWnd:public CWnd 

public:

CMyWnd() //窗口类的构造函数

{

    CreateEx(NULL,AfxRegisterWndClass(NULL),"MyWindow",WS_VISIBLE|WS_OVERLAPPEDWINDOW,100,100,200,200,NULL,NULL,NULL)

}

//继承一个CWinApp类,用于构建程序实例

class CMyApp:public CWinApp

{

public: 

BOOL InitInstance() //InitInstance()是虚函数,我们需要重载它并在里面添加我们初始化代码(如创建主窗口)

{

    //m_pMainWnd是CWinThread里的一个数据成员,用来创建主窗口(选中"m_pMainWnd"->右键->转到"m_pMainWnd"的定义)

    m_pMainWnd=new CMyWnd() 

//    m_pMainWnd->ShowWindow(m_nCmdShow)    //CreateEx里有WS_VISIBLE,所以可以省略显示窗口函数

    //你的代码 

    return true 

}

//创建一个程序实例

CMyApp TheApp 

//运行的顺序是:

//1    创建TheApp对象

//2    TheApp调用成员函数InitInstance()

//3    在InitInstance()里用成员变量m_pMainWnd创建窗口类(m_pMainWnd=new CMyWnd())

//4    m_pMainWnd调用构造函数CMyWnd()

//5    在CMyWnd()调用成员函数创建窗口

//你可以在你创建的单文档和对话框程序里面看见这些代码的踪影,用调试的方法加以追踪,加深理解

现象是用 debug中的 step info或者run to cursor合着设置断点会出现One or more breakpoints cannot be set and have been disabled. Execution will stop at the beginning of the program.解决方法,

1.在project->setting->c/c++-general->debug info->program databse for edit and continue

2.edit->breakpoints->removeall

3.build->set active project configuration->*.exe win32 debug.

经过以上三步,ok!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12113994.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存