我想用c ++创建几个应用程序,每个应用程序都有自己的GUI。 所有应用程序将由另一个应用程序(应用程序A)启动。此应用程序将打开所有GUI应用程序。 我想要的是每个应用程序的UI内容将显示在同一窗口中。用户可以使用选项卡浏览每个应用程序的UI。用户应该只打开应用程序A,A将打开每个UI应用程序并在同一窗口中显示其界面。 有人可以给我一些方向来解决这个问题吗?我正在使用Visual Studio 2010 C ++进行开发。 (Windows应用程序)
答案 0 :(得分:2)
如果您的ui应用程序可以将其Windows句柄传递给宿主应用程序,则可以执行此操作。在主机应用程序中,您需要将这些窗口重新显示在选项卡中。像这样:
// 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)。