zoukankan      html  css  js  c++  java
  • MFC学习20160718(GetModuleFileName&&GetAppDataPath)

    1.标题栏设置

    一、对话框标题栏内容为静态

    直接在对话框属性“General”的“Caption”中修改。

    二、对话框标题栏内容为动态生成的

    在对应对话框的初始化函数OnInitDialog()中添加以下代码:

    CString title;
    title.Format("%d",Id);//在标题栏动态显示Id的值
    this->SetWindowText(title);

    2. 分组

    将radio1、radio2、radio3分为1组,radio4、radio5分为另一组;

    方法:

    设置  radio1  的 属性:  group、tabstop、auto均为true

    设置  radio2 的 属性: group设为false, tabstop、auto均为true

    设置  radio3  的 属性:group设为false,  tabstop、auto均为true

    设置  radio4  的 属性:  group、tabstop、auto均为true

    设置  radio5  的 属性:  group设为false,tabstop、auto均为true

     参考:http://blog.csdn.net/haixiuyundezhuanyong/article/details/39929961

    3.MFC应用实例:[45]读写INI文件  

    参考:http://jingyan.baidu.com/article/39810a238bdae5b637fda610.html

    4.ANSI编码和Unicode编码的不同

    参考:http://blog.csdn.net/chaijunkun/article/details/4654397

    5.GetModuleFileName&&GetAppDataPath

    MFC获得当前应用程序目录的GetCurrentDirectory()和GetModuleFileName()函数
    
    在开发过程中经常需要获得程序当前的运行目录,这时就可以使用GetCurrentDirectory()和GetModuleFileName()函数,GetCurrentDirectory只是返回当前进程的当前目录,而并不是进程的镜像文件(.exe)所在的目录,GetCurrentDirectory()适用于XP等系统,,在WinCE上不能使用,GetModuleFileName()适用于WinCE2.0以后.
    函数说明:
    
    DWORD WINAPI GetModuleFileName(
    HMODULE hModule,
    LPTSTR lpFileName,
    DWORD nSize
    );
    函数功能
      此函数得到当前应用程序的运行目录,还包括应用程序的文件名。 
    参数说明
      hModule:要获取文件名的模块名柄,可以是运用LoadLiberary得到的句柄,null表示当前模块 
      lpFileName:输出参数,存放取得的文件名 
      nSize:lpFileName参数的长度
    
    DWORD GetCurrentDirectory(
       DWORD nBufferLength, // size of directory buffer
       LPTSTR lpBuffer // directory buffer 
       ); 
    函数功能
     找到当前进程的当前目录 
    参数说明
      nBufferLength:lpBuffer缓冲区的长度 
      lpBuffer:指定一个预定义字串,用于装载当前目录 
    返回值 
     调用成功 返回装载到lpBuffer的字节数。
    
    使用方法:
    //下面的一段代码主要是获得当前程序的运行目录(.exe)所在的目录
    {
        CString path; 
        GetModuleFileName(NULL,path.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
        path.ReleaseBuffer(); 
        int pos = path.ReverseFind('\'); 
        path = path.Left(pos); 
    }
    
    GetModuleFileName函数
     
    
    WINAPI DWORD GetModuleFileName( 
    HMODULE hModule,
    LPWSTR lpFilename, 
    DWORD nSize
    );
    
        GetBuffer和ReleaseBuffer是一套需要配合使用的函数, 与GetBufferSetLength相比, 优点是如果分配的空间大于实际保存的字符串(0结尾),ReleaseBuffer会把多余申请的空间释放, 归还给系统; 但使用时需要注意以下问题: 如果要保存的字符串为abc(0结尾),则GetBuffer参数应至少为3; 如果要保存的内容不是以0结尾, 比如是读取文件数据, 则GetBuffer参数如果大于文件长度时,ReleaseBuffer参数一定要为文件长度(如果GetBuffer参数为文件长度的话不存在问题,ReleaseBuffer参数可以为默认-1)! GetBufferSetLength相对比较容易理解, 它申请一个指定长度的空间, 即使里面最终保存的字符串长度小于申请的空间长度, 也不会将多余空间释放.
    
    调用示例:
    TCHAR *path = new TCHAR[MAX_PATH];
    ZeroMemory(path, MAX_PATH);
    // path == "d:ProjectTestMFCMFCdebug"
    GetCurrentDirectory(MAX_PATH, path);
    // path ==  "d:ProjectTestMFCdebugMFC.exe"
    GetModuleFileName(NULL,path,MAX_PATH);
    
    补充说明:
    如果想得到一个已经加载的DLL文件的路径,可以运用以下方法:
    char  strPath[MAX_PATH];   
    GetModuleFileNameA(GetModuleHandle("你的DLL名字"),strPath,MAX_PATH);
    int j=strlen(strPath);
    for(j=strlen(strPath);strPath[j]!='\';j--);
    strPath[j]='';  
    其中strPath即为你的DLL文件所在的目录

    MFC获得当前应用程序目录的GetCurrentDirectory()和GetModuleFileName()函数

    在开发过程中经常需要获得程序当前的运行目录,这时就可以使用GetCurrentDirectory()和GetModuleFileName()函数,GetCurrentDirectory只是返回当前进程的当前目录,而并不是进程的镜像文件(.exe)所在的目录,GetCurrentDirectory()适用于XP等系统,,在WinCE上不能使用,GetModuleFileName()适用于WinCE2.0以后.

    函数说明:

    DWORD WINAPI GetModuleFileName(
    HMODULE hModule,
    LPTSTR lpFileName,
    DWORD nSize
    );
    函数功能
      此函数得到当前应用程序的运行目录,还包括应用程序的文件名。 
    参数说明
      hModule:要获取文件名的模块名柄,可以是运用LoadLiberary得到的句柄,null表示当前模块 
      lpFileName:输出参数,存放取得的文件名 
      nSize:lpFileName参数的长度

    DWORD GetCurrentDirectory(
       DWORD nBufferLength, // size of directory buffer
       LPTSTR lpBuffer // directory buffer 
       ); 
    函数功能
     找到当前进程的当前目录 
    参数说明
      nBufferLength:lpBuffer缓冲区的长度 
      lpBuffer:指定一个预定义字串,用于装载当前目录 
    返回值 
     调用成功 返回装载到lpBuffer的字节数。

    使用方法:
    //下面的一段代码主要是获得当前程序的运行目录(.exe)所在的目录
    {
        CString path; 
        GetModuleFileName(NULL,path.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
        path.ReleaseBuffer(); 
        int pos = path.ReverseFind('\'); 
        path = path.Left(pos); 
    }

    GetModuleFileName函数
     

    WINAPI DWORD GetModuleFileName( 
    HMODULE hModule,
    LPWSTR lpFilename
    DWORD nSize
    );

        GetBuffer和ReleaseBuffer是一套需要配合使用的函数, 与GetBufferSetLength相比, 优点是如果分配的空间大于实际保存的字符串(0结尾),ReleaseBuffer会把多余申请的空间释放, 归还给系统; 但使用时需要注意以下问题: 如果要保存的字符串为abc(0结尾),则GetBuffer参数应至少为3; 如果要保存的内容不是以0结尾, 比如是读取文件数据, 则GetBuffer参数如果大于文件长度时,ReleaseBuffer参数一定要为文件长度(如果GetBuffer参数为文件长度的话不存在问题,ReleaseBuffer参数可以为默认-1)! GetBufferSetLength相对比较容易理解, 它申请一个指定长度的空间, 即使里面最终保存的字符串长度小于申请的空间长度, 也不会将多余空间释放.

    调用示例:
    TCHAR *path = new TCHAR[MAX_PATH];
    ZeroMemory(path, MAX_PATH);
    // path == "d:ProjectTestMFCMFCdebug"
    GetCurrentDirectory(MAX_PATH, path);
    // path ==  "d:ProjectTestMFCdebugMFC.exe"
    GetModuleFileName(NULL,path,MAX_PATH);

    补充说明:
    如果想得到一个已经加载的DLL文件的路径,可以运用以下方法:
    char  strPath[MAX_PATH];   
    GetModuleFileNameA(GetModuleHandle("你的DLL名字"),strPath,MAX_PATH);
    int j=strlen(strPath);
    for(j=strlen(strPath);strPath[j]!='\';j--);
    strPath[j]='';  
    其中strPath即为你的DLL文件所在的目录

  • 相关阅读:
    数组,字符串内置方法解析
    Git忽略规则和.gitignore规则不生效的解决办法
    使用canvas进行图片裁剪简单功能
    Git 常用命令大全(转)
    vue实现ajax滚动下拉加载,同时具有loading效果
    弹框组件
    年月日日历选择组件
    百度搜索热词下拉
    省市县三级联动插件(面向过程,面向对象两种方式实现)
    jquery 移动端轮播图
  • 原文地址:https://www.cnblogs.com/ranjiewen/p/5681093.html
Copyright © 2011-2022 走看看