记住文件打开对话框上一次位置的vc程序
作者:cnfgg 日期:2010-01-12
原理:
假如你要打开的文件类型为*.bin。
当你打开/保存bin文件后,注册表处HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSaveMRU\bin位置产生的信息:
MRUList cba
a D:\\tmp\\dxtmp\\mybin\\test.bin
b E:\\bin\\tmp.bin
c E:\aaa\backup\abc.bin
其中E:\aaa\backup\abc.bin是最后一次打开的。
实现:
// 从注册表读Open/Save对话框最后一次的记录
// strExtName -- 入口,文件的扩展名,如bin
// strMRUPath -- 出口,接收最后一次打开的文件的路径,如E:\\bin
//
BOOL GetOpenSaveMRU(LPCTSTR strExtName,char *strMRUPath)
{
HKEY hKEY;
const char *mru="Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComDlg32\\OpenSaveMRU\\";
CString strmru(mru);
strmru += strExtName;
long lRet = RegOpenKeyEx(HKEY_CURRENT_USER,strmru,0,KEY_READ,&hKEY);
if (lRet != ERROR_SUCCESS ) {
return FALSE;
}
DWORD keytype1 = REG_SZ;
DWORD dwInBytes = 256;
BYTE pInBuf[256];
lRet = RegQueryValueEx(hKEY,"MRUList",NULL,&keytype1,pInBuf,&dwInBytes);
if (lRet != ERROR_SUCCESS ) {
return FALSE;
}
dwInBytes = 256;
char strLast[] = {pInBuf[0],0};
lRet = RegQueryValueEx(hKEY,(LPTSTR)strLast,NULL,&keytype1,(LPBYTE) strMRUPath,&dwInBytes);
if (lRet != ERROR_SUCCESS) {
return FALSE;
}
CString str1(strMRUPath);
int idx=str1.ReverseFind('\\');
strMRUPath[idx]=0;
RegCloseKey(hKEY);
return TRUE;
}
调用方法:
char m_strBINDir[256];
ZeroMemory(m_strBINDir,0,sizeof(m_strBINDir));
GetOpenSaveMRU("bin",m_strBINDir);
这样m_strBINDir中就获取了上一次调用文件打开/保存对话框选择bin后缀的文件路径。
评论: 2 | 引用: 0 | 查看次数: -
回复
]我学的也是VC,不过是菜鸟。日志多更新啊。我会经常来看的。
admin 于 2010-02-03 10:46 PM 回复
欢迎,有空会多更新的,最近比较忙。
如果你的博客是delphi的话就更好了。呵呵
admin 于 回复
嗯,delphi不错的。
发表评论
上一篇
下一篇

文章来自:
Tags:
相关日志: