MFC的ActiveX控件在Web中使用DoModal()显示对话框时,为非阻塞的,非常头痛! MFC的ActiveX控件在Web中使用DoModal()显示对话框时,为非阻塞的,点击父窗体(IE窗口),弹出的新窗口都跑到后面去了,非常头痛!而在调试模式下,弹出的对话框能正常阻塞父窗体,在不关闭的情况下,所有IE的操作都不允许! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主在你的控件当中弹出对话框的时候 给对话框增加WS_EX_APPWINDOW属性 这样你的弹出对话框就会在任务栏上显示一个图标在非阻塞模式下 就算变到后面去 也可以通过点击任务栏图标重新获得焦点并返回屏幕前端。OnInitialdialog 函数里面:LONG Style = GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE);Style = Style | WS_EX_APPWINDOW;SetWindowLong( this->GetSafeHwnd(),GWL_EXSTYLE, Style );另外 可以考虑让你的窗口始终置顶显示 可能需要在对话框中很多地方都要加上SetWindowPos来实现 没有试验过。如果不采用上面的处理 还想让对话框显示在IE的上层 而且在IE中还可以操作 恐怕不太现实。 你好,感谢你的解答,其实可能你误解了一点,在弹出的对话框关闭前,我是不想IE中能操作任何东西(同步流程),其实一般应用程序中使用DoModal()是没问题的,不知为什么IE中不行! 试试CDialog dlg(CWnd::FromHandle(hWndIE));dlg.DoModal(); 你好,已使用CDialog dlg(AfxGetMainWnd());还是老样子,不行! 窗口是和线程相关的,如果你的控件有自已的线程并且在其中创建军,那么你的模态窗口是不会对另一个线程起作用的,如果你用的是 MFC ActiveX控件,应该是有自已的线程的,当然这还要看 DoModal 是的调用都在哪个线程中! 各位兄弟,经测试,我发现有一个特点,运行本地XXX.html网页文件,ACTIVEX控件一切正常,能显示模态和锁定父窗口不让操作,而AfxGetMainWnd()->GetWindowText证实是IE窗口的标题,所以应该不会存在线程问题。但把XXX.html网页文件挂在Web服务器上运行,使用http://localhost/之类访问时,网页中控件调用DoModal()弹出的对话框就不再是模态了,希望大家能指点下是怎么回事,相信这可以帮到其他正在开发WEB ACTIVEX的人!谢谢! 还有一点,我分别试过使用VC MFC和BCB的ActiveForm技术分别做过ActiveX控件,使用模态对话框时都出现这样的问题,应该是通病! 没有IIS 实在是没法测试 不过本地的没有问题的 用Domodal后是可以锁定浏览器窗口的。 IE7吗?每个tab都有自己的线程的,所以你的对话框可能阻塞不了当前tab 我想应该是tab的线程不同的原因!大家有什么好的解决方案?:)呵谢谢了 c++指针 请问const char*怎么转换成LPCWSTR呢? 自定义的矢量文件如何裁剪? oracle连接不成功(ODatabase) 图形处理软件用对话框来完成有什么缺点? 菜单项控制 聊天室踢人功能的实现 请问大虾:如何获得AfxMessageBox()的返回值及如何使用PutCollect()函数,其中的第二个参数如何由CString类转换而来? 关于标题栏上的关闭按钮? 精通tab控件者请进->恭候您的大驾 使用uskin时,ShowControlBar函数出现问题 vc CToolBarCtrl 工具栏 鼠标 提示
在非阻塞模式下 就算变到后面去 也可以通过点击任务栏图标重新获得焦点并返回屏幕前端。
OnInitialdialog 函数里面:
LONG Style = GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE);
Style = Style | WS_EX_APPWINDOW;SetWindowLong( this->GetSafeHwnd(),GWL_EXSTYLE, Style );另外 可以考虑让你的窗口始终置顶显示 可能需要在对话框中很多地方都要加上SetWindowPos来实现 没有试验过。如果不采用上面的处理 还想让对话框显示在IE的上层 而且在IE中还可以操作 恐怕不太现实。
dlg.DoModal();
如果你用的是 MFC ActiveX控件,应该是有自已的线程的,
当然这还要看 DoModal 是的调用都在哪个线程中!
但把XXX.html网页文件挂在Web服务器上运行,使用http://localhost/之类访问时,网页中控件调用DoModal()弹出的对话框就不再是模态了,希望大家能指点下是怎么回事,相信这可以帮到其他正在开发WEB ACTIVEX的人!谢谢!
每个tab都有自己的线程的,所以你的对话框可能阻塞不了当前tab