希望实现这样的功能:程序运行后,在容器文档中自动嵌入一个autocad对象,并打开a.dxf文件.
请问各位高手,如何实现这样的功能?
   
谢谢!

解决方案 »

  1.   

    这种控件因该是由微软提供,你查查,你就动态创建一个控件然后在调用它的方法因该有打开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&brvbar;WS_VISIBLE&brvbar;WS_HSCROLL&brvbar;WS_VSCROLL );//create a browser control
    HRESULT hrbrowser;
    hrbrowser = content_wnd.QueryControl( IID_IWebBrowser2, reinterpret_cast<void**>(&m_spBrowser) );
    }
      

  2.   

    首先谢谢你!
    可是我觉得不用其他控件应该也可以做到吧?
    用AppWizard生成容器程序后,可以插入新得对象,从COleInsertDialog对话框中,可以选择由文件创建新对象.但是选择由a.dxf,不会自动创建AutoCAD对象.我猜想可能是.dxf文件和AutoCAD模型没有关联吧?
    我的目的就是想用程序自动完成上述过程,从a.dxf生成AutoCAD对象,并嵌入到程序中.
    但是我刚接触OLE,对其中调用过程及机理一知半懂.首先我不知道如何在程序中得到AutoCAD的CLISD.并且我也不清楚是不是在不同机器上的CAD的CLISD是否一样.
    不知道这些问题怎么解决?
      

  3.   

    你的理可能错了,a.dxf并不是组件,容器程序只能插入组件,一般文件后缀是.dll和.ocx而不是a.dxf
    AutoCAD是应用程序并不是组件。我想问你是不是想显示AutoCAD的图片如果是那就用GDI+,如果不是你是想在VC的容器中对a.dxf这个文件进行编辑那只有找到相应组件了。否则只有自已写一类似AutoCAD的组件不过多半是很难的了。关鍵你是想实现看还是编辑的功能
      

  4.   

    从a.dxf生成AutoCAD对象
    ========================
    不明白,a.dxf不是文件么?从文件能生成对象么?好像只有用对象来打开文件吧。
      

  5.   

    结贴.问题解决了.:)谢谢大家!
    我是这样做的,先用CLSIDFromProID()得到AutoCAD组件的CLSID,然后调用了COleClientItem::CreateFromFile(filename, clsid)函数,初步实现了预定功能.to longlongagolmboy:我的想法是由文件创建对象,一般容器程序都可以实现这样得功能的吧.