想要在注册表中注册新的文件类型,只需要在注册表中添加两项值:一是对扩展名的注册,二是对扩展名的操作信息进行注册。以下以*.future*为例,说明详细的编程过程,并且设定.future文档的默认打开方式为写字本,这样新建一个.future文档以后,双击时就不会出现让你选择打开方式的对话框。
void CShellFileDialogDlg::OnRegisternew()
{
// TODO: Add your control notification handler code here
CString strfileextention,strfileinfo,stropenway;
strfileextention=".future";
strfileinfo="future文档";
stropenway="C://WINDOWS//notepad.exe %1";//写字板的打开.exe文件的所在路径
HKEY phkdotfuture,phkroot,phkfileinfo,phkfileshellnew;
HKEY phkfileinfoshell,phkfileopen,phkfileprint,phkfileopencommand;
long result;
result=RegOpenKey(HKEY_CLASSES_ROOT,NULL,&phkroot);
if (result!=ERROR_SUCCESS) {
MessageBox("打开注册表出错");
return;
}
RegCreateKey(phkroot,strfileextention,&phkdotfuture);
RegSetValue(phkdotfuture,NULL,REG_SZ,strfileinfo,strlen(strfileinfo));
RegCreateKey(phkdotfuture,"ShellNew",&phkfileshellnew);
BYTE temp;
temp='/0';
RegSetValueEx(phkfileshellnew,"NullFile",0,REG_SZ,&temp,1);
RegCreateKey(phkroot,strfileinfo,&phkfileinfo);
RegSetValue(phkfileinfo,NULL,REG_SZ,strfileinfo,strlen(strfileinfo));
RegCreateKey(phkfileinfo,"Shell",&phkfileinfoshell);
RegCreateKey(phkfileinfoshell,"Print",&phkfileprint);
RegCreateKey(phkfileinfoshell,"Open",&phkfileopen);
RegCreateKey(phkfileopen,"command",&phkfileopencommand);
RegSetValue(phkfileopencommand,NULL,REG_SZ,stropenway,strlen(stropenway));
MessageBox("新文件类型:future文档,注册完成");
}
运行的结果图片已经上传,当你右击鼠标时,出现新建.future文档,新建以后,双击即可以写字板方式打开。