怎樣在pb裡實現無標題欄 如何使PB視窗總在最上層 顯示或隱藏Windows的工作列
阿新 • • 發佈:2019-01-01
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) //隱藏工作列