从win2000开始,windows提供了一个新的api SetLayeredWindowAttributes,可以轻松实现透明窗口,在网上有许多vb,vc,delphi的示例程序,下面我来介绍一下如何使用swt来实现这一效果:
BOOL SetLayeredWindowAttributes(
HWND hwnd, // handle to the layered window
COLORREF crKey, // specifies the color key
BYTE bAlpha, // value for the blend function
DWORD dwFlags // action
);
Windows NT/2000/XP: Included in Windows 2000 and later.
Windows 95/98/Me: Unsupported.
Header: Declared in Winuser.h; include Windows.h.
Library: Use User32.lib.
一些常量:
WS_EX_LAYERED = 0x80000;
LWA_ALPHA = 0x2;
LWA_COLORKEY=0x1
其中dwFlags有LWA_ALPHA和LWA_COLORKEY
LWA_ALPHA被设置的话,通过bAlpha决定透明度.
LWA_COLORKEY被设置的话,则指定被透明掉的颜色为crKey,其他颜色则正常显示.
注:要使使窗体拥有透明效果,首先要有WS_EX_LAYERED扩展属性(旧sdk也没有的).
上面是该函数的资料,下面是一段代码示例:
display = new Display();;
shell = new Shell(display , SWT.NULL);;
shell.setMaximized(false);;
shell.setBackground(display.getSystemColor(SWT.COLOR_BLACK););;
shell.setText("Example");;
shell.setBounds(0 , 700 , 1024 , 68);;
//始终最前
OS.SetWindowPos(shell.handle , OS.HWND_TOPMOST, 0 , 700 , 1024 , 68 , SWT.NULL);;
//透明窗体
OS.SetWindowLong(shell.handle , OS.GWL_EXSTYLE , OS.GetWindowLong(shell.handle , OS.GWL_EXSTYLE);^0x80000);;
TCHAR lpLibFileName = new TCHAR (0, "User32.dll", true);;
int hInst = OS.LoadLibrary(lpLibFileName);;
if(hInst != 0); {
String name = "SetLayeredWindowAttributes\0";
byte [] lpProcName = new byte [name.length ();];
for (int i=0; i<lpProcName.length; i++); {
lpProcName [i] = (byte); name.charAt (i);;
}
int fun = OS.GetProcAddress(hInst , lpProcName);;
if (fun != 0); {
OS.CallWindowProc(fun , shell.handle , 0,50,1);;
}
OS.FreeLibrary(hInst);;
}
里面用到的几个类都在org.eclipse.swt.internal.win32下,相信大家看到上面的代码就都清楚该如何做了,我也就不多罗嗦了.
分享到:
相关推荐
java swt 窗口靠边自动隐藏,需要导入swt包...
SWT(Standard Widget Toolkit)即标准小窗口工具箱,是IBM公司推出的一种在Eclipse 中使用的集成开发环境,SWT提供可移植的API,并与底层本机OS GUI平台紧密集成,它 是一个与本地窗口系统集成在一起的小部件集和...
SWT,AWT/Swing外,java的另一种桌面窗口程序的开发包。做JAVA桌面窗口开发,我们有了更多的选择。此API是我自己生成的。对应的SWT版本是我网上下的最新的,版本是swt-3.4,里面没有API。网上也没找到最新版本的,我...
java SWT 基本窗口 组件 开发
SWT教程,很不错的,相当的精辟,呵呵,初学者的福音
SWT原生按钮不够美观,本案例实现自定义圆形按钮,代码可直接下载使用。
SWT 3.0 开始引入了 Tray,可以在系统栏放置你的程序图标了 本程序实现的功能有四: * 1. 点击窗口的最小化或关闭按钮都是隐藏窗口--任务栏里不显示,不退出程序 * 2. 窗口隐藏时,任务栏无图标,系统栏有图标;...
标准窗口小部件工具箱的 Java 二维作图 SWT (标准窗口小部件工具箱,Standard Widget Toolkit)是在 Eclipse 平台上使用的窗口小部件工具箱。它也可以作为 Swing/AWT 的一个重要替代产品,用于构建任何类型的 Java ...
有简单的SWT代码。。。。。。。。。。。
Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。 部分源代码摘录: ftpClient = new FtpClient(); //实例化FtpClient对象 String serverAddr=jtfServer.getText(); //得到服务器地址 ...
百度云盘分享 ... Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。 部分源代码摘录: ftpClient = new FtpClient(); //实例化FtpClient对象 String serverAddr=jtfServer.getText();...
Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。 部分源代码摘录: ftpClient = new FtpClient(); //实例化FtpClient对象 String serverAddr=jtfServer.getText(); //得到服务器地址 ...
软件开发工具库,能够让您使用Java语言开发原生的Windows应用程序而不需要编写额外的JNI代码。使用SWT Win32 Extension,您将不需要创建原生的动态链接库来调用操作系统动态链接库的系统API或者方法。您仅仅需要做的...
Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。 部分源代码摘录: ftpClient = new FtpClient(); //实例化FtpClient对象 String serverAddr=jtfServer.getText(); //得到服务器...
java Swing分页mjava Swing分页 还有项目实例 很不错的
Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。 部分源代码摘录: ftpClient = new FtpClient(); //实例化FtpClient对象 String serverAddr=jtfServer.getText(); //得到服务器...
Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。 部分源代码摘录: ftpClient = new FtpClient(); //实例化FtpClient对象 String serverAddr=jtfServer.getText(); //得到服务器...
自己写的java浏览器的源代码 使用的是swt做得界面 实现了浏览器的基本功能 重点是新窗口打开的处理 鉴于有人说我是骗子,特此申明 下载里面只有源代码和引用的SWT包, classpath包括进去的,可以直接用Eclipse导入 ...
SWT 是由 IBM 领 导的开源项目 Eclipse 的一个子项目,但 SWT 应用上也存在不足,SWT 库反映的是本地操作 系统的基本窗口小部件,在许多环境下,这种方法较低级。JFace 库作为 SWT 的增强库很好 地弥补了它的缺点,...
SWT 是由 IBM 领 导的开源项目 Eclipse 的一个子项目,但 SWT 应用上也存在不足,SWT 库反映的是本地操作 系统的基本窗口小部件,在许多环境下,这种方法较低级。JFace 库作为 SWT 的增强库很好 地弥补了它的缺点,...