<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    大夢想家

    5年開發工程師,2年實施經理,X年售前顧問,......
    數據加載中……
    在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也沒有的).
    上面是該函數的資料,下面是一段代碼示例:

    代碼

    1. display = new Display();  
    2. shell = new Shell(display , SWT.NULL);  
    3. shell.setMaximized(false);  
    4. shell.setBackground(display.getSystemColor(SWT.COLOR_BLACK));  
    5. shell.setText("Example");  
    6. shell.setBounds(0 , 700 , 1024 , 68);  
    7. //始終最前
    8. OS.SetWindowPos(shell.handle , OS.HWND_TOPMOST, 0 , 700 , 1024 , 68 , SWT.NULL);  
    9. //透明窗體
    10. OS.SetWindowLong(shell.handle , OS.GWL_EXSTYLE , OS.GetWindowLong(shell.handle , OS.GWL_EXSTYLE)^0x80000);  
    11. TCHAR lpLibFileName = new TCHAR (0, "User32.dll", true);   
    12. int hInst = OS.LoadLibrary(lpLibFileName);   
    13. if(hInst != 0) {   
    14.     String name = "SetLayeredWindowAttributes\0";   
    15. byte [] lpProcName = new byte [name.length ()];  
    16. for (int i=0; i<lpProcName.length; i++) {  
    17.         lpProcName [i] = (byte) name.charAt (i);  
    18.     }  
    19. int fun = OS.GetProcAddress(hInst , lpProcName);  
    20. if (fun != 0) {  
    21.         OS.CallWindowProc(fun , shell.handle , 0,50,1);  
    22.     }  
    23.     OS.FreeLibrary(hInst);  
    24. }  

    里面用到的幾個類都在org.eclipse.swt.internal.win32下,相信大家看到上面的代碼就都清楚該如何做了,我也就不多羅嗦了.



    客戶虐我千百遍,我待客戶如初戀!

    posted on 2007-12-25 14:32 阿南 閱讀(748) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 中文字幕免费人成乱码中国| 毛片免费观看网站| www.亚洲日本| 亚洲伊人成无码综合网 | 久久精品九九亚洲精品| 无人在线观看完整免费版视频| 国产产在线精品亚洲AAVV| 亚洲Av无码专区国产乱码DVD | 亚洲国产精品综合久久网络| 3344在线看片免费| 亚洲日本中文字幕天天更新| 国产中文在线亚洲精品官网| 日本最新免费网站| 亚洲精品黄色视频在线观看免费资源| 亚洲国产福利精品一区二区| 国产偷窥女洗浴在线观看亚洲| 青青草a免费线观a| 国产线视频精品免费观看视频| 亚洲久悠悠色悠在线播放| 国产亚洲精品xxx| 免费一级毛片在级播放| 国产精品久久免费| 免费人成激情视频在线观看冫| 亚洲国产精品99久久久久久| 日韩精品一区二区亚洲AV观看| 亚洲成A人片77777国产| 日韩免费一区二区三区在线播放| 成在线人免费无码高潮喷水| 亚洲AV无码成人网站在线观看| 亚洲欧洲日产韩国在线| 亚洲日韩欧洲无码av夜夜摸| 好吊妞在线成人免费| 最近最新高清免费中文字幕| 久久最新免费视频| 国产精品亚洲专区一区| 亚洲制服丝袜中文字幕| 久久久亚洲欧洲日产国码二区| 亚洲精品tv久久久久久久久 | 无码欧精品亚洲日韩一区夜夜嗨 | 一级A毛片免费观看久久精品 | 波多野结衣中文字幕免费视频 |