【发布时间】:2012-04-01 04:45:07
【问题描述】:
我这里有点问题。
我有一个第三方 ActiveX 控件,可以将文件从一种类型转换为另一种类型。我想转换很多文件,所以我需要批量转换运行它。然而,这个控件经常崩溃(我不是在谈论好的 C++ 异常,它会做一些可爱的事情,比如访问已经释放的内存、进行访问冲突等等)。
所以我的问题如下:
1) 我需要将此 ActiveX 控件包装在一个单独的进程中,以防止它破坏我的主进程的内存。
2) 我可能需要调用这个过程数百次,并且对于快速计算机上的小文件,它每秒被调用 5-6 次
3) 我需要让这个进程完全静默,用户一定不会意识到一个进程被执行了很多次
4) 但是因为它是一个 ActiveX 控件,所以我还需要在承载 ActiveX 控件的进程中创建一个隐藏对话框
但是当我创建隐藏对话框时,它似乎会暂时从活动窗口中移开焦点,然后将其返回。由于这个过程每秒可以调用 5-6 次,它会中断用户的键盘输入,并且还会使当前活动的窗口快速闪烁,从活动状态切换到非活动状态。
我正在使用 CDialog 派生类来承载 ActiveX 控件。 Visible 标志从资源编辑器中关闭以防止其显示。我通过调用 CDialog::Create 来创建对话框,而不是 DoModal。
如何防止对话框带走焦点?
【问题讨论】: