// เทมเพลต -------- byhottey2004-4-13-0: 18 //
// เว็บไซต์ของผู้แต่ง: http://asp.itdrp.com/hottey //
Programdelphi;
ใช้
หน้าต่าง
ข้อความ;
const
HelloStr = 'HelloWorld!';
{$ rdelphi.res}
// ฟังก์ชั่นการประมวลผลข้อความหน้าต่าง
FunctionMyWinProc (HWND: Thandle; UMSG: UINT; WPARAM, LPARAM: พระคาร์ดินัล): พระคาร์ดินัล;
ort; stdcall;
วาจา
HDCA, HDCB: thandle; // อุปกรณ์คำอธิบายอุปกรณ์จับตาราง
rect: trect; // โครงสร้างสี่เหลี่ยม
แบบอักษร: hfont;
PS: tpaintstruct; // โครงสร้างการวาด
เริ่ม
ผลลัพธ์: = 0;
caseumsgof
wm_paint:
เริ่ม
HDCA: = artialpaint (hwnd, ps);
SetBkMode (HDCA, โปร่งใส);
SetbkColor (HDCA, GetBkColor (HDCA));
getClientRect (hwnd, rect); // รับขนาดของพื้นที่ไคลเอนต์หน้าต่าง
DrawText (HDCA, PCHAR (helloStr),-1, rect, dt_singlelineordt_centerordt
_vcenter);
// textout (HDC, 100,40, HelloStr, ความยาว (HelloStr));
endpaint (hwnd, ps);
จบ;
wm_create:
เริ่ม
HDCB: = GetDC (HWND);
ตัวอักษร: = createFont (45,0,0,0, fw_normal, 0,0, ansi_charset, out
_default_precis, clip_default_precis,
default_quality, 34, pchar ('Arial'));
SelectObject (HDCB, FONT);
ปล่อยออกมา (HWND, HDCB);
จบ;
wm_destroy:
PostquitMessage (0)
อื่น
// ใช้ฟังก์ชั่นการประมวลผลข้อความหน้าต่างเริ่มต้น
ผลลัพธ์: = defWindowProc (HWND, UMSG, WPARAM, LPARAM);
จบ;
จบ;
// โปรแกรมหลักเริ่มต้น
วาจา
ผงชูรส: tmsg; // โครงสร้างข้อความ
hwnd, hinst: thandle; // windows windows handle
Winclass: twndclassex; // โครงสร้างคลาส Windows Window
เริ่ม
hinst: = getModuleHandle (ไม่มี); // getTeapplicationInstance
winclass.cbsize: = sizeof (twndclassex);
winclass.lpszclassName: = 'myWindow'; // ชื่อคลาส
winclass.style:=cs_hredraworcs_vredraworcs_owndc;
winclass.hinstance: = hinst; // ที่จับอินสแตนซ์ของโปรแกรม
// ตั้งค่าฟังก์ชั่นการประมวลผลข้อความหน้าต่าง
winclass.lpfnwndproc: =@mywinproc; // กระบวนการหน้าต่าง
winclass.cbclsextra: = 0; // สองโดเมนต่อไปนี้ใช้ในโครงสร้างคลาสและหน้าต่าง
โครงสร้างหน้าต่างที่บันทึกไว้ภายใน S
winclass.cbwndextra: = 0; // สำรองพื้นที่พิเศษบางอย่างใน Winclass
winclass.hicon: = loadicon (hinstance, makeintresource ('mainicon'));
winclass.hiconsm: = loadicon (Hinstance, Makeintresource ('mainicon'));
winclass.hcursor: = loadcursor (0, idc_arrow);
// getStockObject ได้รับวัตถุกราฟิกนี่คือการรับแปรงที่ดึงพื้นหลังหน้าต่างคืนแปรงสีขาว
ด้ามจับของเด็ก
winclass.hbrbackground: = hbrush (getStockObject (White_brush));
winclass.lpszmenuname: = nil; // ระบุเมนูคลาสหน้าต่าง
// ลงทะเบียนคลาสหน้าต่างด้วย Windows
ifregisterClassex (Winclass) = 0 แล้ว
เริ่ม
MessageBox (0, 'RegisterationError!', 'SDK/API', MB_OK);
ออก;
จบ;
// สร้างวัตถุหน้าต่าง
hwnd: = createWindowex (
ws_ex_overlappedwindow, // สไตล์หน้าต่างขยาย
winclass.lpszclassname, // ชื่อคลาส
'HelloWindow', // ชื่อหน้าต่าง
ws_overlappedwindow, // สไตล์หน้าต่าง
cw_usedefault, // มุมบนซ้ายของหน้าต่างสัมพันธ์กับหน้าจอ
ตำแหน่งเริ่มต้น x ที่มุมซ้ายบน
0, // .... ใช่แล้ว
cw_usedefault, // window width x
0, // ความสูงของหน้าต่าง
0, // ที่จับหน้าต่างพาเรนต์
0, // ที่จับเมนูหน้าต่าง
HINST, // HANSING อินสแตนซ์ของโปรแกรม
ไม่มี); // สร้างตัวชี้พารามิเตอร์
ifhwnd <> 0 แล้ว
เริ่ม
showwindow (hwnd, sw_shownormal); // show window
UpdateWindow (hwnd); // หน้าต่างคำสั่งเพื่อรีเฟรชตัวเอง
SetWindowPos (HWND, HWND_TOPOST, 0,0,0,0, SWP_NOMOVE+SWP_NOSIZE);
จบ
อื่น
MessageBox (0, 'WindownotCreated!', 'SDK/API', MB_OK);
// โปรแกรมวนข้อความหลัก
ขณะที่ GetGetMessage (MSG, 0,0,0) ทำ
เริ่ม
TranslateMessage (MSG); // แปลงข้อความแป้นพิมพ์บางอย่าง
DispatchMessage (MSG); // ส่งข้อความไปยังกระบวนการหน้าต่าง
จบ;
จบ.
> ในความเป็นจริงการเขียนโปรแกรม Windows เป็นสิ่งที่ทุกคนที่เรียนรู้ที่จะเขียนโปรแกรมจะต้องเชี่ยวชาญ
รหัสข้างต้นไม่เร็วเท่ากับแบบฟอร์มใหม่-> ที่ใช้ใน Delphi แต่สามารถบอกคุณได้
สิ่งที่ผ่านการรับรองสามารถช่วยให้คุณเข้าใจการวนซ้ำข้อความและสิ่งอื่น ๆ ได้ดีขึ้น
-
> หมายเหตุ: รหัสด้านบนได้รับการแปลอย่างแท้จริงจากการเขียนโปรแกรม Windows () ผ่านไวยากรณ์ C ++ และไม่มีปัญหาหลังจากการทดสอบ
หากมีข้อผิดพลาดใด ๆ ในคำอธิบายประกอบโปรดแก้ไขให้ฉัน!^_^
Hottey เมื่อ 2004-5-19 เว็บไซต์ผู้แต่ง: http://asp.itdrp.com/hottey (โดยกิจวัตร)