由于项目需要将matlab绘制出的图形窗口嵌入到VC界面里去。为了有好的显示效果matlab里让窗口先隐藏然后抓到VC界面里再显示出来。由于matlab程序比较复杂是由合作方提供的。不能用COM等形式实现联合编程。
这里遇到的问题是:FindWindow()函数无法找到隐藏的Figure窗口句柄(显示情况下能找到)
由于对Windows理解不够我无从下手。望高手指明方向。

解决方案 »

  1.   

    不管窗口有没有影藏,findwindow都能够找到它,如果它是顶级窗口并且没有经过特殊处理的话。
    我猜,你那matlab的figure可能不是顶级窗口,就是不是主程序的窗口,因此,你可以通过枚举的方式来找到子窗口。代码如下,参考下: CWnd* cwnd=CWnd::FindWindow(NULL,"matlab标题名");//找到matlab的主窗口
    CWnd* child=cwnd->GetWindow(GW_CHILD);//获得matlab的第一个子窗口
    CString buf;
    while(child)
    {//这里可以判断是不是你那个figure
    child->SendMessage(WM_GETTEXT,50,(LPARAM)(buf.GetBuffer(50)));
    buf.ReleaseBuffer();
    if (buf=="发送")
    {
    child->PostMessage(WM_LBUTTONDOWN);
    child->PostMessage(WM_LBUTTONUP);
    break;
    }
    else
    {
    //child->SendMessage(WM_SETTEXT,0,(LPARAM)"hello,this is me");
    }
    child=(child->GetNextWindow(GW_HWNDNEXT));//获取下一个子窗口
    }上面代码是我写的一个自动发消息的代码,修改下,看能用不。
      

  2.   

    matlab与vc混合编程很方便呀,直接调用m文件就行,跟复杂度没关系