ชื่อผู้แต่ง Qi Gao แหล่งที่มาดั้งเดิมของบทความ บทนำดั้งเดิม ล่าสุด มีผู้รับผิดชอบงานพัฒนาสถานีไฟฟ้าพลังน้ำแห่งหนึ่งในกุ้ยโจว ในการใช้โมดูลระบบตรวจสอบอินเทอร์เฟซ ฉันต้องใช้สวิตช์จำนวนมากและสิ่งอื่น ๆ แสดงถึงสถานะการทำงานปัจจุบันของอุปกรณ์ หลังจากค้นหาบนอินเทอร์เน็ต ฉันพบว่าไม่มีสิ่งที่ดีในพื้นที่นี้ เนื่องจากไม่เกี่ยวข้องกับการควบคุม ฉันจึงใช้วิธีการรับคลาส CSTATIC เพื่อแมปข้อความ WM_PAINT ที่จะนำไปใช้ ฟังก์ชั่น ฉันจะโพสต์ชั้นเรียนนี้และรูปภาพตอนนี้หวังว่าจะช่วยได้ การควบคุมอุตสาหกรรม และผู้ที่กำลังศึกษาสาขานี้
การควบคุมข้อความถูกนำมาใช้ในรูปแบบของแผนที่พื้นหลัง กล่าวคือ การดำเนินการแผนที่ที่แตกต่างกันจะดำเนินการภายใต้เงื่อนไขที่แตกต่างกันเพื่อแสดงสถานะการทำงานของอุปกรณ์แบบไดนามิก เนื่องจากคราวนี้มันแสดงถึงสถานะของสวิตช์ ฉันจึงใช้รูปภาพสองรูปเพื่อทดแทน ถ้ามีหลายๆ สถานการณ์ สามารถขยายและนำไปใช้ได้นะครับ ภาพนี้วาดโดย WINDOWS กระดานวาดภาพครับ ถ้าใครวาดแนว switch สวยๆ กว่านี้ ช่วยบอกด้วยนะครับ (^_^ เลเวลผมมีจำกัด)
โปรแกรมนั้นง่ายมาก รหัสโดยประมาณมีดังนี้:
เป็นโมฆะ CSwitchStatic::OnPaint()
-
CPaintDC dc (นี่); // บริบทของอุปกรณ์สำหรับการวาดภาพ
// สิ่งที่ต้องทำ: เพิ่มโค้ดตัวจัดการข้อความของคุณที่นี่
ถูกต้อง;
GetClientRect(&rect);
CDC *mdc=CDC ใหม่;
mdc->CreateCompatibleDC(&dc);
HBITMAP บิตแมป;
สวิตช์ (นี่ -> m_SystemMetric)
-
กรณี STYLE_ONE:
ถ้า(!นี่->bSwitchOn)
hbitmap=::LoadBitmap(::AfxGetInstanceHandle(),สร้างทรัพยากร (IDB_SWITCHOFF));
อื่น
hbitmap=::LoadBitmap(::AfxGetInstanceHandle(),สร้างทรัพยากร (IDB_SWITCHON));
หยุดพัก;
กรณี STYLE_TWO:
ถ้า(!นี่->bSwitchOn)
hbitmap=::LoadBitmap(::AfxGetInstanceHandle(),สร้างทรัพยากร (IDB_SWITCHOFF1));
อื่น
hbitmap=::LoadBitmap(::AfxGetInstanceHandle(),สร้างทรัพยากร (IDB_SWITCHON1));
หยุดพัก;
ค่าเริ่มต้น:
ถ้า(!นี่->bSwitchOn)
hbitmap=::LoadBitmap(::AfxGetInstanceHandle(),สร้างทรัพยากร (IDB_SWITCHOFF));
อื่น
hbitmap=::LoadBitmap(::AfxGetInstanceHandle(),สร้างทรัพยากร (IDB_SWITCHON));
หยุดพัก;
-
mdc->SelectObject(hbitmap);
dc.BitBlt(rect.left,rect.top,rect.Width(),rect.Height(),mdc,0,0,SRCCOPY);
ปล่อยDC(mdc);
::DeleteObject(hbitmap);
// อย่าเรียก CStatic::OnPaint() เพื่อวาดภาพข้อความ
-
วิธีการเรียกมีดังนี้:
ฉันตั้งค่าโหมดการทำงานของสวิตช์สองโหมดและรูปแบบสถานะสวิตช์สองรูปแบบในโปรแกรม
ค่าเริ่มต้นคือ SwitchOff หากคุณต้องการเปลี่ยนสถานะ คุณสามารถใช้รหัสต่อไปนี้:
SetSwitchState (จริง);
หากเราต้องการเปลี่ยนรูปแบบการแสดงผลของสวิตช์ เราสามารถใช้โค้ดต่อไปนี้:
SetSwitchStyle(STYLE_TWO);//รูปแบบที่สอง
SetSwitchStyle(STYLE_ONE);//สไตล์แรก
ขยาย