MFC ShellExecute打开pdf时而打得开,时而打不开,求高手解答~急!详见说明

做了一个MFC基于对话框的程序,可以打开外部图片显示到控件,另添加了帮助按钮可以打开一个外部的帮助文档帮助按钮代码:voidCcarrDlg::OnBnClickedBu... 做了一个MFC基于对话框的程序,可以打开外部图片显示到控件,另添加了帮助按钮可以打开一个外部的帮助文档
帮助按钮代码:void CcarrDlg::OnBnClickedButton3()
{
// TODO: 在此添加控件通知处理程序代码
ShellExecute(NULL,"open","help.pdf",NULL,NULL,SW_SHOWNORMAL);

}
运行后,一开始可以打开PDF文档,可是在我打开了一张图片到控件后,再点帮助的按钮就没反应了,一开始以为和导入图片后改变了控件焦点有关,后来调试验证后发现没有关系,后又验证
int i=1;
if(ShellExecute(NULL,"open","help.pdf",NULL,NULL,SW_SHOWNORMAL))i=2;
else i=3;
TRACE("%d ***",i);
在导入图片前按后导入后按i均输出为2,应该表明ShellExecute都执行正确吧,可是前一次能弹出PDF,导入图片后就没反应,实在不知道是什么原因,寻求高手解答~~!
发现了问题出在打开的路径上,当我导入过一张图片后,他的默认路径就变成了那张图片所在的文件夹,而不是我程序的当前文件夹了,请问如何不让他的默认路径被改掉呢?而且程序要有可移植性所以不能定死成单单这个电脑上的路径。。。
展开
 我来答
sword_ask
2010-01-08
知道答主
回答量:2
采纳率:0%
帮助的人:0
展开全部
你可以先获取你生成的程序的路径,这是我学习时写的一个函数,你试试看吧
void GetExcuteProgPath( CString& pszPath )
{
const int nPathBufferSize = MAX_PATH;
TCHAR tchPathBuffer[nPathBufferSize];
memset( (void*)tchPathBuffer, TEXT('\0'), nPathBufferSize * sizeof(TCHAR) );
GetModuleFileName( NULL, tchPathBuffer, nPathBufferSize );

CString strExcuteFilePath = tchPathBuffer;

if ( strExcuteFilePath.Right(1) == _T("\\") )
{
strExcuteFilePath.Left( strExcuteFilePath.GetLength() - 1 );
}

strExcuteFilePath = strExcuteFilePath.Left( strExcuteFilePath.ReverseFind( '\\' ) );
pszPath = strExcuteFilePath;

return;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式