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