困扰了很久得问题

ruby0602 2005-07-03 09:59:34
POSITION pos = this->GetStartPosition();
HANDLE hFind;
WIN32_FIND_DATA fd;
char strCount[256];
m_ofn.nMaxFile = 256;
m_ofn.lpstrFile = strCount;

m_ofn.lpstrFile[0] = '\0';
while(pos != NULL)
{
CString szNextPath;
szNextPath = GetNextPathName(pos);


多选了以后,为什么szNextPath得不到正确得文件路径??
...全文
276 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
captain_x 2005-07-26
  • 打赏
  • 举报
回复
上面已经给了,再发一次吧,captian_x@126.com
captain_x 2005-07-24
  • 打赏
  • 举报
回复
代码发过来看看撒
ruby0602 2005-07-24
  • 打赏
  • 举报
回复
有人说这样定义:
DWORD MAXFILE = 2048;
char strCount[MAXFILE];
m_ofn.nMaxFile = MAXFILE;
m_ofn.lpstrFile = strCount;
m_ofn.lpstrFile[0] = '\0';
但编译通不过,为什么?

ruby0602 2005-07-24
  • 打赏
  • 举报
回复
你的邮箱?
ruby0602 2005-07-19
  • 打赏
  • 举报
回复
难道没人愿意帮忙吗?
lzf8977 2005-07-15
  • 打赏
  • 举报
回复
一顶到底
ruby0602 2005-07-14
  • 打赏
  • 举报
回复
顶到解决为止
ruby0602 2005-07-13
  • 打赏
  • 举报
回复
我选了好几个文件执行一次就这样了,pos有问题吧?
captain_x 2005-07-13
  • 打赏
  • 举报
回复
这样好象表明POS已经到最后了
ruby0602 2005-07-12
  • 打赏
  • 举报
回复
szNextPath = GetNextPathName(pos);
这句运行完后,pos就突然变为0了,很奇怪啊
captain_x 2005-07-12
  • 打赏
  • 举报
回复
呵呵,水平有限,帮不了你了
如果可以的话,把代码发过来,我也研究一下
captian_x@126.com
ruby0602 2005-07-12
  • 打赏
  • 举报
回复
我顶啊顶
captain_x 2005-07-11
  • 打赏
  • 举报
回复
If the buffer is too small, the function returns FALSE and the CommDlgExtendedError function returns FNERR_BUFFERTOOSMALL. In this case, the first two bytes of the lpstrFile buffer contain the required size, in bytes or characters.
同意楼上的看法,
你用CommDlgExtendedError函数测试一下是不是buffer太小了?
ruby0602 2005-07-11
  • 打赏
  • 举报
回复
改成1024也不行,debug了一下,szNextPath老是等于{"\"}
lzf8977 2005-07-10
  • 打赏
  • 举报
回复
256
是不是少点,,
2560
试一下,,我的以前是选几个没有问题,,选多了就会象你一样,,
后来改大了就好了..
ruby0602 2005-07-10
  • 打赏
  • 举报
回复
void CReplaceDlg::OnMulti()
{

CString szFilePath,szBuffer;
szFilePath = GetPathName();
szBuffer = szFilePath.Left(szFilePath.ReverseFind('\\'));
SetDlgItemText(IDC_EDIT3,szBuffer);
UpdateData(TRUE);
if(m_NewName.IsEmpty()){
AfxMessageBox("请输入新文件名");
}
else
{
// TODO: Add extra validation here
POSITION pos = this->GetStartPosition();
HANDLE hFind;
WIN32_FIND_DATA fd;
char strCount[256];
m_ofn.nMaxFile = 256;
m_ofn.lpstrFile = strCount;

m_ofn.lpstrFile[0] = '\0';
while(pos != NULL)
{
CString szNextPath;
szNextPath = GetNextPathName(pos);


//hFind = ::FindFirstFile((LPCSTR)szNextPath, &fd);

CString szFileName;
szFileName.Empty();
szFileName = (LPCTSTR) &fd.cFileName;
int iLength = szFileName.GetLength();
szFileName.Replace(szFileName.Left(szFileName.GetLength() - 4),m_NewName);

CString strFilePath = szNextPath.Left(szNextPath.GetLength() - iLength);
rename( (LPSTR)(LPCSTR) (szNextPath),
(LPSTR)(LPCSTR)(strFilePath + szFileName) );
//::FindClose (hFind);
}

HWND hDlg=GetSafeHwnd();
HWND hStatusWindow=CreateStatusWindow(WS_CHILD|WS_VISIBLE|WS_BORDER,
TEXT("更名为"),//显示在状态栏上的信息
hDlg, //父窗口句柄
IDS_STATUS);
}


BOOL CReplaceApp::InitInstance()
{
AfxEnableControlContainer();

// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.

#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
CReplaceDlg dlg(TRUE,NULL,NULL, OFN_HIDEREADONLY | OFN_ENABLETEMPLATE | OFN_ALLOWMULTISELECT | OFN_EXPLORER,"JPG Files(*.jpg)|*.jpg|GIF Files(*.gif)|*.gif|BMP Files(*.bmp)|*.bmp|(*.*)|*.*||",NULL);

dlg.m_ofn.lpstrTitle = "更改文件名";
dlg.m_ofn.lpstrInitialDir = "g:\\others";
//dlg.m_ofn.Flags |= OFN_HIDEREADONLY | OFN_ENABLETEMPLATE | OFN_ALLOWMULTISELECT | OFN_EXPLORER;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{

// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}

// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}

captain_x(captain) :请你看看代码,谢谢
captain_x 2005-07-10
  • 打赏
  • 举报
回复
把你的显示代码发上来看看
是不是你的CString是局部变量,完了后就自动销毁了?
还有,你说不是在INIainstance里的,那难道你自己继承了一个CFileDlg类?
ruby0602 2005-07-10
  • 打赏
  • 举报
回复
高手帮忙
xqk 2005-07-04
  • 打赏
  • 举报
回复
up
ruby0602 2005-07-04
  • 打赏
  • 举报
回复
我得代码不是放在InitInstance()里得,请大家不要乱套一气,你所说得我都设置过了,请不要光为了分数,不看实际情况
加载更多回复(1)

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧