我现在在做一个客户端应用程序调用进程外程序,并且把进程外程序的资源(进程外可以是一个单文档或对话框)显示在客户端应用程序的视图区?我现在做的客户端不能嵌入进程外应用程序,各位高手,帮帮mm吧!

解决方案 »

  1.   

    FindResource
    LoadResource看MSDN的例子。
      

  2.   

    不是load,而是类似调用ShellExecute函数,将外部应用程序调用起来,外部应用程序作为一个独立的程序可以自运行,只是需要一个客户端将外部程序嵌入显示到客户端的视图区域。
      

  3.   

    //suggest you do a resource dll,and call it in your project.follow this steps: 
    纯资源的DLL就是只包含资源的DLL,例如:图标,位图,字符串,声音,视频,对话框等。使用纯资源DLL可以节约可执行文件的大小,可以被所有的应用程序所共享,从而提高系统性能。纯资源DLL的编写比普通的DLL要简单的多,首先创建一个WIN32 
    DLL工程,不是MFC的DLL,然后创建一个资源文件 *.RC,添加到资源DLL的工程中去。然后添加一个初始化DLL的原文件。
    #include <windows.h>
    extern "C"
    BOOL WINAPI DllMain( HINSTANCE hInstance, DWORD dwReason, LPVOID )
    {
        return 1;
    }
    这是纯资源DLL所必须需的代码,保存这个文件为*.CPP。编译这个资源DLL。在应用程序显示的调用这个DLL,使用LoadLibrary函数装入资源DLL,FindResource和LoadResource来装入各种资源,或者使用下列的特定的资源装入函数: 
      FormatMessage 
      LoadAccelerators 
      LoadBitmap 
      LoadCursor 
      LoadIcon 
      LoadMenu 
      LoadString 
    当资源使用结束,你的应用程序须调用FreeLibrary函数来释放资源。
    下面就讲一下如何调用编写好的资源DLL
    首先在应用程序中声明一个DLL的句柄,HINSTANCE m_hLibrary;在OnCreate( )函数中调用LoadLirbrary( 
    ),在OnDestory( )中调用FreeLibrary()。
      

  4.   

    不是load,而是类似调用ShellExecute函数,将外部应用程序调用起来,外部应用程序作为一个独立的程序可以自运行,只是需要一个客户端将外部程序嵌入显示到客户端的视图区域。re:
    you should execute your program,then modify its window property to child.and move it to right position.
      

  5.   

    难度很大,
    可以考虑用Terminal Server?
    不知道,可不可行?
      

  6.   

    to kingzai(stevenzhu):
    你说的方法是类似下面代码这样吗?SetWindowLong(m_pViewContainer->m_hWnd, GWL_STYLE, GetWindowLong(m_pViewContainer->m_hWnd, GWL_STYLE)|WS_CLIPCHILDREN);
    HINSTANCE hp = ShellExecute(NULL, NULL, "notepad", NULL, "", SW_SHOWMAXIMIZED);
    CWnd *pWnd = NULL;

    while(1) //一直到写字板窗体被建立
    {
    pWnd=CWnd::FindWindow("Notepad",NULL);
    if (pWnd) break;
    }
    pWnd->SetParent(m_pViewContainer);我试写字板程序好用,但是我自己做一个单文档的应用程序就无法嵌入客户端,你知道是什么原因吗?to wangk(倒之):能具体说说你的方法吗?
      

  7.   

    如果你的机器有Terminal Server的话,可以试试用WTS系列函数。
    就像XP的远程桌面一样。(记不得在网上那里看过了)
      

  8.   

    可以在组件中加入取主窗口的句柄,然后将客户端设置为它的父窗口。
    取主窗口句柄函数:
    long GetMainHwnd() 
    {
     long lhMainWnd = (long)(AfxGetApp()->GetMainWnd()->GetSafeHwnd()); return lhMainWnd;
    }客户端调用:SetWindowLong(this->m_hWnd, GWL_STYLE, GetWindowLong(this->m_hWnd, GWL_STYLE|WS_CLIPCHILDREN);
    WND hWnd = (HWND)m_clock.GetMainHwnd();//m_clock外部程序接口CWnd* pWnd = new CWnd();
    pWnd->m_hWnd = hWnd;
    pWnd->SetParent(this);