Jendela program;
{
Ini adalah contoh membuat aplikasi
tanpa menggunakan unit formulir. Forms.pas adalah
Unit delphi yang membuat program Anda sangat
sangat besar! Forms.pas memiliki semua kode untuk menerjemahkan
Formulir yang Anda buat dengan Delphi dengan komponen
ke windows. Jika Anda bertanya kepada saya, apa pun yang menambahkan
200k (@%#$!) Ke aplikasi Anda pasti
Kode yang tidak efisien.
Gordy <[email protected]>
www.jps.net/gfody
}
menggunakan windows, pesan;
{$ R *.res}
var
WClass: Twndclass; // class struct untuk jendela utama
hfont, // pegangan font
hinst, // pegangan program (hinstance)
Menangani, // pegangan jendela utama
hencrypt, // pegangan tombol enkripsi
hdecrypt, // pegangan tombol dekripsi
hedit, // pegangan edit utama
hlabel, // menangani label kata sandi
HPW: hwnd; // menangani edit kata sandi
MSG: TMSG; // pesan struct
Dencrypt,
ddecrypt: pointer; // Prosedur tombol default
(*------------------------------------------------ *)
// ini mengantre semuanya
Ubah Ukuran Prosedur;
var
RCT: Trect;
mulai
GetWindowrect (handle, rct);
MoveWindow (HPW, 230,5, RCT.RIGHT-RCT.LEFT-245,24, true);
MoveWindow (hedit, 5,34, rct.right-rct.left-20, rct.bottom-rct.top-66, true);
akhir;
(*------------------------------------------------ *)
// Ini untuk membersihkan dan menghentikan program
shutdown prosedur;
mulai
DeleteObject (hfont);
Unregisterclass ('Contoh Kelas', Hinst);
ExitProcess (Hinst); // program akhir
akhir;
(*------------------------------------------------ *)
// mendekripsi teks dengan hedit dengan teks di hpw
Dekripsi Prosedur;
var
x, i, // menghitung variabel
Stext, SPW: Integer; // Ukuran teks, PW
Teks, pw: pchar; // buffer untuk teks, pw
mulai
stext: = getWindowTextLength (hedit) +1;
SPW: = getWindowTextLength (hpw) +1;
GetMem (teks, steks);
GetMem (PW, SPW);
GetWindowText (hedit, teks, stext);
GetWindowText (HPW, PW, SPW);
x: = 0; // inisialisasi jumlah
untuk i: = 0 ke stex-2 lakukan
mulai
Teks [i]: = chr (ord (teks [i])-ord (pw [x]));
Inc (x);
jika x = (spw-1) maka x: = 0;
akhir;
SetWindowText (hedit, teks);
Freemem (teks);
Freemem (PW);
akhir;
(*------------------------------------------------ *)
// Mengenkripsi teks dalam hedit dengan teks di hpw
enkripsi prosedur;
var
x, i, // menghitung variabel
Stext, SPW: Integer; // Ukuran teks, PW
Teks, pw: pchar; // buffer untuk teks, pw
mulai
stext: = getWindowTextLength (hedit) +1;
SPW: = getWindowTextLength (hpw) +1;
GetMem (teks, steks);
GetMem (PW, SPW);
GetWindowText (hedit, teks, stext);
GetWindowText (HPW, PW, SPW);
x: = 0; // inisialisasi jumlah
untuk i: = 0 ke stex-2 lakukan
mulai
Teks [i]: = chr (ord (teks [i])+ord (pw [x]));
Inc (x);
jika x = (spw-1) maka x: = 0;
akhir;
SetWindowText (hedit, teks);
Freemem (teks);
Freemem (PW);
akhir;
(*------------------------------------------------ *)
// Fungsi ini memproses setiap pesan yang dikirim ke tombol Encrypt
function encryptProc (hwnd, msg, wparam, lparam: longint): longint; stdcall;
var
I: Integer;
mulai
// Selalu lulus pesan ke prosedur default
Hasil: = CallWindowProc (Dencrypt, HWND, MSG, WPARAM, LPARAM);
msg kasus
// Jika pengguna menekan tab kami, Gunna beralih
// Fokus ke tombol Dekripsi.
Wm_keydown: jika wParam = 9 maka setFocus (hdecrypt);
akhir;
akhir;
(*------------------------------------------------ *)
// Fungsi ini memproses setiap pesan yang dikirim ke tombol Decrypt
fungsi dekriprok (hwnd, msg, wparam, lparam: longint): longint; stdcall;
mulai
// Selalu lulus pesan ke prosedur default
Hasil: = CallWindowProc (Dencrypt, HWND, MSG, WPARAM, LPARAM);
msg kasus
// Jika pengguna menekan tab kita gunna sakelar
// Fokus kembali ke tombol enkripsi.
Wm_keydown: jika wParam = 9 maka setFocus (hencrypt);
akhir;
akhir;
(*------------------------------------------------ *)
// Fungsi ini memproses setiap pesan yang dikirim ke jendela utama kami
Fungsi WindowProc (HWND, MSG, WPARAM, LPARAM: Longint): Longint; stdcall;
mulai
// Selalu lulus pesan ke prosedur default
Hasil: = DefWindowProc (HWND, MSG, WPARAM, LPARAM);
msg kasus
Wm_size: mengubah ukuran;
// Saat tombol diklik, pesan dilewati
// Jendela induk, jadi kami menanganinya di sini.
WM_COMMAND: Jika lParam = hencrypt lalu enkripsi
lain jika lParam = hdecrypt lalu dekripsi;
Wm_destroy: shutdown;
akhir;
akhir;
(*------------------------------------------------ *)
// Ini adalah fungsi program utama (WinMain)
mulai
hinst: = getModuleHandle (nil); // Dapatkan contoh aplikasi
// Hinstance mengembalikan zilch
dengan wclass lakukan
mulai
Gaya: = cs_parentdc;
hicon: = Loadicon (Hinst, 'Mainicon');
lpfnwndproc: = @windowproc;
Hinstance: = Hinst;
HBRBackground: = color_btnface+1;
LPSZClassName: = 'Kelas Sampel';
hcursor: = loadCursor (0, idc_arrow);
akhir;
// Setelah kelas kami terdaftar kami
// bisa mulai membuat windows dengan itu
RegisterClass (WClass);
// Buat jendela utama kami
Menangani: = createWindow (
'Contoh kelas', // Nama kelas terdaftar
'Encrypter - oleh: Gordy', // judul jendela
Ws_overlappedwindow atau // gaya jendela dasar
Ws_visible, // membuatnya terlihat
10, // Kiri
10, // Top
400, // Lebar
300, // tinggi
0, // pegangan jendela induk
0, // pegangan menu
hinst, // contoh aplikasi
nol); // Struktur untuk Data Pembuatan
// Buat tombol enkripsi
hencrypt: = createWindow (
'Tombol',
'Mengenkripsi',
Ws_visible atau ws_child atau bs_push atau bs_text,
5,5,65,24, pegangan, 0, hinst, nil);
// Buat tombol Dekripsi
hdecrypt: = createWindow (
'Tombol',
'Dekripsi',
Ws_visible atau ws_child atau bs_push atau bs_text,
75,5,65,24, pegangan, 0, hinst, nil);
// Buat edit utama
hedit: = createWindowex (
Ws_ex_clientedge, // gaya mantan ini untuk tepi miring
'Edit',
'',
Ws_visible atau ws_child atau es_left atau es_multiline atau es_wantreturn atau es_autovscroll atau ws_vscroll,
5,34.380.234, pegangan, 0, Hinst, nil);
// Buat edit kata sandi
hpw: = createWindowex (
Ws_ex_clientedge,
'Edit',
'',
Ws_visible atau ws_child atau es_left atau es_autohscroll atau es_password,
230,5,155,24, pegangan, 0, hinst, nil);
hlabel: = createWindow (
'Statis',
'Kata sandi:',
Ws_visible atau ws_child atau ss_left,
160,10,70,20, pegangan, 0, hinst, nil);
// Buat font khusus untuk jendela kami
// Semuanya akan menggunakan font sistem (Blech!)
hfont: = createFont (
-12, // tinggi
0, // Lebar
0, // sudut rotasi
0, // orientasi
0, // Berat
0, // Italic
0, // Garis bawahi
0, // menyerang
Default_charset, // set char
Out_default_precis, // precision
Clip_default_precis, // kliping
Default_quality, // render kualitas
Default_pitch atau ff_dontcare, // pitch & family
'Ms Sans Serif'); // Nama Font
// Atur font untuk semua kontrol kami
SendMessage (hencrypt, wm_setfont, hfont, 0);
SendMessage (hdecrypt, wm_setfont, hfont, 0);
SendMessage (hedit, wm_setfont, hfont, 0);
SendMessage (hpw, wm_setfont, hfont, 0);
SendMessage (hlabel, wm_setfont, hfont, 0);
// Tombol Enkripsi Subclass (Tetapkan WindowProc khusus)
Dencrypt: = pointer (getWindowlong (hencrypt, gwl_wndproc));
SetWindowlong (hencrypt, gwl_wndproc, longint (@encryptproc));
// Tombol Dekripsi Subkelas
ddecrypt: = pointer (getWindowlong (hdecrypt, gwl_wndproc));
SetWindowlong (hdecrypt, gwl_wndproc, longint (@decryptproc));
// Alasan saya tidak menagih kontrol edit di sini
// karena mereka tidak melakukan apa pun. Jika saya mau
// mereka berbunyi bip atau sesuatu setiap kali Anda mengetik "g" lalu
// Saya akan mensubkilinya.
// fokus pada kontrol pertama (jika tidak, orang tanpa mouse kacau)
SetFocus (hencrypt);
// Sekarang kami loop getMessage untuk memproses setiap pesan masuk
// Daftar pesan jendela utama kami. Setiap kali utama
// jendela menerima pesan yang ditambahkan ke daftar, jadi
// Loop ini di sini akhirnya akan memprosesnya.
while (getMessage (msg, handle, 0,0)) lakukan
mulai
TranslateMessage (msg); // Terjemahkan MSG keyboard apapun
DispatchMessage (MSG); // kirim ke windowproc kami
akhir; // untuk diproses.
akhir.