CFileDialog的小问题 做了一个断点续传的小程序,遇到一个小问题,就是续传时候,调用CFileDialog来保存续传文件时,按系统默认的会出现“是否覆盖文件”的提示,现在我想改改它,使得它提示“是否续传文件”,应该怎么做。谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 查一下msdn把,这个东西我以前刚做过。最好养成自己随手查阅msdn的能力,这种问题就不要拿出来问了。 class CMyFileDialog : public CFileDialog重载函数: virtual BOOL OnFileNameOK();BOOL CMyFileDialog::OnFileNameOK(){ // TODO: 在此添加专用代码和/或调用基类 CString nFileName; if(GetFileAttributes(nFileName)!=-1) if(AfxMessageBox("该文件存在,是否续传文件?",MB_YESNO)!=IDYES) return true; return CFileDialog::OnFileNameOK();} 建议楼上的还是将-1改为INVALID_FILE_ATTRIBUTES,还是用人家给好的。 好像还是不行,GetFileAttributes(nFileName)!=-1 这句是判断文件是否已经存在的吗? 已经加分了,请liuyan4794(青牛)帮帮忙。 你需要先建立一个新类,该类继承自CFileDialog,然后重载CFileDialog的OnFileNameOK,GetFileAttributes(nFileName)!=INVALID_FILE_ATTRIBUTES时,你应该先看看nFileName是否已经包含了后缀,如果没有则需要加上后缀 ////////////////////////////////////////////////MyDlg.hclass CMyDlg : public CFileDialog{ DECLARE_DYNAMIC(CMyDlg)public: CMyDlg(BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAs LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL); protected: //{{AFX_MSG(CMyDlg) virtual BOOL OnFileNameOK(); //}}AFX_MSG DECLARE_MESSAGE_MAP()};/////////////////////////////////////////////////////MyDlg.cppIMPLEMENT_DYNAMIC(CMyDlg, CFileDialog)CMyDlg::CMyDlg(BOOL bOpenFileDialog, LPCTSTR lpszDefExt, LPCTSTR lpszFileName, DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) : CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd){}BEGIN_MESSAGE_MAP(CMyDlg, CFileDialog) //{{AFX_MSG_MAP(CMyDlg) // NOTE - the ClassWizard will add and remove mapping macros here. //}}AFX_MSG_MAPEND_MESSAGE_MAP()BOOL CMyDlg::OnFileNameOK() { // TODO: 在此添加专用代码和/或调用基类 CString nFileName; if(GetFileAttributes(nFileName)!=INVALID_FILE_ATTRIBUTES) if(AfxMessageBox( "该文件存在,是否续传文件?",MB_YESNO)!=IDYES) return true; return CFileDialog::OnFileNameOK(); } 编译时出错,error C2065: 'INVALID_FILE_ATTRIBUTES' : undeclared identifier。 直接这样写就可以if(GetFileAttributes(nFileName)!=-1) 调用时不用使用OnFileNameOK吗?CMyDlg dlg;if (dlg.DoModle==IDOK) ……这样就行了吗? //这样调用可以的啊,你测试试试就知道了,不用使用OnFileNameOKCMyDlg dlg;if (dlg.DoModle==IDOK) …… 颜色取值问题。 刚学习VC 头疼中。。。 求助:如何实现一个类似金山词霸启动时的启动画面? 怎样打开图象数据文件,提取数据 怎样读取某个目录下文件名如“2004A.001”“2004A.002”……的所有文件? 100分弱问一下问题 如何得到对话框从最小化恢复显示的事件? 回掉函数能否直接调用 读取输入框数值的最简单方法? 如何将字符串值转换成数值? 急!急!急!! 如何实现保存所有功能? 更改UPD报头的源IP和源PORT 做IP欺骗 []MFC入门问题[]
class CMyFileDialog : public CFileDialog
重载函数: virtual BOOL OnFileNameOK();
BOOL CMyFileDialog::OnFileNameOK()
{
// TODO: 在此添加专用代码和/或调用基类
CString nFileName;
if(GetFileAttributes(nFileName)!=-1)
if(AfxMessageBox("该文件存在,是否续传文件?",MB_YESNO)!=IDYES)
return true;
return CFileDialog::OnFileNameOK();
}
GetFileAttributes(nFileName)!=-1
这句是判断文件是否已经存在的吗?
class CMyDlg : public CFileDialog
{
DECLARE_DYNAMIC(CMyDlg)public:
CMyDlg(BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAs
LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter = NULL,
CWnd* pParentWnd = NULL);
protected:
//{{AFX_MSG(CMyDlg)
virtual BOOL OnFileNameOK();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};/////////////////////////////////////////////////////MyDlg.cpp
IMPLEMENT_DYNAMIC(CMyDlg, CFileDialog)CMyDlg::CMyDlg(BOOL bOpenFileDialog, LPCTSTR lpszDefExt, LPCTSTR lpszFileName,
DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) :
CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd)
{
}
BEGIN_MESSAGE_MAP(CMyDlg, CFileDialog)
//{{AFX_MSG_MAP(CMyDlg)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()BOOL CMyDlg::OnFileNameOK()
{
// TODO: 在此添加专用代码和/或调用基类
CString nFileName;
if(GetFileAttributes(nFileName)!=INVALID_FILE_ATTRIBUTES)
if(AfxMessageBox( "该文件存在,是否续传文件?",MB_YESNO)!=IDYES)
return true;
return CFileDialog::OnFileNameOK();
} 编译时出错,error C2065: 'INVALID_FILE_ATTRIBUTES' : undeclared identifier。
if(GetFileAttributes(nFileName)!=-1)
CMyDlg dlg;
if (dlg.DoModle==IDOK)
……
这样就行了吗?
CMyDlg dlg;
if (dlg.DoModle==IDOK)
……