`
wguzgg
  • 浏览: 5573 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

在java程序中利用swt实现窗口始终最前以及透明窗口

阅读更多
从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 窗口靠边自动隐藏

    java swt 窗口靠边自动隐藏,需要导入swt包...

    Java程序设计之swt教程.pdf

    SWT(Standard Widget Toolkit)即标准小窗口工具箱,是IBM公司推出的一种在Eclipse 中使用的集成开发环境,SWT提供可移植的API,并与底层本机OS GUI平台紧密集成,它 是一个与本地窗口系统集成在一起的小部件集和...

    SWT API JAVA窗口程序开发AWT/Swing外的另种开发方式

    SWT,AWT/Swing外,java的另一种桌面窗口程序的开发包。做JAVA桌面窗口开发,我们有了更多的选择。此API是我自己生成的。对应的SWT版本是我网上下的最新的,版本是swt-3.4,里面没有API。网上也没找到最新版本的,我...

    SWT 基本 窗口 组件

    java SWT 基本窗口 组件 开发

    SWT.rar_SWT tutorial_java swt_swt 登陆窗口_swt tutori_swt-designer

    SWT教程,很不错的,相当的精辟,呵呵,初学者的福音

    SWT自定义圆形按钮

    SWT原生按钮不够美观,本案例实现自定义圆形按钮,代码可直接下载使用。

    swt 隐藏显示任务栏核心

    SWT 3.0 开始引入了 Tray,可以在系统栏放置你的程序图标了 本程序实现的功能有四: * 1. 点击窗口的最小化或关闭按钮都是隐藏窗口--任务栏里不显示,不退出程序 * 2. 窗口隐藏时,任务栏无图标,系统栏有图标;...

    JAVA_SWT_TEST.rar_SWT_WIDGET_awt_java swt_java 工具箱

    标准窗口小部件工具箱的 Java 二维作图 SWT (标准窗口小部件工具箱,Standard Widget Toolkit)是在 Eclipse 平台上使用的窗口小部件工具箱。它也可以作为 Swing/AWT 的一个重要替代产品,用于构建任何类型的 Java ...

    简单SWT源代码,有那个简单的跳转,关闭,滑动窗口

    有简单的SWT代码。。。。。。。。。。。

    JAVA上百实例源码以及开源项目源代码

     Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。  部分源代码摘录:  ftpClient = new FtpClient(); //实例化FtpClient对象  String serverAddr=jtfServer.getText(); //得到服务器地址  ...

    JAVA上百实例源码以及开源项目

    百度云盘分享 ... Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。  部分源代码摘录:  ftpClient = new FtpClient(); //实例化FtpClient对象  String serverAddr=jtfServer.getText();...

    java源码包---java 源码 大量 实例

     Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。  部分源代码摘录:  ftpClient = new FtpClient(); //实例化FtpClient对象  String serverAddr=jtfServer.getText(); //得到服务器地址  ...

    SWT WIN32 Extension

    软件开发工具库,能够让您使用Java语言开发原生的Windows应用程序而不需要编写额外的JNI代码。使用SWT Win32 Extension,您将不需要创建原生的动态链接库来调用操作系统动态链接库的系统API或者方法。您仅仅需要做的...

    java源码包2

     Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。  部分源代码摘录:  ftpClient = new FtpClient(); //实例化FtpClient对象  String serverAddr=jtfServer.getText(); //得到服务器...

    java Swing、SWT分页

    java Swing分页mjava Swing分页 还有项目实例 很不错的

    java源码包4

     Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。  部分源代码摘录:  ftpClient = new FtpClient(); //实例化FtpClient对象  String serverAddr=jtfServer.getText(); //得到服务器...

    java源码包3

     Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。  部分源代码摘录:  ftpClient = new FtpClient(); //实例化FtpClient对象  String serverAddr=jtfServer.getText(); //得到服务器...

    java swt 浏览器

    自己写的java浏览器的源代码 使用的是swt做得界面 实现了浏览器的基本功能 重点是新窗口打开的处理 鉴于有人说我是骗子,特此申明 下载里面只有源代码和引用的SWT包, classpath包括进去的,可以直接用Eclipse导入 ...

    SWT/JFace的核心应用与实战教程的PDF电子版.rar

    SWT 是由 IBM 领 导的开源项目 Eclipse 的一个子项目,但 SWT 应用上也存在不足,SWT 库反映的是本地操作 系统的基本窗口小部件,在许多环境下,这种方法较低级。JFace 库作为 SWT 的增强库很好 地弥补了它的缺点,...

    Eclipse SWT JFace核心应用相关应用及源码.rar

    SWT 是由 IBM 领 导的开源项目 Eclipse 的一个子项目,但 SWT 应用上也存在不足,SWT 库反映的是本地操作 系统的基本窗口小部件,在许多环境下,这种方法较低级。JFace 库作为 SWT 的增强库很好 地弥补了它的缺点,...

Global site tag (gtag.js) - Google Analytics