#define WIN_INCLUDEALL
#include "windows.bi"
#include "fbgfx.bi"
#define WM_SHELLNOTIFY WM_USER + 1
Declare Function NewWindowProc(As HWND,As Uinteger,wParam As WPARAM,lParam As LPARAM) As LRESULT
dim as HWND hWin
Dim shared as WNDPROC OldWindowProc
ScreenRes 640,480,32
WindowTitle "Minimize me, press any key key for quit"
ScreenControl FB.GET_WINDOW_HANDLE,cast(integer,hWin)
OldWindowProc = cptr(WNDPROC,SetWindowLong(hWin,GWL_WNDPROC,cast(DWORD,@NewWindowProc)))
' Set up our notify icon
Dim Shared As NOTIFYICONDATA NID
With NID
.cbSize = SizeOf (NOTIFYICONDATA)
.hWnd = hWin
.hIcon = LoadIcon (NULL, IDI_QUESTION)
.uFlags = NIF_INFO or NIF_MESSAGE or NIF_TIP or NIF_ICON
.uCallbackMessage = WM_SHELLNOTIFY
.szTip = "The Tip"
.szInfoTitle = "The Tile"
.szInfo = "The Info"
End With
sleep
Function NewWindowProc(Byval hWin As HWND, _
Byval Msg As Uinteger, _
Byval wParam As WPARAM, _
Byval lParam As LPARAM) As LRESULT
Dim As RECT rcWindow,rcTray
Dim As HWND hWndTaskBar,hWndTray
Select Case As Const Msg
Case WM_SYSCOMMAND
If wParam = SC_MINIMIZE Then
' Get the system tray's hWnd
hWndTaskBar = FindWindow("Shell_TrayWnd", NULL)
hWndTray = FindWindowEx(hWndTaskBar, 0, "TrayNotifyWnd", NULL)
' Show the notify icon
Shell_NotifyIcon (NIM_ADD, @NID)
' Animate the window closing to the tray
GetWindowRect hWin, @rcWindow
GetWindowRect hwndTray, @rcTray
DrawAnimatedRects hWin, IDANI_CAPTION, @rcWindow, @rcTray
' Hide the window
ShowWindow(hWin, SW_HIDE)
Return False
End If
Case WM_SHELLNOTIFY
If lParam = WM_LBUTTONDBLCLK Then
' Restore the window
ShowWindow (hWin, SW_SHOWMINIMIZED)
SendMessage(hWin, WM_SYSCOMMAND, SC_RESTORE,0)
Shell_NotifyIcon(NIM_DELETE,@NID)
End If
End Select
Return OldWindowProc(hWin, Msg, wParam, lParam)
End Function
2011-04-17
FreeBASIC -- systray
這是為了能夠在windows的system tray做出圖示效果,而找到的範例
訂閱:
張貼留言 (Atom)

沒有留言:
張貼留言