找回密码
 注册
Simdroid-非首页
查看: 160|回复: 6

一个关于vc调用COM组件画图的问题

[复制链接]
发表于 2009-7-16 19:26:52 | 显示全部楼层 |阅读模式 来自 北京朝阳
本帖最后由 ljelly 于 2009-7-17 14:43 编辑

根据2008a的帮助文档,在控制台程序里要调用COM组件中于画图有关的函数,需要同时调用一个停止等待函数,使用这个函数后,程序回挂起,在关掉图后程序可继续执行,现在的问题是,有没有什么办法可以让这个图显示着,但是程序又可以继续执行?
 楼主| 发表于 2009-7-17 00:06:57 | 显示全部楼层 来自 北京邮电大学
Simdroid开发平台
呼唤版主,呼唤高手,我明确一下问题,在VC6.0的控制台程序中调用一个由2008a版本产生的COM组件,这个COM组件里有一个画图函数,如果不调用那个停止等待函数,画出来的图一闪而过,而调用了后就会出现程序挂起,问题是有没有办法实现即显示图,程序又能继续,我找了一圈也没有找到相关的方法?

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2009-7-17 01:03:58 | 显示全部楼层 来自 浙江杭州
不好意思,高手都不在线,只好我这种低手来试试,你还是把代码贴出来吧,否则空对空地回答,既使是高手也很难。

另外,呼唤版主、呼唤高手之前先看看版规,版主、高手不是你一呼唤就来的。初来乍到,至少先弄清此地的规矩。
回复 不支持

使用道具 举报

 楼主| 发表于 2009-7-17 09:39:51 | 显示全部楼层 来自 北京邮电大学
谢谢messenger,在此处表示抱歉,代码段如下,这个plotue()就是一个普通的PLOT函数,数据从文本读入的。这段代码如果插入控制台程序,没有HOLD函数那句的话,画出来的图一闪而过,按照2008a的帮助文档,需要调用一个 hr=pcom ->MCRWaitForFigures(); 这样图就不会闪过,但是同时带来的问题是程序也挂起了,如果不把那个图关掉的话,就不会继续往下执行,问:是否有办法可以让图显示着,程序又继续执行的办法,最好是不换掉控制台程序这个背景。

  1. //Initialize the COM library     
  2.              HRESULT hr = CoInitialize(NULL);   
  3. //Create an instance of the COM object you created   
  4.              hr=CoCreateInstance
  5.                (CLSID_testplotclass, NULL, CLSCTX_INPROC_SERVER, IID_Itestplotclass,
  6.                     (void **) &pcom);  
  7. // Access the method with arguments and receive the output out1
  8.              hr=(pcom -> plotue());
  9.              //HOLD函数
  10.              hr=pcom ->MCRWaitForFigures();
  11. // Uninitialize COM     
  12.              CoUninitialize();     
  13.              return 0;
复制代码
回复 不支持

使用道具 举报

发表于 2009-7-17 13:04:09 | 显示全部楼层 来自 浙江杭州
4# search009009

你这个问题在函数内部解决好像很难,不过以前看过一个类似情况的程序,作者先将图形保存为图片,然后在图形框中显示这个图片,这样就即可以让图形显示,又可以让程序继续运行了。不知道哪位高手,有什么更好的解决办法。
回复 不支持

使用道具 举报

发表于 2009-7-17 23:00:01 | 显示全部楼层 来自 新加坡
你的程序是控制台的还是图形界面的?如果是控制台的,你需要用到MCRWaitForFigures(),如果你要在执行某些代码之后才挂起程序的话,可以把可以把MCRWaitForFigures()放到你觉得合适的地方。但它必须是在程序完全退出之前,否则图形就会“一闪而过”。

如果你的程序是图形界面的,那么你不需要调用MCRWaitForFigures()。所以应该不会出现你说的问题。
回复 不支持

使用道具 举报

 楼主| 发表于 2009-7-18 10:57:13 | 显示全部楼层 来自 北京邮电大学
谢谢messenger 和 taohe ,我也试图从taohe的书里寻找过答案,程序是控制台程序,所以才有这个麻烦,现在看来只能考虑画图后写入word文档或者转成图形界面程序了。
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-7 09:28 , Processed in 0.039463 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表