Fungsi panggilan balik dan kegunaannya
1 Ikhtisar fungsi panggilan balik
Fungsi panggilan balik adalah mekanisme di mana pemanggil meneruskan beberapa parameter ke objek saat menginisialisasi suatu objek (objek di sini mengacu pada objek dalam OOP, fungsi global, dll.), dan pada saat yang sama meneruskan fungsi yang dapat diakses oleh pemanggil. . Alamat diteruskan ke objek. Fungsi ini merupakan perjanjian pemberitahuan antara pemanggil dan penerima panggilan. Ketika peristiwa yang disepakati terjadi, penerima panggilan (biasanya termasuk thread yang berfungsi) akan memanggil fungsi sesuai dengan alamat fungsi panggilan balik.
Dengan cara ini, penelepon berada di satu thread dan yang dipanggil berada di thread lain. Pesan: Pesan juga dapat dianggap sebagai suatu bentuk panggilan balik, karena pesan tersebut juga diteruskan oleh penelepon ke pihak yang dipanggil selama inisialisasi Sebuah pegangan dan nomor pesan, pihak yang dipanggil mengirimkan pesan ke penelepon ketika peristiwa yang disepakati terjadi.
Dengan cara ini, pemanggil berada di thread utama dan callee berada di thread utama atau thread pekerja. Model acara Delphi:
Ada banyak komponen visual di VCL Delphi yang menggunakan model event, seperti event OnCreate TForm. Prinsipnya adalah: tentukan fungsi event pada waktu desain, dan ketika event dipicu saat runtime, fungsi event yang ditentukan pada waktu desain akan dipanggil. . Secara mekanis, model event Delphi sama dengan callback. Namun, ada beberapa perbedaan dalam bentuk tertentu. Fungsi panggilan balik murni dalam bentuk fungsi global, sedangkan peristiwa Delphi dalam bentuk metode objek. Artinya, jenis fungsi panggilan balik berikut dapat didefinisikan: tipe TCallBackFunc = Prosedur (pData: Pointer) objek;
2 Petunjuk untuk menggunakan fungsi panggilan balik
Fungsi panggilan balik terutama digunakan dalam dua situasi. Yang pertama adalah bahwa beberapa API Windows memerlukan fungsi panggilan balik sebagai alamat parameternya, dan yang lainnya adalah bahwa fungsi yang ditentukan oleh pengguna pada kesempatan tertentu memerlukan fungsi panggilan balik sebagai alamat parameternya , untuk fungsi yang ditentukan pengguna, umumnya digunakan saat memanggil fungsi di pustaka tautan dinamis. Ada beberapa langkah utama dalam menggunakan fungsi callback: 1. Mendefinisikan jenis fungsi callback tidak berbeda dengan definisi proses fungsi pada umumnya, namun definisinya harus memenuhi persyaratan fungsi fungsi callback sesuai kebutuhan dalam Definisi suatu fungsi atau prosedur harus diikuti dengan deklarasi bahwa itu adalah panggilan standar Windows; misalnya: typeTHDFunction= function(I:integer;s:string):stdcall; THDProcedure=prosedur(s:string); stdcall;2. Kemudian tentukan fungsi atau proses yang sesuai berdasarkan prototipe ini. Tidak ada persyaratan untuk nama fungsi atau proses ini. Jenis parameter fungsi dan jenis nilai yang dikembalikan harus sepenuhnya konsisten dengan panggilan balik yang ditentukan tipe fungsi. Untuk Untuk prosedur, hanya perlu tipe parameter yang sama. Contoh: Tentukan fungsi terkait dan proses terkait berdasarkan prototipe fungsi dan proses di atas. Definisi prototipe fungsi: Fungsi HdFunExample(k:integer,sExam:string):integer; stdcall; Definisi proses: procedure HdProExample(sExam:string);stdcall; integer,sExam:string):integer; stdcall;BeginEnd;prosedur HdProExample(sExam:string);stdcall;beginend; 4. Proses pemanggilan; fungsi panggilan balik umumnya digunakan sebagai alamat masuk dari fungsi tertentu dalam sistem; fungsi: function DyHdFunExample(HdFun:THDFunction;I: integer):boolean; Dalam fungsi pemanggilan, fungsi panggilan balik dapat langsung dipanggil dengan memproses penunjuk fungsi (yaitu, parameter dalam fungsi pemanggilan adalah parameter jenis fungsi panggilan balik, dan dioperasikan secara langsung), sehingga fungsi panggilan balik tersebut melakukan operasi tertentu. Artinya, fungsi fungsi panggilan balik diimplementasikan dalam fungsi panggilan. Panggilan: varI:integer;beginI:=DyHdFunExample(@HdFunExample,i);//…….End;
3 Contoh
Contoh program berada di direktori H:/contoh fungsi panggilan balik/. Penggunaan fungsi panggilan balik terutama terletak pada fungsi API asli Windows, tetapi fungsi panggilan yang ditentukan pengguna umumnya terletak di pustaka tautan dinamis. Secara umum, tidak perlu menggunakan fungsi panggilan balik dalam proyek yang sama. (Menurut saya pribadi)...