FindWindow怎么获取隐藏窗口的句柄
1个回答
展开全部
由于项目需要将matlab绘制出的图形窗口嵌入到VC界面里去。为了有好的显示效果matlab里让窗口先隐藏然后抓到VC界面里再显示出来。由于matlab程序比较复杂是由合作方提供的。不能用COM等形式实现联合编程。
这里遇到的问题是:FindWindow()函数无法找到隐藏的Figure窗口句柄(显示情况下能找到)
由于对Windows理解不够我无从下手。望高手指明方向。。。。
------解决方案--------------------------------------------------------
你用EnumWindow试试
------解决方案--------------------------------------------------------
不管窗口有没有影藏,findwindow都能够找到它,如果它是顶级窗口并且没有经过特殊处理的话。
我猜,你那matlab的figure可能不是顶级窗口,就是不是主程序的窗口,因此,你可以通过枚举的方式来找到子窗口。代码如下,参考下:C/C++ code
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));//获取下一个子窗口}------解决方案--------------------------------------------------------枚举窗口
这里遇到的问题是:FindWindow()函数无法找到隐藏的Figure窗口句柄(显示情况下能找到)
由于对Windows理解不够我无从下手。望高手指明方向。。。。
------解决方案--------------------------------------------------------
你用EnumWindow试试
------解决方案--------------------------------------------------------
不管窗口有没有影藏,findwindow都能够找到它,如果它是顶级窗口并且没有经过特殊处理的话。
我猜,你那matlab的figure可能不是顶级窗口,就是不是主程序的窗口,因此,你可以通过枚举的方式来找到子窗口。代码如下,参考下:C/C++ code
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));//获取下一个子窗口}------解决方案--------------------------------------------------------枚举窗口
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询