魏永輝
摘要:Visual foxpro是微軟公司開發(fā)的一款數(shù)據(jù)庫開發(fā)設(shè)計語言,用它來開發(fā)數(shù)據(jù)庫既方便又快捷,Visual FoxPro的前身是FoxBase,是在DOS操作系統(tǒng)下運行的一款數(shù)據(jù)庫開發(fā)程序,本文結(jié)合操作系統(tǒng)把程序調(diào)用到系統(tǒng)托盤的具體實現(xiàn)方法進行分析研究。
關(guān)鍵詞:Visual foxpro 系統(tǒng)托盤
中圖分類號:TP311.1 文獻標識碼:A 文章編號:1007-9416(2016)06-0182-01
1 應(yīng)圖標調(diào)用
隨著操作系統(tǒng)的發(fā)展,特別進入Windows NT架構(gòu)之后,數(shù)據(jù)庫的開發(fā)更是豐富多彩起來,本文中,筆者對通過多年來的教學和實踐,由于能力有限,僅對在 Visual foxpro中的開發(fā)中如何使開發(fā)完的程序,最小化到系統(tǒng)右下角的托盤圖標和圖標的響應(yīng)加以分析和解釋說明,望對讀者有所幫助。當我我們在開發(fā)一個程序或者開發(fā)完一個程序,都希望它能夠最小化到系統(tǒng)托盤圖標,那么在Visual foxpro中這個程序需要定義和調(diào)用
2 一些原始的庫函數(shù)文件大致如下
Clear
#Define WM_LBUTTONDBLCLK515
這個屬性其實主要是在WIN32中的API的SetWindowsHookEx中作為參數(shù)來截獲MOUSE的信息.微軟WINDOWS窗口消息.表示左鍵雙擊事件.該消息可由Win32底層函數(shù)PeekMessage和GetMessage取得.#Define WM_RBUTTONUP517
鼠標右鍵彈起
#Define WM_MOUSEMOVE512
定義鼠標滑過時候
#Define NIM_ADD0
鼠標滑過調(diào)用氣泡提示
#Define NIM_MODIFY1
窗口句柄修改
#Define NIM_DELETE2刪除
#Define NIF_MESSAGE1 消息
#Define NIF_ICON2顯示圖標圖片
#Define NIF_TIP4 顯示提示內(nèi)容
3 指定外部共享庫名
其中包含用 FunctionName 指定的函數(shù)。如果為 LibraryName 指定 WIN32API,則 Visual FoxPro 在Kernel32.dll, Gdi32.dll,User32.dll, Mpr.dll, 和 Advapi32.dll 中搜索 32-位 Windows .dll 函數(shù)
Declare integer GetActiveWindow in user32
Declare integer LoadImage in user32 integer, String, integer, integer, integer, integer
Declare integer ExtractIcon in shell32 integer, String, integer
Declare integer Shell_NotifyIcon in shell32 integer, String @
4 定義自己的函數(shù)
那么下面我們就開始定義我們自己的應(yīng)用程序和調(diào)用我們的應(yīng)用程序了,下面是一個實際的例子,可以嵌套自己的應(yīng)用程序
cbSize = 88
HWnd= GetActiveWindow()
uID= 1
uFlags = NIF_MESSAGE + NIF_ICON + NIF_TIP
uCallbackMessage=WM_MOUSEMOVE
hicon=LoadImage(0, “Winupd.ico”, 1, 16, 16, 16) && 可以替換圖標文件
hicon = ExtractIcon(1, “自定義.exe”, 0) && 可以從你自己的exe文件中提取圖標
szTip = padr(“自定義托盤”,64,chr(0))&& 工具提示,控制在 64 個字符內(nèi)
NotifyIconData = NumToDWORD(cbSize) ;
+ NumToDWORD(hWnd) ;
+ chr(uID) + Chr(0) + Chr(0) + Chr(0) ;
+ NumToDWORD(uFlags) ;
+ NumToDWORD(uCallbackMessage) ;
+ NumToDWORD(hIcon) ;
+ szTip
lndel = Shell_NotifyIcon(NIM_DELETE, @NotifyIconData)&&去掉圖標,返回 1 成功
If lndel#1
lnadd = Shell_NotifyIcon(NIM_ADD, @NotifyIconData) &&添加圖標,返回 1 成功
Endif
Clear Dlls
Return
5 函數(shù)的返回
Function NumToDWORD
Lparameter Num
Declare integer RtlMoveMemory in WIN32API as RtlCopyLong string @pDestString, integer @pVoidSource, integer nLength
oLong = SPACE(4)
= RtlCopyLong(@oLong, Bitor(Num,0), 4)
Return oLong
Endfunc
6 結(jié)語
此段程序經(jīng)過筆者調(diào)試,在WINDOWS NT架構(gòu)下是可以穩(wěn)定調(diào)用到系統(tǒng)右下角的托盤圖標的,并且可以實現(xiàn)右鍵菜單的調(diào)用和退出,并且在日常應(yīng)用中有很多實用的應(yīng)用,由于筆者能力有限,還請批評指正。
參考文獻
[1]俞俊軍.VC++6.0中實現(xiàn)將應(yīng)用程序的圖標加入到Windows的系統(tǒng)托盤中[J].電腦編程技巧與維護,2000(07):44-47.
[2]蔣祥剛.在DELPHI中實現(xiàn)系統(tǒng)托盤圖標[J].中文信息,2002(07):55-57.