1

我正在开发一个基于 C++ 的程序,并且还使用 SiliconSoftware 接口。正如您从附加的图片中看到的那样,我正在使用 c++ win32 代码运行主窗口,但显示窗口是使用带有以下代码的图像采集卡接口创建的:

int Bits=8; int nId =::CreateDisplay(Bits,GrabberOptions::getWidth(),GrabberOptions::getHeight());SetBufferWidth(nId,GrabberOptions::getWidth(),GrabberOptions::getHeight());::DrawBuffer(nId,Fg_getImagePtrEx(fg,lastPicNr,0,_memoryAllc),lastPicNr,"");

但我想要这个显示窗口,在主窗口中打开。我该怎么做 ?任何的想法? 在此处输入图像描述

4

1 回答 1

5

假设你有

HWND a = ...
HWND b = ...

假设它们是无论如何获得的兄弟窗口的本机句柄。要使 ba 成为 a 的孩子,您必须这样做

Setparent(b,a); //a will be the new parent b
DWORD style = GetWindowLong(b,GWL_STYLE); //get the b style
style &= ~(WS_POPUP|WS_CAPTION); //reset the "caption" and "popup" bits
style |= WS_CHILD; //set the "child" bit
SetWindowLong(b,GWL_STYLE,style); //set the new style of b
RECT rc; //temporary rectangle
GetClientRect(a,&rc); //the "inside border" rectangle for a
MoveWindow(b,rc.left,rc.top,rc.right-rc.left,rc.bottom-rc.top); //place b at (x,y,w,h) in a
UpdateWindow(a);

现在,您必须从 a 处理 WM_SIZE 并相应地移动 b ,以便它与其(新)父级一起调整大小。

于 2012-04-05T16:52:43.633 回答