หลักการทำงานของส่วนต่อประสานผู้ใช้ของระบบปฏิบัติการตระกูล Windows นั้นขึ้นอยู่กับแนวคิดของหน้าต่าง เดสก์ท็อป แถบงาน รายการ กล่องโต้ตอบ ปุ่ม เมนู เป็นหน้าต่างทั้งหมด ดังนั้น ที่จริงแล้ว ในการแสดงองค์ประกอบอินเทอร์เฟซใด ๆ คุณต้องสร้างหน้าต่าง windows
จำเป็น
- - คอมไพเลอร์;
- - SDK แพลตฟอร์ม Windows
คำแนะนำ
ขั้นตอนที่ 1
ลงทะเบียนคลาสของหน้าต่างที่จะสร้าง ถ้าจำเป็น เรียกใช้ฟังก์ชัน API RegisterClass, RegisterClassEx หรือใช้ฟังก์ชันที่เหมาะสมของเฟรมเวิร์กที่ใช้
ฟังก์ชัน RegisterClass และ RegisterClassEx ยอมรับพอยน์เตอร์ไปยังโครงสร้างประเภท WNDCLASS และ WNDCLASSEX ตามลำดับ เป็นพารามิเตอร์เดียว ค่าส่งคืนของประเภท ATOM สามารถใช้แทนชื่อคลาสเมื่อสร้างหน้าต่าง หากการเรียกใช้ฟังก์ชันล้มเหลว ค่าส่งกลับเป็น 0
สร้างอินสแตนซ์โครงสร้างประเภท WNDCLASS หรือ WNDCLASSEX กรอกข้อมูลที่จำเป็นทั้งหมด โดยเฉพาะค่าที่ถูกต้องจะต้องอยู่ใน:
- cbSize - ขนาดโครงสร้างเป็นไบต์
- สไตล์ - ชุดสไตล์สำหรับคลาสหน้าต่าง
- lpfnWndProc - ตัวชี้ไปยังขั้นตอนหน้าต่าง
- hInstance คือหมายเลขอ้างอิงของโมดูลที่ลงทะเบียนคลาสหน้าต่าง
- lpszClassName เป็นชื่อเชิงสัญลักษณ์ของคลาส
ฟิลด์ที่เหลือสามารถเขียนด้วยค่า NULL เรียกใช้ฟังก์ชันเพื่อลงทะเบียนคลาสหน้าต่าง ตรวจสอบผลลัพธ์ที่ส่งคืน
ขั้นตอนที่ 2
เลือกคลาสหน้าต่างที่มีอยู่หากจำเป็น คุณต้องทราบชื่อคลาสสัญลักษณ์ (ชื่อที่ส่งผ่านตัวชี้ lpszClassName เมื่อลงทะเบียน) หรือค่า ATOM ที่สอดคล้องกัน คลาสสามารถเป็นแบบโลคัลที่ระดับแอปพลิเคชัน โกลบอลที่ระดับแอปพลิเคชัน (ลงทะเบียนด้วยแฟล็ก CS_GLOBALCLASS) หรือคลาสของระบบ ประเภทสุดท้ายรวมถึงคลาสของ windows ที่มีชื่อ: ปุ่ม, ComboBox, Edit, ListBox, MDIClient, ScrollBar, Static คลาส เช่น RichEdit20W หรือ SysListView32 ได้รับการลงทะเบียนเมื่อโหลดไลบรารีที่เกี่ยวข้อง
ขั้นตอนที่ 3
สร้างหน้าต่าง Windows ใช้ฟังก์ชัน API CreateWindow, CreateWindowEx หรือเมธอด wrapper ที่เหมาะสมสำหรับอ็อบเจ็กต์คลาสของเฟรมเวิร์กหรือไลบรารีที่คุณใช้ ต้นแบบสำหรับฟังก์ชัน CreateWindowEx มีลักษณะดังนี้:
HWND CreateWindowEx (DWORD dwExสไตล์, LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwสไตล์, อินท์ x, อินท์ y, int nWidth, int nความสูง, HWND hWndผู้ปกครอง, HMENU hเมนู, คำแนะนำ hInstance, LPVOID lpParam);
ฟังก์ชัน CreateWindow แตกต่างจาก CreateWindowEx เฉพาะในกรณีที่ไม่มีพารามิเตอร์ dwExStyle
โทร CreateWindow หรือ CreateWindowEx ส่งผ่านพารามิเตอร์lpClassNameชื่อหรือค่า ATOM ของคลาสหน้าต่างที่คุณกำหนดไว้ในขั้นตอนแรกหรือขั้นตอนที่สอง พารามิเตอร์ x, y, nWidth, nHeight สามารถเป็นพิกัดและขนาดของหน้าต่างที่ถูกสร้างขึ้น หมายเลขอ้างอิงหน้าต่างหลัก (ถ้ามี) ถูกส่งผ่าน hWndParent
บันทึกและแยกวิเคราะห์ค่าที่ส่งกลับโดย CreateWindow หรือ CreateWindowEx เมื่อสำเร็จ พวกเขาจะคืนค่าแฮนเดิลไปที่หน้าต่างใหม่ หากล้มเหลว จะเป็น NULL