Eine Methode, mit der Informationen über das System dynamisch angezeigt werden können, sehr nützlich (^_^)
In den Informationen der Schlüsselwort-Hilfedatei werden der Name des Originalautors, Qi Gao, und die Originalquelle des Artikels angezeigt.
Einführung: Die meisten allgemeinen Systemhilfedateien verwenden ein statisches Formular, um den Inhalt auf der Benutzeroberfläche anzuzeigen, wenn Hilfeinformationen angezeigt werden. Da ich dieses Mal für die Projektentwicklung verantwortlich bin, habe ich immer das Gefühl, dass dies zu eintönig ist Auf der Website habe ich eine gute Steuerklasse gefunden (Schriftartanzeige-Steuerklasse), also habe ich sie erweitert und einige dynamische Anzeigefunktionen abgeschlossen. Nach der Fertigstellung können die verschiedenen anzuzeigenden Hilfeinformationen wie ein Film dynamisch angezeigt werden. Jetzt werde ich den Produktionsprozess, den Code und den Demonstrationseffekt aufschreiben. Ich hoffe, dass dies für diejenigen hilfreich ist, die in diesem Bereich recherchiert haben oder nach einer guten Methode suchen.
Gleichzeitig können Sie die im Code dieses Artikels angezeigten Textinformationen nach Bedarf ändern.
Wenn der Haupttext die Hilfedatei anzeigt, verwende ich die Vollbild-Anzeigemethode, aber wenn ich die Vollbild-Ansichtsmethode verwende, finde ich sie immer zu hässlich, also füge ich zuerst ein Hintergrundbild auf der Grundlage des Vollbilds ein Die einfache Methode besteht darin, ein CSTATIC-Steuerelement direkt auf dem Hintergrundbild zu erstellen und es dann auf den Bildschirm zu laden ein Dialogfeld, nehmen Sie die Form eines nichtmodalen Dialogfelds an und verschieben Sie es nach der Erstellung an den angegebenen Ort.
Produktionsschritte:
Starten Sie VC, erstellen Sie eine einzelne Dokumentfunktion basierend auf CVIEW und behalten Sie den Rest bei den Standardeinstellungen.
Ich bin nicht wie auf herkömmliche Weise mit dem Vollbildkonzept fortgefahren, sondern habe den Hauptrahmen von MoveWindow auf die Auflösung des Bildschirms verschoben und dann die Titelleiste, die Menüleiste, die Symbolleiste, die Statusleiste usw. zur Anzeige entfernt Fast ein Vollbildeffekt, und dann fügen Sie einfach das Hintergrundbild ein. Möglicherweise kann dies überhaupt nicht als Vollbildkonzept angesehen werden (^_^). Die spezifischen Implementierungsschritte sind wie folgt:
Ändern Sie die InitInstance()-Funktion der APP wie folgt:
// Das einzige Fenster wurde initialisiert, also zeige und aktualisiere es.
m_pMainWnd->SetMenu(NULL);//Entferne das Menü
m_pMainWnd->ModifyStyle(WS_THICKFRAME|WS_CAPTION,NULL);//Formulareigenschaften ändern
m_pMainWnd->MoveWindow(CRect(0,0,::GetSystemMetrics(SM_CXSCREEN),
::GetSystemMetrics(SM_CYSCREEN)),TRUE);//Verschieben Sie das Formular auf die Auflösung des Bildschirms
m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);//Das muss nicht erklärt werden
m_pMainWnd->UpdateWindow();
Ändern Sie dann die Member-Funktion der MainFrame-Klasse, um die Symbolleiste und die Statusleiste zu entfernen. Ändern Sie die Funktion PreCreateWindow(CREATESTRUCT& cs) wie folgt:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
FindWindow("Shell_TrayWnd",NULL)->ShowWindow(SW_HIDE);//Die Taskleiste ausblenden Wenn sie nicht ausgeblendet wird, wird dieses Ding immer zu unpassenden Zeiten angezeigt und beeinträchtigt den Gesamteffekt.
0 zurückgeben;
}
Die oben genannten Schritte verbergen die WINDOWS-Taskleiste, daher müssen wir sie wiederherstellen, wenn das Programm beendet wird. Da das Programm beim Beenden eine WM_CLOSE-Nachricht senden muss, können wir die WM_CLOSE-Nachricht abfangen von MainFrame, hier Um die Statusleiste wiederherzustellen, lautet der Code wie folgt:
void CMainFrame::OnClose()
{
// TODO: Fügen Sie hier Ihren Message-Handler-Code hinzu und/oder rufen Sie default auf
FindWindow("Shell_TrayWnd",NULL)->ShowWindow(SW_SHOW);//Stellen Sie die Taskleiste wieder her
CFrameWnd::OnClose();
}
Zu diesem Zeitpunkt haben wir die grundlegenden Vorbereitungsarbeiten abgeschlossen. Die nächste Aufgabe besteht darin, die Hintergrund-Bitmap einzufügen und das angezeigte Dialogfeld zu erstellen.
Fügen Sie die Hintergrund-Bitmap ein: Laden Sie die Hintergrund-Bitmap, ordnen Sie die WM_PAITN-Nachricht von VIEW zu, fügen Sie dann die Hintergrund-Bitmap ein, ordnen Sie gleichzeitig die WM_EARSEBKGND-Nachricht zu und entfernen Sie die Bildschirmlöschungsarbeit. Ändern Sie einfach die Return-Anweisung, um TRUE zurückzugeben.
void CAboutDemoView::OnPaint()
{
// TODO: Fügen Sie hier Ihren Nachrichtenhandlercode hinzu
CPaintDC dc(this); // Gerätekontext zum Malen
HBITMAP hbitmap;
hbitmap=::LoadBitmap(::AfxGetInstanceHandle(),MAKEINTRESOURCE(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() nicht zum Zeichnen von Nachrichten aufrufen
}
Erstellen Sie eine Dialogfeldressource zum Anzeigen relevanter Informationen, ändern Sie die Dialogfeldeigenschaften, Stil->Popup, Rahmen->Keine, und erstellen Sie eine Dialogfeldklasse CShowAboutDlg. Platzieren Sie dann ein CSTATIC-Steuerelement im Dialogfeld und passen Sie dessen Position an.
Erstellen Sie dieses nichtmodale Dialogfeld in VIEW und zeigen Sie Folgendes an:
CShowAboutDlg *m_pAboutDlg;
CRectrect;
m_pAboutDlg = new CShowAboutDlg();
m_pAboutDlg->Create(IDD_ABOUT);
m_pAboutDlg->MoveWindow(CRect(18,18,::GetSystemMetrics(SM_CXSCREEN)-13,::GetSystemMetrics(SM_CYSCREEN)-16),TRUE); //Da das Hintergrundbild einen Rand hat, sollte diese Position hier reserviert werden
m_pAboutDlg->GetClientRect(&rect);
m_pAboutDlg->m_AboutCtrl.MoveWindow(rect,TRUE);//Dieses PIC-Steuerelement belegt den Clientbereich des Dialogfelds
m_pAboutDlg->ShowWindow(SW_SHOW);
Im Folgenden finden Sie die Datei zum Hinzufügen der Steuerklasse für die Schriftartenanzeige. Fügen Sie ZgMemDC, ZgDraw.h, ZgDraw.cpp, TitleShow.h, TitleShow.cpp, PublicClass.cpp, PublicClass.h zum Projekt hinzu und fügen Sie dann AutoFont.h hinzu Selbstverständlich wurde die Funktion dieser Klasse im vorherigen Artikel vorgestellt. Basierend auf der Person, die die Steuerklasse für die Schriftartenanzeige bereitgestellt hat, habe ich eine angemessene Menge an Code geändert und Änderungen an der Textanzeige vorgenommen Originalklasse Die Schriftart ist nicht für die Anzeigeanforderungen unseres aktuellen Systems geeignet (^_^).
Laden Sie dann einfach die Nachricht und zeigen Sie sie in der Dialogklasse an.
Definieren Sie das CSTATIC-Anzeigeklassenobjekt TitleShow und fügen Sie dann Ihren Informationsanzeigeinhalt in der Initialisierung hinzu:
****
Ein weiterer Schritt besteht darin, den Wagenrücklauf und die ESC-Taste abzufangen, um das Dialogfeld zu verlassen.
BOOL CShowAboutDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Fügen Sie hier Ihren speziellen Code hinzu und/oder rufen Sie die Basisklasse auf
if(pMsg->message == WM_KEYDOWN)
{
switch(pMsg->wParam)
{
Fall VK_RETURN:
return TRUE;
Fall VK_ESCAPE:
return TRUE;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
Zu diesem Zeitpunkt ist die grundlegende Arbeit des Programms abgeschlossen. Kompilieren Sie Ihr Projekt und führen Sie es aus, um die Wirkung zu sehen.
Expandieren