shell open出现的问题

ingor 2008-08-01 08:18:08
在MFC下,建立一个普通的程序,为了支持shell open,在MyApp::IninInstcance中加入了
EnableShellOpen();
RegisterShellFileTypes();

一切运行正常,不过当在IninInstance中加入AfxMessageBox();时,doule-click(shell open)该类型文件的程序就会出现一个小问题:
弹出一个对话框:
Windows找不到文件:“”。请确定文件名是否正确后,再试一次。要搜索文件,请单击开始按钮,然后单击搜索。

经过验证,是因为AfxMessageBOX()中会等待在内部的函数 GetMessage()处,后来,我将AFxMessageBox()替换成了一个
CMyDialog dlg; dlg.Domodule()同样会出现问题; 替换成一个具有 GetMessage()的线程也会有类似问题。
我尝试获取shellopen时会收到什么消息(备注:不是WM_DDE_EXECUTE,因为应用程序还没有起来,不是在已有应用程序的情况下双击另一个该类型的文件),可就是得不到。

描述得有点啰嗦,不过请大家帮忙分析一下。
Thanks
...全文
194 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
蒋晟 2008-08-02
  • 打赏
  • 举报
回复
我不私下解决问题
你可以修改设计,在用户未验证的时候显示一个空的界面,或者去掉DDE支持
ingor 2008-08-01
  • 打赏
  • 举报
回复
去掉ddeexec的key确实可以解决该问题。
不过我需要支持dde功能啊。
其实,我是在InitInstance中进行license用户验证,要求用户输入登陆信息的。
怎样才能两者兼顾啊。
真的需要你的帮助,我查了一些资料试了一些方法都没办法解决,Thanks。
ps:能不能把这里操作系统作了哪些动作详细过程描述一下
更希望能通过电话或者E-mail能更直接的像你请教。
E-mail:chengchaoxiang@sohu.com
Thanks
蒋晟 2008-08-01
  • 打赏
  • 举报
回复
AfxMessageBox会阻止Explorer的DDE通讯
你可以把你的文件类型注册信息里面的ddeexec命令去掉

15,471

社区成员

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

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