0

それぞれ独自の GUI を持ついくつかのアプリケーションを C++ で作成したいと考えています。すべてのアプリケーションは、別のアプリ (アプリ A) によって起動されます。このアプリは、すべての GUI アプリを開きます。私が欲しいのは、各アプリの UI コンテンツが同じウィンドウに表示されることです。ユーザーは、タブを使用して各アプリの UI を参照できます。ユーザーはアプリ A のみを開く必要があり、A は各 UI アプリを開き、同じウィンドウにインターフェイスを表示します。誰かがこれを達成する方法を教えてもらえますか? Visual Studio 2010 C++ で開発しています。(Windows アプリケーション)

4

1 に答える 1

2

これは、UI アプリケーションがそのウィンドウ ハンドルをホスト アプリケーションに通信できる場合に実行できます。ホスト アプリケーションでは、これらのウィンドウの親をタブに変更する必要があります。このようなもの:

// hWnd is the window we want to embed
long style = ::GetWindowLong(hWnd, GWL_STYLE);

style |= WS_CHILD;
style &= ~WS_POPUP;
style &= ~WS_CAPTION;
style &= ~WS_THICKFRAME;

SetWindowLong(hWnd, GWL_STYLE, style);
SetParent(hWnd, hostHWnd() /* this returns HWND of the host window */);

SetWindowPos(hWnd, HWND_TOP, 0, 0, hostWidth(), hostHeight(), SWP_SHOWWINDOW);
ShowWindow(hWnd, SW_SHOW);

たとえば、名前付きパイプを介してウィンドウ ハンドルを通信できます。

ただし、これを行うときにいくつかの問題を経験する準備をしてください。たとえば、ホスト ウィンドウのサイズが変更されたときに、埋め込みウィンドウのサイズを変更する必要があります (例のように SetWindowPos を呼び出します)。

于 2013-08-22T12:06:33.403 に答える