2012-04-04 6 views
2

私はC++のプログラムベースとSiliconSoftwareインターフェイスを使って作業しています。 あなたは、私はC++のWin32コードと、メインウィンドウが、表示ウィンドウを実行しています添付pistureから見るようには、次のコードでフレームグラバーintefaceを使用して作成されます。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,""); 

が、私はこのDiplayウィンドウをしたい、とのオープンメインウィンドウ内に表示されます。 どうすればいいですか?何か案が? enter image description here

+1

これはネイティブWin32ではありません。実際にC++ラッパーを使用しています。 –

+0

Visual Stadioでプロジェクトを作成しましたが、「空のプロジェクト」オプションを使用しなかったため、Visual Studioでメインウィンドウが作成されました。ウィンドウのコード:BOOL InitInstance(HINSTANCE hInstance、int nCmdShow) { HWND hWnd; hInst = hInstance; //インスタンスハンドルをグローバル変数に格納する hWnd = CreateWindow(szWindowClass、szTitle、WS_OVERLAPPEDWINDOW、 CW_USEDEFAULT、0、CW_USEDEFAULT、0、NULL、NULL、NULL、hInstance、NULL); if(!hWnd) { return FALSE; } ShowWindow(hWnd、nCmdShow); UpdateWindow(hWnd); return TRUE; } – user261002

+0

ウィンドウを作成した後に「添付」する方法はありません。フレームグラバーAPIがあなたにオプションを与えていない場合は、運が悪いです。 –

答えて

4

のは、彼らがどんなに得られていないウィンドウを兄弟のネイティブハンドルがあるassumigあなたが

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

があるとしましょう。あなたからWM_SIZEを処理し、それはその(新しい)親と一緒にサイズを変更するように、それに応じてBを移動する必要がNowm はの子bを作成するには、

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); 

を行う必要があります。

関連する問題