MFC学习20160718(GetModuleFileName&&GetAppDataPath)
来源:互联网 发布:python去微博图片水印 编辑:程序博客网 时间:2024/05/16 03:41
一、对话框标题栏内容为静态
直接在对话框属性“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:\Project\Test\MFC\MFC\debug"GetCurrentDirectory(MAX_PATH, path);// path == "d:\Project\Test\MFC\debug\MFC.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]='\0'; 其中strPath即为你的DLL文件所在的目录
MFC获得当前应用程序目录的GetCurrentDirectory()和GetModuleFileName()函数
函数说明:
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:\Project\Test\MFC\MFC\debug"
GetCurrentDirectory(MAX_PATH, path);
// path == "d:\Project\Test\MFC\debug\MFC.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]='\0';
其中strPath即为你的DLL文件所在的目录
- MFC学习20160718(GetModuleFileName&&GetAppDataPath)
- Spring.Net&NHibernate 学习
- linux&shell学习(积累中。。。)
- AMP
- AMP
- amp
- MFC ------------ Q & A
- google amp 技术学习
- C#基础学习日志===>命名空间的使用<===
- MFC &&用SkinMagicBuilder制…
- JavaScript学习笔记3之 数组 & arguments(参数对象)& 数字和字符串转换 & innerText/innerHTML & 鼠标事件
- Uchome1.2 && 1.5 代码学习——common.php
- 读S计划 - Java&Web方向的具体学习规划
- TweenLite&&TweenMax系列(一)
- dojo学习笔记(二) dojo.lang.array & dojo.lang.func & dojo.string.extras
- Go语言学习笔记(三)数组 & 切片 & map
- Go语言学习笔记(四)结构体struct & 接口Interface & 反射
- .net core 2.0学习笔记(二):Hello World & 进阶
- js获得剪贴板的内容 待更
- HTML5记住账号和密码
- Android 新手引导库
- Git安装和配置
- .net破解一(反编译,反混淆-剥壳)
- MFC学习20160718(GetModuleFileName&&GetAppDataPath)
- How to Install Pip on CentOS 7
- Windows字符集的统一与转换
- glance v1的解析
- JQuery基本
- Word Ladder
- 特征选择(二)- 聚类变换
- 乐视2016暑期实习编程题
- 创建二叉树求叶子节点个数