วิธีการที่ใช้แสดงข้อมูลเกี่ยวกับระบบแบบไดนามิกมีประโยชน์มาก (^_^)
ข้อมูลไฟล์วิธีใช้คำหลักจะแสดงชื่อผู้เขียนต้นฉบับ Qi Gao และแหล่งที่มาดั้งเดิมของบทความ
บทนำ: ไฟล์วิธีใช้ระบบทั่วไปส่วนใหญ่ใช้รูปแบบคงที่เพื่อแสดงเนื้อหาบนอินเทอร์เฟซเมื่อแสดงข้อมูลวิธีใช้ เนื่องจากฉันรับผิดชอบในการพัฒนาโครงการในครั้งนี้ ฉันมักจะรู้สึกว่ามันซ้ำซากเกินไป ดังนั้นในแต่ละครั้งหลังจากค้นหา เว็บไซต์ ฉันพบคลาสควบคุมที่ดี (คลาสควบคุมการแสดงแบบอักษร) ดังนั้นฉันจึงขยายและใช้งานฟังก์ชันการแสดงผลแบบไดนามิกบางอย่างให้เสร็จสิ้น หลังจากเสร็จสิ้น ข้อมูลความช่วยเหลือต่างๆ ที่จะแสดงสามารถแสดงผลแบบไดนามิกได้เหมือนภาพยนตร์ ตอนนี้ผมจะเขียนขั้นตอนการผลิต โค้ด และผลการสาธิต หวังว่าคงจะเป็นประโยชน์กับผู้ที่ค้นคว้าเกี่ยวกับเรื่องนี้หรือกำลังมองหาวิธีการที่ดี
ในเวลาเดียวกัน คุณสามารถแก้ไขข้อมูลข้อความที่แสดงในโค้ดของบทความนี้ได้ตามต้องการ
เมื่อข้อความหลักแสดงไฟล์วิธีใช้ ฉันใช้วิธีการแสดงผลแบบเต็มหน้าจอ แต่ถ้าฉันใช้วิธี VIEW แบบเต็มหน้าจอ ฉันมักจะรู้สึกว่ามันน่าเกลียดเกินไป ดังนั้นฉันจึงวางภาพพื้นหลังตามขนาดเต็มก่อน จากนั้นจึงโหลดลงบนภาพพื้นหลัง เพียงแสดงฟังก์ชัน จริงๆ แล้ว วิธีการง่ายๆ คือการสร้างตัวควบคุม CSTATIC แบบไดนามิกบนภาพพื้นหลังโดยตรง อย่างไรก็ตาม เนื่องจากระบบของฉันเกี่ยวข้องกับอินเทอร์เฟซการทำงานอื่นๆ มากมายในการประมวลผล กล่องโต้ตอบ ให้ใช้รูปแบบของกล่องโต้ตอบแบบไม่มีโหมด จากนั้นย้ายไปยังตำแหน่งที่ระบุหลังจากสร้างขึ้น
ขั้นตอนการผลิต:
เริ่ม VC สร้างฟังก์ชันเอกสารเดียวตาม CVIEW และคงส่วนที่เหลือไว้ตามการตั้งค่าเริ่มต้น
ฉันไม่ได้ดำเนินการกับแนวคิดแบบเต็มหน้าจอเหมือนวิธีดั้งเดิม แต่ฉันย้ายเฟรมหลัก MoveWindow ไปที่ความละเอียดของหน้าจอ จากนั้นจึงลบแถบชื่อเรื่อง แถบเมนู แถบเครื่องมือ แถบสถานะ ฯลฯ เพื่อแสดง เกือบเป็นเอฟเฟกต์เต็มหน้าจอ แล้วในนี้ แค่วางภาพพื้นหลังลงไป บางทีนี่อาจไม่สามารถถือเป็นแนวคิดแบบเต็มหน้าจอได้เลย (^_^) ขั้นตอนการใช้งานเฉพาะมีดังนี้:
ปรับเปลี่ยนฟังก์ชัน InitInstance() ของ APP ดังนี้:
// หน้าต่างเดียวเท่านั้นที่ได้รับการเตรียมใช้งานแล้ว ดังนั้นโปรดแสดงและอัปเดตหน้าต่างนั้น
m_pMainWnd->SetMenu(NULL);//ลบเมนู
m_pMainWnd->ModifyStyle(WS_THICKFRAME|WS_CAPTION,NULL);//แก้ไขคุณสมบัติของฟอร์ม
m_pMainWnd->MoveWindow(CRect(0,0,::GetSystemMetrics(SM_CXSCREEN),
::GetSystemMetrics(SM_CYSCREEN)),TRUE);//ย้ายแบบฟอร์มไปที่ความละเอียดของหน้าจอ
m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);//ไม่จำเป็นต้องอธิบายสิ่งนี้
m_pMainWnd->UpdateWindow();
จากนั้นปรับเปลี่ยนฟังก์ชันสมาชิกคลาส MainFrame เพื่อลบแถบเครื่องมือและแถบสถานะ ปรับเปลี่ยนฟังก์ชัน PreCreateWindow(CREATESTRUCT& cs) ดังนี้:
int CMainFrame::OnCreate (LPCREATESTRUCT lpCreateStruct)
-
ถ้า (CFrameWnd::OnCreate(lpCreateStruct) == -1)
กลับ -1;
FindWindow("Shell_TrayWnd",NULL)->ShowWindow(SW_HIDE);//ซ่อนแถบงาน หากไม่ได้ซ่อน สิ่งนี้จะปรากฏในเวลาที่ไม่เหมาะสมเสมอและส่งผลต่อเอฟเฟกต์โดยรวม
กลับ 0;
-
ขั้นตอนข้างต้นเป็นการซ่อนทาสก์บาร์ของ WINDOWS ดังนั้นเราจึงต้องคืนค่ามันเมื่อโปรแกรมออก เราไม่ต้องการเห็นมันหลังจากโปรแกรมสิ้นสุดลง เนื่องจากโปรแกรมจำเป็นต้องส่งข้อความ WM_CLOSE เมื่อออกจากโปรแกรม เราจึงสามารถสกัดกั้นข้อความ WM_CLOSE ได้ ของ MainFrame ที่นี่ หากต้องการคืนค่าแถบสถานะให้แสดงโค้ดดังนี้:
เป็นโมฆะ CMainFrame::OnClose()
-
// สิ่งที่ต้องทำ: เพิ่มรหัสตัวจัดการข้อความของคุณที่นี่และ/หรือการโทรเริ่มต้น
FindWindow("Shell_TrayWnd",NULL)->ShowWindow(SW_SHOW);//คืนค่าทาสก์บาร์
CFrameWnd::OnClose();
-
ณ จุดนี้ เราได้เสร็จสิ้นการเตรียมการขั้นพื้นฐานแล้ว งานต่อไปคือการวางบิตแมปพื้นหลังและสร้างกล่องโต้ตอบที่แสดง
วางบิตแมปพื้นหลัง: โหลดบิตแมปพื้นหลัง แมปข้อความ WM_PAITN ของ VIEW จากนั้นวางบิตแมปพื้นหลัง แมปข้อความ WM_EARSEBKGND พร้อมกัน และลบงานการลบหน้าจอ เพียงแก้ไขคำสั่ง return เป็น: return TRUE
เป็นโมฆะ CAboutDemoView::OnPaint()
-
// สิ่งที่ต้องทำ: เพิ่มโค้ดตัวจัดการข้อความของคุณที่นี่
CPaintDC dc (นี่); // บริบทของอุปกรณ์สำหรับการวาดภาพ
HBITMAP บิตแมป;
hbitmap=::LoadBitmap(::AfxGetInstanceHandle(),สร้างทรัพยากร(IDB_BACKBMP));
HDC hMenDC=::CreateCompatibleDC(NULL);
SelectObject(hMenDC,hbitmap);
::StretchBlt(dc.m_hDC,0,0,1024,768,hMenDC,0,0,1024,768,SRCCOPY);
::DeleteDC(hMenDC);
::DeleteObject(hbitmap);
// ห้ามเรียก CView::OnPaint() เพื่อวาดภาพข้อความ
-
สร้างทรัพยากรกล่องโต้ตอบสำหรับการแสดงข้อมูลที่เกี่ยวข้อง แก้ไขคุณสมบัติของกล่องโต้ตอบ สไตล์ -> ป๊อปอัป เส้นขอบ -> ไม่มี และสร้างคลาสกล่องโต้ตอบ CShowAboutDlg จากนั้นวางตัวควบคุม CSTATIC บนกล่องโต้ตอบและปรับตำแหน่ง
สร้างกล่องโต้ตอบแบบไม่มีโหมดนี้ใน VIEW และแสดง:
CShowAboutDlg *m_pAboutDlg;
ถูกต้อง;
m_pAboutDlg = CShowAboutDlg ใหม่ ();
m_pAboutDlg->สร้าง (IDD_ABOUT);
m_pAboutDlg->MoveWindow(CRect(18,18,::GetSystemMetrics(SM_CXSCREEN)-13,::GetSystemMetrics(SM_CYSCREEN)-16),TRUE); //เนื่องจากภาพพื้นหลังมีเส้นขอบ จึงควรสงวนตำแหน่งไว้ที่นี่
m_pAboutDlg->GetClientRect(&rect);
m_pAboutDlg->m_AboutCtrl.MoveWindow(rect,TRUE);//ตัวควบคุม PIC นี้ตรงบริเวณพื้นที่ไคลเอ็นต์ของกล่องโต้ตอบ
m_pAboutDlg->ShowWindow(SW_SHOW);
ต่อไปนี้เป็นไฟล์สำหรับเพิ่มคลาสควบคุมการแสดงแบบอักษร เพิ่ม ZgMemDC, ZgDraw.h, ZgDraw.cpp, TitleShow.h, TitleShow.cpp, PublicClass.cpp, PublicClass.h เข้ากับโปรเจ็กต์ จากนั้นเพิ่ม AutoFont.h และ AutoFont.cpp ไม่จำเป็นต้องพูดว่าฟังก์ชันของคลาสนี้ได้รับการแนะนำในบทความที่แล้ว จากบุคคลที่จัดเตรียมคลาสควบคุมการแสดงแบบอักษร ฉันได้แก้ไขโค้ดในปริมาณที่เหมาะสมและทำการแก้ไขการแสดงข้อความ เนื่องจาก ระดับเดิม แบบอักษรไม่เหมาะกับข้อกำหนดการแสดงผลของระบบปัจจุบันของเรา (^_^)
จากนั้นเพียงแค่โหลดและแสดงข้อความในคลาสกล่องโต้ตอบ
กำหนดการแสดงวัตถุคลาส CSTATIC TitleShow แล้วเพิ่มเนื้อหาที่แสดงข้อมูลของคุณในการเริ่มต้น:
-
อีกขั้นตอนหนึ่งคือการสกัดกั้นการขึ้นแคร่และปุ่ม ESC เพื่อออกจากกล่องโต้ตอบ
BOOL CShowAboutDlg::PreTranslateMessage(ผงชูรส* pMsg)
-
// สิ่งที่ต้องทำ: เพิ่มโค้ดพิเศษของคุณที่นี่และ/หรือเรียกคลาสพื้นฐาน
ถ้า(pMsg->ข้อความ == WM_KEYDOWN)
-
สวิตช์ (pMsg->wParam)
-
กรณี VK_RETURN:
กลับจริง;
กรณี VK_ESCAPE:
กลับจริง;
-
-
กลับ CDialog::PreTranslateMessage(pMsg);
-
ณ จุดนี้ งานพื้นฐานของโปรแกรมได้เสร็จสมบูรณ์แล้ว คอมไพล์และรันโปรเจ็กต์ของคุณเพื่อดูผลกระทบ
ขยาย