可以将任意一个程序指定(嵌入)到一个多文档程序中执行吗?? 在单文档程序中,可以通过SetParent指定其他程序A嵌入到单文档中执行。那么多文档可以吗?我的思路是:可以通过修改它的模板注册类CMultiDOcTemplate来实现,这里需要获得指定程序A的类名及一些相关信息。这样可以吗?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在单文档程序中,可以通过SetParent指定其他程序A嵌入到单文档中执行。那么多文档可以吗?==========================================应该是不行的,呵呵,我没有听过。 我的思路是:可以通过修改它的模板注册类CMultiDOcTemplate来实现,这里需要获得指定程序A的类名及一些相关信息。==========================================这样应该是可以的,但是涉及到的要修改的东西比较多。如果是SDI程序,它也可以使用多套模板,只是在创建新文档的时候需要选择创建那种类型的文档! to vcleaner(我没做大哥已经很久了.......)那么应该修改那些地方呢?学习ing 主要就是参考:CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CTestSDIDoc), RUNTIME_CLASS(CMainFrame), // main SDI frame window RUNTIME_CLASS(CTestSDIView)); AddDocTemplate(pDocTemplate);加入新的模板! 加模板很容易。msdn就有一个例子Viewex,你仿造就搞定了。但"在单文档程序中,可以通过SetParent指定其他程序A嵌入到单文档中执行"这个技术我还没有用过,介绍一下!!! 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! 加模板很容易。msdn就有一个例子Viewex,你仿造就搞定了。---------------------我知道这个例子,就是看到这个例子才引发了我这个想法。只是这个例子中,定义的模板都是它自己的,而我想要定义的模板都是不可预知的,可以是任何可执行程序。首先问题在于:如何获得一个应用程序的类名??后面还会有其他未知的问题。 你那么嵌入到文档里去运行有什么作用呢? 与直接用ShellExecute执行另外一个程序有何区别呢?什么时候需要这么做呢? 我没有做过这方面的工作,还是没有感性的认识。我现在的理解是:好比你要做一个框架(平台),里面可以嵌入word运行,也可嵌入realplay播放,是吗? 如果是那样的,那么你可以根据用户选择的程序来确定究竟是用哪套模板,而程序的种类是由你(软件设计者)确定的(模板也因此可确定);因此你可以设定一些选项,根据用户的选择就加载模板和程序。(有不妥之处请包涵,我对网络编程没有经验) 那不就是ole,com了吗?有什么区别呢? OLE,COM?不懂,没用过!可以详细介绍一下思路吗? SetParent 跟单文档/多文档 没多大关系吧。 指定合适的窗口就行了。 对于多文档,每次可以新建一个view来容纳目标窗口。CMultiDOcTemplate 是MFC代码级的东东,肯定是不现实的。很多程序压根就没用到MFC,遑论CMultiDOcTemplate。 http://msdn.microsoft.com/library/CHS/vccore/html/_core_ole_topics.asp 200分求pudn的账号下代码 如何用VC模仿出游戏手柄的连发功能 CHtmlView内存释放问题 求一函数 mdi两个基础问题 求snmp get 的源代码 关于CTreeCtrl的继承 如何得到设备和USB HUB端口的对应关系 如何知道当前帐户属于哪个组?急! 怎样看一个完整的VC++源程序?有Mainfrm.h 、*Doc.h 、*View.h 、*Tree.h 、Resource.h等等 VC+ODBC 菜鸟提问:关于odbc访问accee2000数据库问题
==========================================
应该是不行的,呵呵,我没有听过。
及一些相关信息。
==========================================
这样应该是可以的,但是涉及到的要修改的东西比较多。如果是SDI程序,它也可以使用多套模板,只是在创建新文档的时候需要选择创建那种类型的文档!
那么应该修改那些地方呢?
学习ing
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CTestSDIDoc),
RUNTIME_CLASS(CMainFrame), // main SDI frame window
RUNTIME_CLASS(CTestSDIView));
AddDocTemplate(pDocTemplate);
加入新的模板!
msdn就有一个例子Viewex,你仿造就搞定了。但
"在单文档程序中,可以通过SetParent指定其他程序A嵌入到单文档中执行"
这个技术我还没有用过,介绍一下!!!
很简单。
在一个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!
msdn就有一个例子Viewex,你仿造就搞定了。
---------------------
我知道这个例子,就是看到这个例子才引发了我这个想法。
只是这个例子中,定义的模板都是它自己的,而我想要定义的模板都是不可预知的,可以是任何可执行程序。
首先问题在于:如何获得一个应用程序的类名??后面还会有其他未知的问题。
与直接用ShellExecute执行另外一个程序有何区别呢?什么时候需要这么做呢?
我现在的理解是:好比你要做一个框架(平台),
里面可以嵌入word运行,也可嵌入realplay播放,是吗? 如果是那样的,那么你可以根据用户选择的程序来确定究竟是用哪套模板,
而程序的种类是由你(软件设计者)确定的(模板也因此可确定);
因此你可以设定一些选项,根据用户的选择就加载模板和程序。(有不妥之处请包涵,我对网络编程没有经验)