1. 程式人生 > >怎樣在pb裡實現無標題欄 如何使PB視窗總在最上層 顯示或隱藏Windows的工作列

怎樣在pb裡實現無標題欄 如何使PB視窗總在最上層 顯示或隱藏Windows的工作列

1. pb裡實現無標題欄

api解決:

SetWindowLong(Handle,                  // 當前窗體控制代碼
                GWL_STYLE,                // 表示當前是要設定新的窗體(普通)樣式
                // 得到指定窗體資訊
                GetWindowLong(Handle, GWL_STYLE)
                  and (not WS_CAPTION));  // 去掉樣式(s)中的“標題”樣式


具體
FUNCTION long SetWindowLong(ulong hWnd, integer nIndex, ulong dwNewLong) library "user32.dll" ALIAS FOR "SetWindowLongA"
Function long GetWindowLong (Long hwnd,Long nIndex) library "user32" Alias for "GetWindowLongA"
//


//GWL_STYLE=-16
//WS_CAPTION=12582912
SetWindowLong(handle(this),-16,GetWindowLong(handle(this),-16)+12582912 )




上面是宣告 下面的程式碼放在open事件中
 
=======================================================================
 
2.   如何使PB視窗總在最上層  


通過SetWindowPos函式吧視窗的顯示層次修改為HWND_TOPMOST,就可以使指定視窗永遠不會被其它視窗覆蓋,該函式宣告為:  


Function   Long   SetWindowPos(Long   hwnd,   Long   ord,   Long   x,   Long   y,   Long  


dx,   Long   dy,   Long   uflag)   Library   “user32.dll”  


引數1為要頂層顯示的視窗控制代碼,引數2指定顯示的層次,引數7為附加選項,其餘  


引數指定視窗位置和大小,均可忽略。在視窗的Open或Activate事件中加入如下  


函式呼叫:  


SetWindowPos(Handle(This),-1,0,0,0,0,3)  


引數2取-1表示在最頂層顯示視窗,取1表示在最底層顯示;最後一個引數若取1,  


表示視窗大小保持不變,取2表示保持位置不變,因此,取3(=1+2)表示大小和  


位置均保持不變,取0表示將視窗的大小和位置改變為指定值。  




3.   顯示或隱藏Windows的工作列  


要顯示或隱藏工作列,首先要得到它的視窗控制代碼。工作列是一個特殊的視窗,它  


的視窗類為:Shell_TrayWnd,沒有標題,故只能用FindWindowEx函式來取得它的  


控制代碼:  


Function   Long   FindWindowEx(Long   ph,   Long   ch,   ref   String   cn,   ref  


String   wn)   Library   “user32.dll”  


Function   Long   ShowWindow(Long   hWnd,   Long   nCmdShow)   Library   “user32.dll”  


用ShowWindow來顯示或隱藏視窗,其第二個引數為0表示隱藏,為5表示顯示:  


handle   =   FindWindowEx(0,0,”   Shell_TrayWnd”,wn)   //wn為空串  


ShowWindow(handle,0)   //隱藏工作列