作者cole945 (躂躂..)
看板Visual_Basic
標題Re: [API] 整人的mouse_event
時間Wed Jul 23 01:24:59 2008
※ 引述《saininniang (莎里奈)》之銘言:
: 不是大多數都 FUNCTION (XX,XX,XX)嗎
: 怎麼會有 FUNCTION XX,XX,XX 的寫法?
在 VB.NET 之前言的 BASIC 語言,
應該是 Sub 不加 ( ), function 才要加 ( )
雖然說, 呼叫 "只有一個參數" 的 Sub 也可以加 ( ),
但意義完成不同..
例如
print a
與 print (a)
後者其實會去重新演算(evaluate) 括號中的 expression,
產生一個暫時變數後才再過去, 在想傳 BeRef 修改 a 值是,
會得到錯誤的結果..
因為你的 mouse_event 是 sub, 所以不加 ()
(x,x,x,x) 本生沒辦法演算, 所以編譯時就會產生語法錯誤..
: 2.
: 是用1,2,4,8,16,32,64....
: 為什麼阿?
: 連mdsn上也沒寫可以這樣用
: 為什麼API這麼難用?
恐怕應該說, 其實是 VB 難用, 不是 API 難用 :X
因為這個 API 打從一開始就是給 C/C++ 用的,
你有注意到文末的
Header Declared in Winuser.h, include Windows.h
嗎?
對一個 C/C++ 的user, 他想要呼叫 mouse_event ,
只需要
#include <Windows.h>
就可以呼叫 mouse_event 了, 不需要 ``declare'' 你在 1. 講的東西..
而且也可以直接套用 MOUSEEVENTF_ABSOLUTE 等等參數..
因為這些東西都已經寫在 windows.h(或說winuser.h) 裡了,
而為什麼可以用 1,2,4,8,16,32 傳?
那是因為 MOUSEEVENTF_ABSOLUTE 這些東西說穿了就只是些整數值啊..
寫成這個樣子,在撰寫、維護、移植 才會比較方便..
光看一個 16 誰知道是什麼意思..
要的話, 你也可以把這些 flags 自己重訂成常數再用, 也是一樣的意思..
: 而且還搞怪,連API使用方法都不一致
這應該是你對 API 不熟所造成的錯覺吧 @@"
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.74.113.211
推 saininniang:感謝,我解了解 07/23 02:19
推 yauhh:說明得真好 07/24 02:11