VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

SetWindowLong函數怎麼改寫為BINDEVENT

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
gino1725



註冊時間: 2009-02-24
文章: 3


第 1 樓

發表發表於: 星期四 三月 05, 2015 9:49 am    文章主題: SetWindowLong函數怎麼改寫為BINDEVENT 引言回覆

請教先進,

下列這二段VB的語法,如何改寫為VFP的語法?
preWinProc = GetWindowLong(Me.HWnd,GWL_WNDPROC)
ret = SetWindowLong(Me.HWnd,GWL_WNDPROC,AddressOf wndProc)

SetWindowLong()是要用BINDEVENT()函數改寫嗎?
應該怎麼改?

感謝!!!
回頂端
檢視會員個人資料 發送私人訊息
oldbb



註冊時間: 2007-02-28
文章: 83


第 2 樓

發表發表於: 星期四 三月 05, 2015 10:35 am    文章主題: 引言回覆

ret = SetWindowLong(Me.HWnd,GWL_WNDPROC,AddressOf wndProc)
關鍵在 AddressOf wndProc,wndProc 是要替換的視窗過程,傳入SetWindowLong()的是wndProc的地址(函數指針)。
VFP寫的過程函數是動態解釋執行,沒有靜態地址,不能直接作爲SetWindowLong()的wndProc使用,只能借助其他編程語言(如ASM、C++)寫的過程(函數)來調用VFP的過程。如用嵌入二進制內碼(匯編碼)或寫動態擴展庫DLL,就可以在其他語言寫的過程(函數)中調用VFP,或者通過VFP寫的COM服務調用VFP的過程(函數)。
回頂端
檢視會員個人資料 發送私人訊息
oldbb



註冊時間: 2007-02-28
文章: 83


第 3 樓

發表發表於: 星期四 三月 05, 2015 10:39 am    文章主題: 引言回覆

如果只是針對本進程的某些消息處理,可通過視窗的hWnd用BINDEVENT()綁定消息。
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作