为什么调用RegQueryValueEx()后再调用CFileDialog::GetPathName()会提示出错?

qsxiaoyao 2009-04-23 05:18:22
BOOL CSimplePlayerDlg::OnInitDialog()
{
CDialog::OnInitDialog();
isFullScreen = FALSE;
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
mVideoWindow.ModifyStyle(0, WS_CLIPCHILDREN);
mSliderGraph.SetRange(0, 1000);
mSliderGraph.SetPos(0);

memset(path, 0, MAX_PATH);
char regname[]="Software\\MDInstallInfo";
HKEY hkResult;
DWORD dwSize;
DWORD type_1=REG_SZ;
int ret=RegOpenKeyEx(HKEY_CURRENT_USER,regname,0, KEY_READ, &hkResult);
ret=RegQueryValueEx(hkResult,"path",0,&type_1,(LPBYTE)path,&dwSize);
RegCloseKey(hkResult);
return TRUE; // return TRUE unless you set the focus to a control
}

void CSimplePlayerDlg::OnButtonOpen()
{
// TODO: Add your control notification handler code here
CString strFilter = "AVI File (*.avi)|*.avi|";
CFileDialog dlgOpen(TRUE, NULL, NULL, OFN_PATHMUSTEXIST | OFN_HIDEREADONLY,
strFilter, this);
if (IDOK == dlgOpen.DoModal())
{
mSourceFile = dlgOpen.GetPathName();
// Rebuild the file playback filter graph
CreateGraph();
OnButtonPlay();
}
}

如果在Init中去掉ret=RegQueryValueEx(hkResult,"path",0,&type_1,(LPBYTE)path,&dwSize);就能正常播放文件,加上后执行就出错,程序退出
...全文
82 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qsxiaoyao 2009-04-23
  • 打赏
  • 举报
回复
果然,dwSize一初始化就好了,谢谢各位,马上揭贴
zhaoning_xueye 2009-04-23
  • 打赏
  • 举报
回复
改成DWORD dwSize=MAX_PATH试试看~
zhaoning_xueye 2009-04-23
  • 打赏
  • 举报
回复
ret=RegQueryValueEx(hkResult,"path",0,&type_1,(LPBYTE)path,&dwSize);
dwSize的值并没有初始化,参数类型应该是[in, out] ,
wutaihua 2009-04-23
  • 打赏
  • 举报
回复
你单步跟一下吧。单步调试才好。你这样问,我们不好看明白

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧