  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		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()綁定消息。 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |