A. VC++ MFC 读文件 共享为例
方法一:
CFile file;
if ( file.Open("c://data.txt",CFile::modeRead))
{
AfxMessageBox("OK");
file.Close();
} else {
AfxMessageBox("文件已被打开或打开失败!");
}
方法二:
HANDLE hFile;
hFile = CreateFile("d://pos.txt",GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_DELETE,NULL,OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
if(hFile == INVALID_HANDLE_VALUE )
{
AfxMessageBox("该文件已被打开或打开失败!")
return 0;
}
.....
CloseHandle(hFile);
B. MFC程序问题——如何通过点击按钮弹出文件目录浏览,选择目录
给你一个控制台版本的浏览目录范例程序,把main中的代码复制过去就行了。
#include <wtypes.h>
#include <atlbase.h>
#include <shlobj.h>
#include <iostream>
using namespace std;
//显示文件夹浏览对话框
//用shell提供的SHBrowseForFolder,需要一个指向BROWSEINFO结构的指针
/* BROWSEINFO结构
HWND hwndOwner,指定对话框的父窗口的句柄
LPCITEMIDLIST pidlRoot,指定打开浏览的根目录,若为NULL,表示桌面
LPSTR pszDisplayName,指定一个缓冲区,接收用户选择的目录的显示名称
LPCSTR lpszTitle,树形视图上方显示的文字
UINT ulFlags,指定属性
BFFCALLBACK Lpfn,指定回调函数,发生某些事件时,指定的函数被调用,允许程序进一步定制对话框的行为
LPARAM lParam,若指定回调函数,参数值传递给回调函数
int iImage,代表用户选择的文件夹对象的图标在系统图标列表中的索引 */
int main()
{
BROWSEINFO bi;
::ZeroMemory(&bi,sizeof(bi)); //将bi结构清零
char szSelPath[MAX_PATH]; //被选择文件夹对象名称的缓冲区
bi.pszDisplayName=szSelPath;
LPITEMIDLIST pNetHoodIDL;
::SHGetSpecialFolderLocation(NULL,CSIDL_HISTORY,&pNetHoodIDL); //根文件夹为历史文件夹
bi.pidlRoot=pNetHoodIDL;
bi.lpszTitle="Luoguohui "; //提示字符串
bi.ulFlags=BIF_BROWSEINCLUDEFILES| //允许选择文件对象
BIF_EDITBOX| //显示编辑框
BIF_STATUSTEXT| //显示状态文本
BIF_VALIDATE; //校验编辑框中的输入
LPITEMIDLIST pidlSel=::SHBrowseForFolder(&bi); //打开文件夹浏览对话框
if(pidlSel!=NULL)
{
cout<<"Selected:"<<szSelPath<<endl;
CComPtr<IMalloc> pMalloc;
::SHGetMalloc(&pMalloc);
pMalloc->Free(pidlSel); //释放资源
}
return 0;
}
C. C++ MFC 根据路径复制局域网中其他电脑中的文件到本机指定位置
我感觉可以通过映射网络驱动器的方式啊,不知道你们那边能不能这样用。
对于访问,尤其是多台机器访问另一台机器固定路径下的文件,可以通过映射网络驱动器的方式实现,映射完成后,该文件就相当于放在本地的磁盘上,该怎么操作就不用说了吧。
E
D. MFC通过IP访问共享文件夹
首先确认共享完成,服务器共享的话,一般都是关闭了简单共享,也就是不但需要共享,还要在文件夹的安全选项里添加用户。
共享完成后,在别的同一网段或下级网段的机可以直接通过运行 \\服务器IP\文件夹共享名
来打开
E. MFC中怎样将某个或某个文件夹共享到网络中
这个太强了吧 相当于做ftp服务器软件了
FTP,归根到底,只是基于TCP/IP协议的一个扩充,定义了一套规范,用于文件传输文件。例如各种应答码。
你的问题是要写出一个FTP服务器端,那就应该从理解FTP协议上入手。
简单举例来说,你的程序应该实现如下功能(以主动模式为例):
1,监听21端口。
2,接收到数据后,根据FTP协议判断是否为FTP请求。
3,若是,取得客户机端口,根据FTP协议,返回应答码至客户机该端口。
4,服务器指定本机随机端口(<1024),根据FTP协议,通知客户端准备接受数据。
F. MFC-7340打印机局域网内如何共享
将打印机连接A PC电脑,并打印出测试页。然后设置共享打印机。然后在别的PC电脑找打印机名字,添加就好。电脑在同局域网内。
假设B电脑需要共享其打印机,在B电脑“开始”-“设置”-“打印和传真”-“添加打印机”-选“网络打印机或连接打印机的电脑”下一步-选“浏览打印机”,等出现需要共享的打印机,双击它并根据提示直接安装其驱动即可。
实现操作成功前必须保证A电脑和B电脑同在一个局域网和使用同一个工作组,否则不能在浏览打印机时找不到需要共享的打印机。
检验两台电脑是否在同一个局域网和工作组只需打开网上邻居,如能找到对方电脑的共享文件夹,就可以了。如不能则要到“我的电脑”右击“属性”-计算机名修改和A电脑相同的工作组即可
G. MFC 读取http文件服务器上的文件列表,并选择文件进行下载
你需要学会动态网页制作,至少简单的生成TXT文本,就是网站WEB程序读取目录中的文件列表,以TXT或XML输出
你还需要学会MFC网络编程,就是MFC程序访问/下载某个网址的网页,其实就是读取/下载网站WEB程序动态生成的TXT或者XML内容
当然你也可以静态生成TXT或者XML放置在WEB服务器上
显示的话,就是ListControl,ListView一类,可自绘
下载文件和下载/读取网页基本相同,只是网页是文本是string(当然原始也是BYTE[]),而文件就是很多个字节是BYTE[]
总结的话,就是一个是服务器端要放置有提供文件列表内容的文件
再一个就是MFC网络访问/读取这个文件,解析得到文件列表
学会使用ListControl
和读取网页一样,按字节接收即可
H. MFC打开局域网smb路径
ShellExecute(NULL,_T("explore"),_T("\192.168.1.102"),NULL,NULL,SW_SHOWNORMAL);
这样试试
I. C++,MFC工程如何浏览一个文件,复制到另外一个文件夹
主要有两个难点:
1、如何选择文件;
2、选择好文件之后,如果复制;
1st、关于文件选择,可参考下面这段代码:
CString CDcPackerDlg::BootOpenDialog() //返回选择的文件名称
{
CString strFile = _T("");
CFileDialog dlgFile(TRUE, NULL, NULL, OFN_HIDEREADONLY, _T("Describe Files (*.cfg)|*.cfg|All Files (*.*)|*.*||"), NULL);
if (dlgFile.DoModal())
{
strFile = dlgFile.GetPathName();
}
return strFile;
}
//加载文件按钮
void CDcPackerDlg::OnBnClickedSelectdec()
{
// TODO: Add your control notification handler code here
m_strDescPath = ""; //类的成员变量
//"打开文件"对话框,选择文件,返回其路径
m_strDescPath = BootOpenDialog();
}
2nd、文件复制:
2.1 获得程序目录
CString strPath = "", strDir = "";
char filepath[MAX_PATH];
GetMoleFileName(NULL, filepath, MAX_PATH);
strDir.Format("%s", filepath);
strPath = strDir.Left(strDir.ReverseFind('\\'));
2.2 复制文件
在MFC下可以用CopyFile()函数,定义如下:
BOOL CopyFile(
LPCTSTR lpExistingFileName, //原文件地址,包括文件名
LPCTSTR lpNewFileName, ////目的文件地址,包括文件名
BOOL bFailIfExists //如果目的文件存在的操作
);
3rd、自己把上面给的代码组装一下,就可以满足你的要求了。
J. MFC怎样创建能同时浏览文件夹和文件的对话框
BROWSEINFO bi;
ZeroMemory(&bi,sizeof(BROWSEINFO)); //指定存放文件的默认文件夹路径
bi.lpszTitle="请选择文件夹"; //添加提示语句
bi.ulFlags=0x0040 | BIF_EDITBOX; //添加“新建文件夹项”
LPMALLOC pMalloc;
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);//以默认路径打开浏览文件夹对话框
TCHAR * savepath = new TCHAR[MAX_PATH];
CString savepath2="";
if(pidl != NULL)
{
SHGetPathFromIDList(pidl,savepath);//把文件夹路径存放在savepath中
savepath2.Format(_T("%s"),savepath);
savepath2=savepath2+"\\";//在路径后增加斜杠
if(SUCCEEDED(SHGetMalloc(&pMalloc)))//网上说pidl指向的对象用完应该释放
{
pMalloc->Free(pidl);
pMalloc->Release();
}
} MessageBox(savepath2);//显示所选文件夹路径
这是修改后的代码,添加了第三四行,亲测可用