在许多情况下,希望以图形化的方式在三维空间中评估结果。几年前,在CodeGuru.com上发表了一篇文章,解决了将数值结果可视化为3D表面的问题。现在发现那篇文章以及作者的引用在该网站上已经不存在了。因此,在这里想介绍一个解决方案,它包括:
众所周知,COM对象必须注册几个UUID:(CLSID,接口,类型库)。没有这些讨厌的128位标识符,它根本无法生存。因此,必须在管理员账户下运行的Studio中打开ATL项目。否则,项目无法在Windows注册表中注册COM实体。另外两个客户端项目可以在Visual Studio的单独实例中打开(在普通用户账户下运行)。发现在这种环境下开发COM服务器和COM客户端应用程序更好。在使用COM互操作性开发应用程序时,可能会遇到一些(非常讨厌)的陷阱。
不要忘记在ATL控件向导中包括IPersistStorage和IPersistStreamInit接口。否则,将无法在Windows表单中嵌入ActiveX控件。编译DLL,在具有管理员权限的Visual Studio Native Tools命令提示符下启动,并使用aximp实用程序生成代理,如下所示:
C:\Windows\system32>aximp D:\...your path...\ATLServer\Debug\ATLServer.dll /source /verbose
该实用程序必须回答如下:
Generated Source: C:\Windows\system32\AxATLServerLib.cs
Generated Assembly: C:\Windows\system32\ATLServerLib.dll
Generated Assembly: C:\Windows\system32\AxATLServerLib.dll
现在剪切(Ctrl+X)这三个文件,并将它们放入项目的文件夹中。
在MFC客户端项目中,使用ClassWizard创建代理,如下所示:
// 示例代码
// 假设已经创建了名为MyATLServer的类
MyATLServer myATLServer;
myATLServer.CreateInstance();
// 进行其他操作...