我想将其他执行程序(别人开发的,只用可执行文件,没有源码),嵌入到我的对话框的某个指定区域中,该如何处理?

解决方案 »

  1.   

    CreateProcess()
    然后得到这个可执行程序的窗口句柄
    设置它为你的对话框的子窗口
    你就可以控制它了
    试试
    应该能行
      

  2.   

    to: happyparrot(快乐鹦鹉) 
    可以的! 我见过:(
      

  3.   

    我做的一个类似微软directx提供的一个实例AMCap
    做出来的和他们的一样
      

  4.   

    你可以将对话框的指定位置挖空, 然后调用可执行文件, 用FindWindow得到窗口的句柄,然后用MoveWindow将窗口移动到你的对话框中挖空的地方就可以了,下面是简单的例子,位置你要自己调整.
    CRect rect;
    GetWindowRect(&rect);
    ScreenToClient(&rect);
    CRgn rgn, rgn1;
    rgn.CreateRectRgnIndirect(&rect);
    CRect rect1(20, 25, 500, 200);
    rgn1.CreateRectRgnIndirect(&rect1);
    rgn.CombineRgn(&rgn, &rgn1, RGN_DIFF);
    SetWindowRgn(rgn, TRUE);
    WinExec("calc.exe", SW_SHOW);
    CWnd *pWnd = FindWindow(NULL, "Calculator");
    ClientToScreen(&rect1);
    pWnd->MoveWindow(&rect1);
      

  5.   

    to ymbymb(毛病大哥),你的方法不太行, 
    1。我的标题程序标题不固定,我也懒得去找进程id,在通过进程id找hWnd(太麻烦)。
    2。窗口标题兰和菜单兰,在我的程序中我不想让他们出现。
    3。还要处理窗口移动问题:(不过还要谢谢你!
      

  6.   

    你可以用CreateProcess代替WinExec, 它的倒数第二个参数可以指定窗口的起始位置和大小
      

  7.   

    你把创建进程的窗口设置为你的对话框的子窗口就可以了
    不用处理移动问题你用CreateProcess()创建进程后找到窗口句柄不该太难吧至于菜单和窗口标题
    你可以得到视图在主窗口的位置
    然后设置它到对话框的(0,0)位置
    大概菜单和窗口标题栏都被你的对话矿盖住了试试
      

  8.   


    to:weakwater(三个代表.Net)
    创建进程的窗口设置为你的对话框的子窗口请问这个应该怎么做?
      

  9.   

    我已经弄进来了,
    可是有些问题。
    我的这个窗口,最小化后还原总是有些问题,某些区域刷新不了
    我已经调用了 UpdateWindow....  SetWindowPos... 还不行:(
      

  10.   

    我的这个窗口,最小化后还原总是有些问题,某些区域刷新不了
    我已经调用了 UpdateWindow....  SetWindowPos... 还不行:(