目前共有3篇帖子。 內容轉換:不轉換▼
 
點擊 回復
795 2
【解决办法】VC6程序设置开机启动后默认目录自动更正
一派護法 十九級
1樓 發表于:2013-3-30 20:23

在窗口类的构造函数中加上:

//获取程序目录
 SetCurrentDirectory("C:\\"); //模拟开机启动
 char ch[MAX_PATH];
 memset(ch,0,sizeof(ch));
 GetModuleFileName(AfxGetInstanceHandle(),ch,sizeof(ch));
 ch[strrchr(ch,'\\')-ch]='\0';
 m_path=ch;
 m_path+="\\";

SetCurrentDirectory(path);

一派護法 十九級
2樓 發表于:2013-3-30 20:25

1L的代码有几处错误,先更正一下。

适用于VC6:

//获取程序目录
 SetCurrentDirectory("C:\\"); //模拟开机启动
 char ch[MAX_PATH];
 memset(ch,0,sizeof(ch));
 GetModuleFileName(AfxGetInstanceHandle(),ch,sizeof(ch));
 ch[strrchr(ch,'\\')-ch]='\0';

CString path=ch;
 path+="\\";
SetCurrentDirectory(path);

 

 

以下适用于VC2008:

//获取程序目录
 SetCurrentDirectory(L"C:\\"); //模拟开机启动
 wchar_t ch[MAX_PATH];
 memset(ch,0,sizeof(ch));
 GetModuleFileName(AfxGetInstanceHandle(),ch,sizeof(ch));
 ch[wcsrchr(ch,'\\')-ch]='\0';
 CString path=ch;
 path+=L"\\";
 //AfxMessageBox(path);
 SetCurrentDirectory(path);

 

 

 

如果是单/多文档程序,可以在CMainFrame::CMainFrame()加入本代码

如果是对话框程序,可在对话框类的【构造函数】上加入本代码(不是InitDialog函数上)

一派護法 十九級
3樓 發表于:2017-2-14 21:59
【改进后的代码】
void InitDirectory(void)
{
    LPTSTR p;
    TCHAR szPath[MAX_PATH];
#if _DEBUG
    SetCurrentDirectory(TEXT("C:\\")); // 模拟开机启动
#endif
    GetModuleFileName(GetModuleHandle(NULL), szPath, MAX_PATH);
    p = _tcsrchr(szPath, TEXT('\\'));
    *(p + 1) = '\0';
    SetCurrentDirectory(szPath);
}

用到的头文件:
#include <tchar.h>
#include <Windows.h>

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:795 回複數:2
評論數: ?
作者: 巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2017-2-14 21:59
 
©2010-2024 Arslanbar Ver2.0
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。