目前共有3篇帖子。 字体大小:较小 - 100% (默认)▼  内容转换:台灣正體▼
 
点击 回复
1034 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)
 

本帖信息

点击数:1034 回复数:2
评论数: ?
作者:巨大八爪鱼
最后回复:巨大八爪鱼
最后回复时间:2017-2-14 21:59
 
©2010-2025 Purasbar Ver2.0
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。