程式視窗;
{
這是製作申請的示例
不使用表單單元。 forms.pas是
使您的程序如此該死的Delphi單位
巨大的! forms.pas具有翻譯的所有代碼
您使用delphi w/組件創建的表單
進入窗戶。如果你問我,任何添加的東西
您應用的200k(@%#$!)必須是該死的
效率低下的代碼。
gordy <[email protected]>
www.jps.net/gfody
}
使用窗口,消息;
{$ r *.res}
var
WCLASS:TWNDCLASS; //主窗口的類結構
hfont,//字體手柄
hinst,//程序手柄(hinstance)
手柄,//主窗口的手柄
Hencrypt,//加密按鈕的手柄
hdecrypt,//解密按鈕的手柄
Hedit,//主編輯的手柄
hlabel,//密碼標籤的手柄
hpw:hwnd; //密碼編輯的處理
MSG:TMSG; //消息結構
Dencrypt,
ddeCrypt:指針; //默認按鈕過程
(*------------------------------------------------ --------------------------- *)
//這一切都排在
程序大小;
var
RCT:TRECT;
開始
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);
結尾;
(*------------------------------------------------ --------------------------- *)
//這是為了清理並停止程序
程序關閉;
開始
deleteObject(hfont);
UnregisterClass(“樣本類”,HINST);
ExitProcess(Hinst); //結束程序
結尾;
(*------------------------------------------------ --------------------------- *)
//用hpw中的文字在hedit中解密文本
程序解密;
var
x,i,//計數變量
Stext,SPW:整數; //文字的大小,PW
文字,PW:PCHAR; //文本緩衝區,PW
開始
Stext:= getWindowTextLength(Hedit)+1;
spw:= getWindowTextLength(hpw)+1;
getMem(文字,sext);
GetMem(PW,SPW);
getWindowText(hedit,text,stext);
getWindowText(HPW,PW,SPW);
X:= 0; //初始化計數
對於我:= 0 to sext-2做
開始
text [i]:= chr(ord(text [i]) - ord(pw [x]));
Inc(x);
如果x =(spw-1),則x:= 0;
結尾;
setWindowText(hedit,text);
freemem(文字);
Freemem(PW);
結尾;
(*------------------------------------------------ --------------------------- *)
//用hpw中的文字加密文本
程序加密;
var
x,i,//計數變量
Stext,SPW:整數; //文字的大小,PW
文字,PW:PCHAR; //文本緩衝區,PW
開始
Stext:= getWindowTextLength(Hedit)+1;
spw:= getWindowTextLength(hpw)+1;
getMem(文字,sext);
GetMem(PW,SPW);
getWindowText(hedit,text,stext);
getWindowText(HPW,PW,SPW);
X:= 0; //初始化計數
對於我:= 0 to sext-2做
開始
text [i]:= chr(ord(text [i])+ord(pw [x]));
Inc(x);
如果x =(spw-1),則x:= 0;
結尾;
setWindowText(hedit,text);
freemem(文字);
Freemem(PW);
結尾;
(*------------------------------------------------ --------------------------- *)
//此功能處理髮送到加密按鈕的每個消息
函數EncryptProc(HWND,MSG,WPARAM,LPARAM:LONGINT):longint; stdcall;
var
我:整數;
開始
//始終將消息傳遞給默認過程
結果:= CallwindowProc(Dencrypt,HWND,MSG,WPARAM,LPARAM);
案例msg
//如果用戶按下選項卡,則是Gunna開關
//專注於解密按鈕。
wm_keydown:如果wparam = 9,則setFocus(hdecrypt);
結尾;
結尾;
(*------------------------------------------------ --------------------------- *)
//此功能處理髮送到“解密”按鈕的每個消息
功能DecryptProc(HWND,MSG,WPARAM,LPARAM:LONGINT):longint; stdcall;
開始
//始終將消息傳遞給默認過程
結果:= CallwindowProc(Dencrypt,HWND,MSG,WPARAM,LPARAM);
案例msg
//如果用戶按下標籤,則是Gunna Switch
//將重點返回到加密按鈕。
wm_keydown:如果wparam = 9,則setFocus(hencrypt);
結尾;
結尾;
(*------------------------------------------------ --------------------------- *)
//此功能處理髮送到我們主窗口的每個消息
函數窗口Proc(HWND,MSG,WPARAM,LPARAM:LONGINT):longint; stdcall;
開始
//始終將消息傳遞給默認過程
結果:= DefwindowProc(HWND,MSG,WPARAM,LPARAM);
案例msg
wm_size:resize;
//單擊按鈕時,消息將傳遞給
//父窗口,因此我們在這里處理。
wm_command:如果lparam = hencrypt然後加密
否則,如果lparam = hdeCrypt,則解密;
WM_DESTROY:關閉;
結尾;
結尾;
(*------------------------------------------------ --------------------------- *)
//這是主要程序功能(Winmain)
開始
hinst:= getModuleHandle(nil); //獲取應用程序實例
// hinstance返回Zilch
與wclass做
開始
樣式:= cs_parentDC;
HICON:= Lotalicon(Hinst,“ Mainicon”);
lpfnwndproc:= @windowproc;
hinstance:= hinst;
hbrbackground:= color_btnface+1;
lpszclassname:='示例類';
HCursor:= loadCursor(0,IDC_ARROW);
結尾;
//一旦我們的班級註冊,我們
//可以開始用它製作窗口
RegisterClass(WCLASS);
//創建我們的主窗口
句柄:= createWindow(
“樣本類”,//註冊的類名稱
'Encrypter-作者:Gordy',// Window的標題
ws_overlappedwindow或//基本窗口樣式
ws_visible,//使其可見
10,//左
10,//頂部
400,//寬度
300,//高度
0,//父窗口句柄
0,//菜單的手柄
hinst,//應用程序實例
零); //創建數據的結構
//創建加密按鈕
hencrypt:= createwindow(
'按鈕',
'加密',
ws_visible或ws_child或bs_pushlike或bs_text,
5,5,65,24,句柄,0,Hinst,nil);
//創建解密按鈕
hdecrypt:= createwindow(
'按鈕',
“解密”,
ws_visible或ws_child或bs_pushlike或bs_text,
75,5,65,24,句柄,0,Hinst,nil);
//創建主編輯
hedit:= createWindowex(
WS_EX_CLIENTEDGE,//此EX樣式適用於斜面邊緣
'編輯',
'',,
ws_visible或ws_child或es_left或es_multiline或es_wantreturn或es_autovscroll或ws_vscroll,
5,34,380,234,句柄,0,hinst,nil);
//創建密碼編輯
hpw:= createWindowex(
WS_EX_CLIENTEDGE,
'編輯',
'',,
ws_visible或ws_child或es_left或es_autohscroll或es_password,
230,5,155,24,句柄,0,hinst,nil);
hlabel:= createwindow(
'靜止的',
'密碼:',
ws_visible或ws_child或ss_left,
160,10,70,20,句柄,0,Hinst,nil);
//為我們的窗口創建自定義字體
//所有內容都會使用系統字體(BLECH!)
hfont:= createfont(
-12,//高度
0,//寬度
0,//旋轉角度
0,//方向
0,//重量
0,//斜體
0,//下劃線
0,//罷工
default_chareet,// char集
OUT_DEFAULT_PRECIS,//精確
clip_default_precis,//剪輯
default_quality,//渲染質量
default_pitch或ff_dontcare,//俯仰和家庭
'Sans Serif女士'); //字體名稱
//為我們所有控件設置字體
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);
//子類加密按鈕(分配自定義WindowProc)
Dencrypt:=指針(getwindowlong(Hencrypt,gwl_wndproc));
setWindowlong(Hencrypt,GWL_WNDProc,longint(@encryptProc));
//子類解密按鈕
ddeCrypt:= pointer(getwindowlong(hdecrypt,gwl_wndproc));
setWindowlong(hdecrypt,gwl_wndproc,longint(@decryptproc));
//我不在此處的編輯控件的原因
//是因為他們不做任何習慣。如果我想要
//每當您鍵入“ G”時,它們會發出嗶嗶聲或
//我會亞級。
//專注於第一個控制(否則沒有鼠標的人會被擰緊)
setFocus(hencrypt);
//現在我們循環getMessage處理每個消息
//我們主窗口的消息列表。每次主要
//窗口將其添加到列表中的消息,所以
//此循環最終將處理它。
while(getMessage(msg,hander,0,0))
開始
TranslateMessage(msg); //翻譯任何鍵盤MSG
dispatchMessage(msg); //將其發送到我們的WindowProc
結尾; //用於處理。
結尾。