VC/MFC获取路径的方法

前部分内容来自:http://helloxiaoyan.blog.51cto.com/1004379/348918
用vc写程序时经常要获取程序的路径主要有以下三种方法
1,.\\是的到应用程序的当前目录,但当前目录不一定等于应用程序执行文件的所在目录,一个应用程序被启动时,当前目录是可以被任意设置的。
2,GetCurrentDirectory同.\\

3,GetModuleFileName()得到模块的完整路径名,例如,你载入c:\windows\system32\mfc.dll,得到模块句柄h,则你可以用GetModuleFileName()得到h模块的完整路径名
1和2获取的是路径名,而3获取的是全路径名
 
 
GetModuleFileName函数原型
DWORD GetModuleFileName(
   HMODULE hModule,     // handle to module。将要得到的模块的句柄。如果是当前模块,NULL
   LPTSTR lpFilename,   // path buffer   得到的文件名。
   DWORD nSize          // size of buffer   一般MAX_PATH就可以了
);
可以通过以下方法获取路径名
 
char szCurPath[MAX_PATH];//定义一个字符串数据,长度为MAX_PATH ,MAX_PATH是预定义的宏,一般是个数字常量如256
 
GetModuleFileName(NULL,szCurPath,_MAX_PATH);
 
char* p = szCurPath;
 
while(strchr(p,'\\'))
{
         p = strchr(p,'\\');
         p++;
}
 
*p = '\0';
 
CString strSwfname = szCurPath; 
szCurPath就是去除文件名的路径名


下面是自己对通过学习,对其中涉及到的知识进行补充
①    .\\和GetCurrentDirectory的效果是完全一样的,没指名路径的时候,得到的是应用程序的路径,比如我现在运行TrainSystem.exe应用程序,用这个函数得到的是C:\Users\xie_dream\Desktop\TrainSystem_final\Debug,但是
这个函数所得到的路径不是固定不变的,比如打开文件对话框后,就会改变得到的目录。(这个也是本人在写数据库备份的时候遇到的,然后总结一下);
② GetModuleFileName函数是得到当前应用程序的完整路径,比如:C:\Users\xie_dream\Desktop\TrainSystem_final\Debug\TrainSystem.exe,而且整个期间是不会变化的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值