|
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
garfield Site Admin
註冊時間: 2003-01-30 文章: 2157
第 1 樓
|
發表於: 星期三 六月 18, 2003 8:43 pm 文章主題: 閃爍windows視窗 |
|
|
用不到幾行程式碼
**************************************************
*-- Class: flashwindow (c:\tools.vcx)
*-- ParentClass: timer
*-- BaseClass: timer
*-- Time Stamp: 06/18/03 12:45:03 PM
* 用法, 在FORM中加入本物件, 要閃爍時 . thisform.flashwindow1.flash( .t. ) , 結束閃爍傳給它 .f. .
DEFINE CLASS flashwindow AS timer
Height = 23
Width = 23
Name = "flashwindow"
*-- 先在FORM建立的時候就先記錄這個FORM的hwnd
hwnd = 0
PROCEDURE flash
lpara mstat
this.interval = iif( mstat , 1000, 0 )
ENDPROC
PROCEDURE Init
DECLARE INTEGER GetActiveWindow IN user32
DECLARE INTEGER GetFocus IN user32
declare integer FlashWindow in user32.dll integer hwnd, integer bInvert
this.hwnd = GetFocus()
* HWnd = GetFocus()
*hdc = GetWindowDC(hwnd)
ENDPROC
PROCEDURE Timer
*FlashWindow(GetActiveWindow(), 1)
FlashWindow( this.hwnd , 1)
this.interval = max( 100 , this.interval - 50 ) &&--讓它越閃越快.
ENDPROC
ENDDEFINE
*
*-- EndDefine: flashwindow
************************************************** _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
|
Ruey
註冊時間: 2003-03-12 文章: 1698 來自: tunglo
第 2 樓
|
發表於: 星期四 六月 19, 2003 12:00 pm 文章主題: |
|
|
如果有螢幕保護的功能會更加理想
螢幕保護的功能,目前我還在構思中 _________________ #############################
快樂媽咪系列幸福宅配,喝十全雞湯~原來幸福那麼簡單!!
學會VFP使用者社區的搜尋,Code才會更有趣~
############################# |
|
回頂端 |
|
|
garfield Site Admin
註冊時間: 2003-01-30 文章: 2157
第 3 樓
|
發表於: 星期二 六月 24, 2003 10:10 am 文章主題: |
|
|
像我在設計FORM時, 每個object皆是使用自行設計的CLASS, 所在設計螢幕保護程式是輕而易舉, 只要加個timer , 在每個object 的 getFocus(), LostFocus() 去做一些未動作時間的COUNTER 就可以了. _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
|
Ruey
註冊時間: 2003-03-12 文章: 1698 來自: tunglo
第 4 樓
|
發表於: 星期二 六月 24, 2003 10:52 am 文章主題: |
|
|
我的做法如下,但還未完備
程式開始處
PUBLIC mOldBackColor,mNumOld,mnCount
PUBLIC gnScreenCount, gnX, gnY &&滑鼠
LOCAL nHandle,sqlCommand
DODEFAULT()
*!*取得螢幕保護程式所需API宣告
DECLARE INTEGER GetFocus IN user32
DECLARE INTEGER GetCursorPos IN user32 STRING @lpPoint
DECLARE INTEGER DragDetect IN user32;
INTEGER hwnd, STRING @pt
DECLARE INTEGER GetAsyncKeyState IN user32 INTEGER vKey
*mOldBackColor=RGB(0,128,128)
mNumOld=1
mnCount=0
gnScreenCount=0
gnX=0
gnY=0
= getMousePos (@gnX, @gnY)
Timer物件Timer事件
LOCAL lnX,lnY
*!*螢幕保護程式
= getMousePos (@lnX, @lnY)
IF lnX==gnX AND lnY==gnY &&滑鼠不動作時
IF LASTKEY()<>0
gnScreenCount=0
ELSE
gnScreenCount=gnScreenCount+1
ENDIF
ELSE
IF gnScreenCount>100
DO FORM frmScreenSaver
ENDIF
gnScreenCount=0
ENDIF
= getMousePos (@gnX, @gnY) |
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|