classes單元的allocatehwnd函式是需要傳入乙個處理訊息的類的方法的作為引數的,原型:
function allocatehwnd(method: twndmethod): hwnd;很多時候,我們想要建立乙個視窗,而又不想因為這個引數而建立乙個類,怎麼辦?
換句話說,就是能不能使傳入的引數是個普通的函式而不是類的方法呢?答案是肯定的!
看看twndmethod的宣告:
type實際上類的方法在執行時,總是傳入了物件這個引數。twndmethod = procedure(var message: tmessage) of
object;
即此方法共傳了兩個引數,根據delphi預設的registry呼叫約定,暫存器eax傳遞物件,edx傳遞message結構變數。
因此我們可以宣告處理訊息的函式的型別:
type我們自定義myallocatehwnd函式以接收這個型別的引數,內部呼叫allocatehwnd:tmywndproc = procedure(aobject: tobject; var message: tmessage);
function如果直接呼叫allocatehwnd(proc)是不能通過編譯的!myallocatehwnd(proc: tmywndproc): hwnd;
asmpush
0// aobject
push proc// message
call allocatehwnd
end;
讓 Edit 只接受數字《轉》
方法1 proceduretform1.edit1keypress sender tobject varkey char begin ifnot keyin 0 9 then key chr 0 end 方法2 proceduretform1.edit1keypress sender tobject...
色誘 讓我接受了問卷調查
今天去4s店做車保養,在等師傅洗車的過程中感覺好無聊。雖然4s店有很多的時尚雜誌 也有電視 電腦上網,但因我想早點回單位有事,所以什麼也不想玩,只想快點等事情辦好。4s店的服務一貫很好,真的是搞得自己都有點不習慣他們那種過度的客氣。在我正感到無聊時,一位靚女過來幫我添茶。本來有點疲倦的眼一下精神了很...
如何讓年輕員工樂於接受批評
很多ceo抱怨,現在剛畢業的年輕員工,都是獨生子女,從小嬌生慣養,屬於 老虎的屁股摸不得 稍微批評一下都立馬火冒三丈,甚至馬上辭職。我很認同這些ceo的觀點。現在的年輕人當中的確普遍存在這種情況。但是,既然是乙個普遍現象,那競爭對手也會在用人方面碰到同樣的問題,所以,也不用過分煩惱。既然無法改變這個...