Banyak orang mengira Delphi adalah alat RAD, termasuk saya sendiri, yang dulu bias terhadap Delphi ketika saya masih di sekolah, sekarang saya telah keluar dari "menara gading", itu telah mencakup area yang lebih luas dan menghadapi lebih banyak masalah, dan Saya secara bertahap mendapatkan sudut pandang saya sendiri. Faktanya, Delphi adalah alat pengembangan yang didasarkan pada bahasa Object Pascal, yang berarti Delphi pada dasarnya adalah alat bahasa dan benar-benar berorientasi objek. Contoh yang saya berikan di bawah ini adalah applet tray yang diimplementasikan di Delphi. Program ini singkat dan ringkas, dengan konteks yang jelas. Saya akan menjelaskan bagian-bagian penting secara rinci. Sama seperti Tuan Hou Junjie yang mengupas MFC selapis demi selapis, hari ini saya juga harus "memasak lembunya".
Di Delphi, dalam pemrograman sistem, fungsi API harus dipanggil tanpa pengecualian. Ada prototipe fungsi API yang akan digunakan di unit ShellAPI.pas.
Latihan praktis:
satu. Buat aplikasi baru: File->Aplikasi Baru. Tentukan konstanta pesan di bagian Antarmuka: const WM_NID=WM_USER+1000; Sistem menetapkan bahwa pesan untuk pengguna dapat dikustomisasi mulai dari WM_USER.
dua. Definisikan variabel global: NotifyIcon:TNotifyIconData.NotifyIcon adalah variabel yang sangat penting. Keseluruhan program pada dasarnya berkisar pada variabel ini. TNotifyIconData adalah tipe rekaman. Tahan tombol Ctrl dan klik dua kali TNotifyIconData untuk masuk ke unit ShellAPI.pas. (Catatan: Di Delphi, ini adalah cara yang sangat baik untuk menganalisis kode sumber. Kode sumber berbicara sendiri. Jika Anda ingin mengetahui cerita di balik program, cara terbaik adalah menganalisis kode sumber!) Pada saat ini kali ini, muncul pernyataan Penugasan sebagai berikut:
TNotifyIconData = TNotifyIconDataA, artinya sangat jelas, artinya TNotifyIconData dan TNotifyIconDataA adalah tipe data yang sama, lalu lihat ke bawah:
TNotifyIconDataA = _NOTIFYICONDATAA, artinya sama seperti sebelumnya, lihat ke bawah:
jenis
_NOTIFYICONDATAA = catatan
cbUkuran: DWord;
Arah: HWND;
uID: UINT;
uBendera: UINT;
uCallbackMessage: UINT;
hIkon: HICON;
szTip: array [0..63] dari AnsiChar;
akhir;
Ini benar-benar "keluar setelah dipanggil dalam waktu lama, tapi masih memegang pipa setengah menyembunyikan wajahnya". Sekarang semua orang sudah sangat jelas. Variabel global NotifyIcon yang baru saja kita definisikan sebenarnya adalah variabel tipe rekaman yang berisi 7 komponen, yang setara dengan variabel struktur di C/C++ (pemrogram C/C++ pasti sudah sangat familiar dengannya. ). Mari kita jelaskan fungsi masing-masing dari tujuh bagian tipe record satu per satu.
1> cbSize adalah ukuran variabel NotifyIcon yang Anda tetapkan, yang dapat diperoleh menggunakan SizeOf(TNotifyIconData). Jika Anda seorang programmer C/C++ yang ahli, Anda pasti sudah familiar dengannya. Di C/C++, kapan pun Anda ingin mengalokasikan memori untuk variabel struktur, Anda harus menggunakan SizeOf(Struct type) untuk mengetahui berapa banyak memori yang diperlukan untuk menyimpan variabel struktur tersebut.
2> Wnd adalah sebuah pegangan. Bentuk manakah yang Anda inginkan untuk ditangani oleh pesan yang dihasilkan oleh program baki?
Misalnya: ketika Anda ingin mengklik ikon baki kecil di taskbar untuk mengalihkan formulir antara "tampilkan" dan "sembunyikan", arahkan Wnd ke formulir utama.
3> uID: Jika Anda ingin membuat beberapa applet baki, bagaimana membedakannya? Itu dibedakan dengan nomor ID ini.
3> uFlags adalah bit bendera, yang menunjukkan properti program baki yang sedang dibuat:
NIF_ICON menunjukkan bahwa ikon yang disetel saat ini (yaitu nilai hIcon) valid
NIF_MESSAGE menunjukkan bahwa pesan sistem yang disetel saat ini (yaitu, nilai uCallBackMessage) valid
NIF_TIP menunjukkan bahwa bilah tip yang disetel saat ini (yaitu nilai szTip) valid.
4> uCallBackMessage Ini adalah bagian terpenting di antara 7 bagian. Tentukan pesan panggilan balik di sini, artinya, tentukan nama pesan di sini. Saat Anda mengklik atau mengklik kanan ikon baki, nama pesan yang ditentukan di uCallBackMessage akan dikirim ke formulir yang ditunjuk oleh Wnd, lalu Anda Tentukan a fungsi pesan keluar dalam program untuk memproses pesan ini. Dengan cara ini, seluruh rangkaian pesan yang terkait dengan Windows diproses.
6> hIcon adalah pegangan ikon baki. Berdasarkan pegangan ini, Anda dapat menambah, mengubah, dan menghapus ikon.
7> szTip adalah pesan prompt yang muncul ketika mouse Anda diletakkan pada ikon kecil di baki taskbar.
Di sini saya telah menghabiskan banyak tinta untuk memperkenalkan kisah dalam TNotifyIconData. Setelah bagian ini diklarifikasi, sisanya akan berjalan pada tempatnya.
tiga. Klik dua kali form utama untuk masuk ke area kode FormCreate:
TForm1.FormCreate(Pengirim:TObject);
Mulai
//NotifyIcon adalah variabel global dan telah ditentukan di awal program
dengan NotifyIcon lakukan
mulai
cbSize:=Ukuran(TNotifyIconData);
Wnd:=Menangani; //Menangani menunjuk ke formulir saat ini Form1
uID:=1;
uBendera:=NIM_ICON atau NIM_MESSAGE atau NIM_TIP;
uCallBackMessage:=WM_NID;
hIcon:=aplikasi.Ikon.Pegangan;
szTip:=”Pemuda jahat dari keluarga Zhang”;
akhir;.
//Tambahkan variabel set NotifyIcon ke sistem untuk diproses
Shell_NotifyIcon(NIM_ADD,@NotifyIcon);
Akhir;
Empat. Langkah selanjutnya adalah mendefinisikan fungsi pemrosesan pesan: ketika sistem mengirimkan pesan ke formulir, pesan tersebut diproses oleh fungsi berikut. Setiap fungsi pemrosesan pesan memproses jenis pesan tertentu. Silakan lihat lebih dekat perbedaan antara definisi isi fungsi di bawah ini dan definisi fungsi umum: fungsi pemrosesan pesan harus menambahkan nama pesan di akhir, sehingga ketika sistem mengirim Ketika pesan WM_NID datang, fungsi pemrosesan pesan WMNID terpicu secara otomatis.
Prosedur WMNID(var msg:TMessage);pesan WM_NID;
mulai
pesan kasus.LParam dari
WM_LBUTTONUp; Formulir1.Terlihat:=bukan Formulir1.Terlihat;
WM_RBUTTONUP: ShowMessage('Anda mengklik tombol kanan');
Akhir;
Akhir;
Nah, program paling sederhana telah lahir. Setiap orang dapat mengatur ikon favoritnya.
Project->Options, pilih halaman Aplikasi, dan muat ikon favorit Anda di item Ikon, sehingga ketika program sedang berjalan, ikon favorit Anda akan ditampilkan di taskbar. Ketika Anda mengklik ikon tersebut, formulir Form1 akan beralih antara terlihat dan tidak terlihat, artinya, klik untuk menampilkannya dan klik lagi untuk menyembunyikannya. Saat Anda mengklik kanan ikon tersebut, sebuah pesan muncul: "Anda mengklik tombol kanan."
lima. Terakhir, ingatlah untuk melepaskan program baki yang dibuat saat menutup aplikasi, jika tidak maka akan menghabiskan sumber daya sistem.
TForm1.FormDestroy(Pengirim:TObject);
Mulai
Shell_NotifyIcon(NIM_DELETE,@NotifyIcon);
Akhir;
Sudah hampir setengah tahun sejak saya lulus, saya masih belum bisa memahami banyak hal di sekolah dan pemahaman saya kurang mendalam. Ketika saya terjun ke masyarakat, saya telah bertemu banyak teman Tao dan saya mendapat banyak manfaat Saat saya mempunyai pengalaman, saya selalu ingin menuliskannya dengan kata-kata untuk merangkum apa yang telah saya pelajari. Kedua, mari berkomunikasi dengan semua orang.
E_Mail: [email protected] QQ: 8133413 Bocah nakal dari keluarga Zhang