集成 Windows 本地应用到 Eclipse RCP 程序中
2009-12-18 00:00:00 来源:WEB开发网将 Windows 应用主窗口设置成指定窗口的子窗口
获取应用程序的主窗口句柄之后,在 Java_com_reparent_ReparentUtil_startAndReparent 函数的最后,我们通过调用 Windows 的 SetParent 函数将其设置成我们的子窗口,同时调整一下应用程序窗口的大小以使其能刚好显示在我们的窗口中。为了避免窗口的闪烁,我们先将窗口隐藏,reparent 之后再显示。为了去掉应用程序的窗口栏,我们需要将应用程序的窗口类型改为 WS_POPUP。
if(hChildWnd!=0){
RECT rect;
GetWindowRect((HWND)hParentWnd,&rect);
ShowWindow(hChildWnd,SW_HIDE);
SetParent(hChildWnd,(HWND)hParentWnd);
SetWindowPos(hChildWnd,(HWND)0,0,0,
rect.right-rect.left,rect.bottom-rect.top,
SWP_NOZORDER | SWP_NOACTIVATE | SWP_ASYNCWINDOWPOS |
SWP_SHOWWINDOW | SWP_NOSENDCHANGING | SWP_DEFERERASE);
SetWindowLong(hChildWnd,GWL_STYLE,WS_POPUP);
ShowWindow(hChildWnd,SW_SHOW);
}
包装 Windows 应用程序窗口到 SWT 控件
实现了 startAndReparent 方法后,只要将我们 SWT 窗口句柄传入,我们就可以将一个 Windows 本地应用嵌到我们的 SWT 窗口中了。为了方便使用,我们可以将 Windows 本地应用包装到一个 SWT Control 中,这样我们就可以象使用普通 SWT Control 一样使用 Windows 应用程序的窗口。下面我们来看如何实现对 Windows 应用程序窗口的包装。
首先我们定义一个 Control,它从 Canvas 继承而来。我们用它来作为本地应用程序窗口的父窗口,同时实现对它的管理。我们主要要实现以下几个方面的管理:
更多精彩
赞助商链接