在单文档程序中,可以通过SetParent指定其他程序A嵌入到单文档中执行。那么多文档可以吗?我的思路是:可以通过修改它的模板注册类CMultiDOcTemplate来实现,这里需要获得指定程序A的类名
及一些相关信息。
这样可以吗?
谢谢!

解决方案 »

  1.   

    在单文档程序中,可以通过SetParent指定其他程序A嵌入到单文档中执行。那么多文档可以吗?
    ==========================================
    应该是不行的,呵呵,我没有听过。
      

  2.   

    我的思路是:可以通过修改它的模板注册类CMultiDOcTemplate来实现,这里需要获得指定程序A的类名
    及一些相关信息。
    ==========================================
    这样应该是可以的,但是涉及到的要修改的东西比较多。如果是SDI程序,它也可以使用多套模板,只是在创建新文档的时候需要选择创建那种类型的文档!
      

  3.   

    to vcleaner(我没做大哥已经很久了.......)
    那么应该修改那些地方呢?
    学习ing
      

  4.   

    主要就是参考:
    CSingleDocTemplate* pDocTemplate;
    pDocTemplate = new CSingleDocTemplate(
    IDR_MAINFRAME,
    RUNTIME_CLASS(CTestSDIDoc),
    RUNTIME_CLASS(CMainFrame),       // main SDI frame window
    RUNTIME_CLASS(CTestSDIView));
    AddDocTemplate(pDocTemplate);
    加入新的模板!
      

  5.   

    加模板很容易。
    msdn就有一个例子Viewex,你仿造就搞定了。但
    "在单文档程序中,可以通过SetParent指定其他程序A嵌入到单文档中执行"
    这个技术我还没有用过,介绍一下!!!
      

  6.   

    to I_Love_CPP(我愛C++) 
       很简单。
    在一个List列表中枚举了当前所有窗口句柄,在触发事件(如双击事件)中添加如下代码:
       int nIndex = m_WndListBox.GetAnchorIndex();//获得List中被选中内容的下标
       CString strCaption;        //指定的应用程序的Caption
       HWND hwndChild,hwndParent; //父子窗口句柄   m_WndListBox.GetText(nIndex,strCaption);
       hwndChild = ::FindWindow(NULL,strCaption);//获得指定应用程序的句柄   ShellExecute(NULL,"OPEN","D:\\test_AppShare.exe",NULL,NULL,SW_SHOWNORMAL);//启动单文档应用程序
       hwndParent = ::FindWindow(NULL, g_strWndTitle);//获得单文档应用程序的句柄
       ::SetParent(hwndChild,hwndParent);OK!
      

  7.   

    加模板很容易。
    msdn就有一个例子Viewex,你仿造就搞定了。
    ---------------------
    我知道这个例子,就是看到这个例子才引发了我这个想法。
    只是这个例子中,定义的模板都是它自己的,而我想要定义的模板都是不可预知的,可以是任何可执行程序。
    首先问题在于:如何获得一个应用程序的类名??后面还会有其他未知的问题。
      

  8.   

    你那么嵌入到文档里去运行有什么作用呢? 
    与直接用ShellExecute执行另外一个程序有何区别呢?什么时候需要这么做呢?
      

  9.   

    我没有做过这方面的工作,还是没有感性的认识。
    我现在的理解是:好比你要做一个框架(平台),
    里面可以嵌入word运行,也可嵌入realplay播放,是吗? 如果是那样的,那么你可以根据用户选择的程序来确定究竟是用哪套模板,
    而程序的种类是由你(软件设计者)确定的(模板也因此可确定);
    因此你可以设定一些选项,根据用户的选择就加载模板和程序。(有不妥之处请包涵,我对网络编程没有经验)
      

  10.   

    那不就是ole,com了吗?有什么区别呢?
      

  11.   

    OLE,COM?不懂,没用过!可以详细介绍一下思路吗?
      

  12.   

    SetParent 跟单文档/多文档 没多大关系吧。 指定合适的窗口就行了。 对于多文档,每次可以新建一个view来容纳目标窗口。CMultiDOcTemplate 是MFC代码级的东东,肯定是不现实的。很多程序压根就没用到MFC,遑论CMultiDOcTemplate。
      

  13.   

    http://msdn.microsoft.com/library/CHS/vccore/html/_core_ole_topics.asp