急!!!怎么在OLE容器中自动插入某一特定文档对象? 希望实现这样的功能:程序运行后,在容器文档中自动嵌入一个autocad对象,并打开a.dxf文件.请问各位高手,如何实现这样的功能? 谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这种控件因该是由微软提供,你查查,你就动态创建一个控件然后在调用它的方法因该有打开a.dxf的方法,不过这个控件是什么我就不知道了,去查查吧,以下是动态打开控件的方法动态创建ocx#include <atlbase.h> CComModule _Module;#include <atlcom.h>#include <atlwin.h>#pragma comment(lib,"atl")CComQIPtr<IWebBrowser2> m_spBrowser;CAxWindow content_wnd;......if( _tcslen(m_tcHtmlFileName) > 0 ){RECT rc;GetClientRect( &rc );if(m_spBrowser==NULL){LPOLESTR pstrbrowserid;StringFromCLSID(IID_IWebBrowser2,&pstrbrowserid);_bstr_t bstrbrowser(pstrbrowserid);CoTaskMemFree(pstrbrowserid);if(content_wnd.IsWindow())content_wnd.DestroyWindow();content_wnd.Create( m_hWnd, rc, LPCTSTR(bstrbrowser), WS_CHILD¦WS_VISIBLE¦WS_HSCROLL¦WS_VSCROLL );//create a browser controlHRESULT hrbrowser;hrbrowser = content_wnd.QueryControl( IID_IWebBrowser2, reinterpret_cast<void**>(&m_spBrowser) );} 首先谢谢你!可是我觉得不用其他控件应该也可以做到吧?用AppWizard生成容器程序后,可以插入新得对象,从COleInsertDialog对话框中,可以选择由文件创建新对象.但是选择由a.dxf,不会自动创建AutoCAD对象.我猜想可能是.dxf文件和AutoCAD模型没有关联吧?我的目的就是想用程序自动完成上述过程,从a.dxf生成AutoCAD对象,并嵌入到程序中.但是我刚接触OLE,对其中调用过程及机理一知半懂.首先我不知道如何在程序中得到AutoCAD的CLISD.并且我也不清楚是不是在不同机器上的CAD的CLISD是否一样.不知道这些问题怎么解决? 你的理可能错了,a.dxf并不是组件,容器程序只能插入组件,一般文件后缀是.dll和.ocx而不是a.dxfAutoCAD是应用程序并不是组件。我想问你是不是想显示AutoCAD的图片如果是那就用GDI+,如果不是你是想在VC的容器中对a.dxf这个文件进行编辑那只有找到相应组件了。否则只有自已写一类似AutoCAD的组件不过多半是很难的了。关鍵你是想实现看还是编辑的功能 从a.dxf生成AutoCAD对象========================不明白,a.dxf不是文件么?从文件能生成对象么?好像只有用对象来打开文件吧。 结贴.问题解决了.:)谢谢大家!我是这样做的,先用CLSIDFromProID()得到AutoCAD组件的CLSID,然后调用了COleClientItem::CreateFromFile(filename, clsid)函数,初步实现了预定功能.to longlongagolmboy:我的想法是由文件创建对象,一般容器程序都可以实现这样得功能的吧. 设置combobox的文本 如何链接到特定版本的 MSVCR.DLL MFC.DLL 我在 ATL 中调用 LoadLibrary 失败,为什么? Word 插件中保存文档的问题 在用双缓存显示位图时候,BoundsChecker检测出了debug下的奇怪问题 如何用OpenGL来绘制阴影? 关于web控件的编辑功能,大家进来看看 请问如何改变菜单栏的高度 请问哪有《深入浅出MFC》第二版下载?繁体版的也行。 求助呀,录屏制作AVI丢帧严重,大家帮忙看看,第一次发贴呀 紧急求助:Rich Edit控件的用法? 如何将字XML符串内容转换成所需要的对象? 有关字符串转换
动态创建ocx
#include <atlbase.h>
CComModule _Module;
#include <atlcom.h>
#include <atlwin.h>
#pragma comment(lib,"atl")CComQIPtr<IWebBrowser2> m_spBrowser;
CAxWindow content_wnd;
......
if( _tcslen(m_tcHtmlFileName) > 0 )
{
RECT rc;
GetClientRect( &rc );
if(m_spBrowser==NULL)
{
LPOLESTR pstrbrowserid;
StringFromCLSID(IID_IWebBrowser2,&pstrbrowserid);
_bstr_t bstrbrowser(pstrbrowserid);
CoTaskMemFree(pstrbrowserid);
if(content_wnd.IsWindow())
content_wnd.DestroyWindow();
content_wnd.Create( m_hWnd, rc, LPCTSTR(bstrbrowser), WS_CHILD¦WS_VISIBLE¦WS_HSCROLL¦WS_VSCROLL );//create a browser control
HRESULT hrbrowser;
hrbrowser = content_wnd.QueryControl( IID_IWebBrowser2, reinterpret_cast<void**>(&m_spBrowser) );
}
可是我觉得不用其他控件应该也可以做到吧?
用AppWizard生成容器程序后,可以插入新得对象,从COleInsertDialog对话框中,可以选择由文件创建新对象.但是选择由a.dxf,不会自动创建AutoCAD对象.我猜想可能是.dxf文件和AutoCAD模型没有关联吧?
我的目的就是想用程序自动完成上述过程,从a.dxf生成AutoCAD对象,并嵌入到程序中.
但是我刚接触OLE,对其中调用过程及机理一知半懂.首先我不知道如何在程序中得到AutoCAD的CLISD.并且我也不清楚是不是在不同机器上的CAD的CLISD是否一样.
不知道这些问题怎么解决?
AutoCAD是应用程序并不是组件。我想问你是不是想显示AutoCAD的图片如果是那就用GDI+,如果不是你是想在VC的容器中对a.dxf这个文件进行编辑那只有找到相应组件了。否则只有自已写一类似AutoCAD的组件不过多半是很难的了。关鍵你是想实现看还是编辑的功能
========================
不明白,a.dxf不是文件么?从文件能生成对象么?好像只有用对象来打开文件吧。
我是这样做的,先用CLSIDFromProID()得到AutoCAD组件的CLSID,然后调用了COleClientItem::CreateFromFile(filename, clsid)函数,初步实现了预定功能.to longlongagolmboy:我的想法是由文件创建对象,一般容器程序都可以实现这样得功能的吧.