Une méthode qui peut être utilisée pour afficher dynamiquement des informations sur le système, très utile (^_^)
Les informations du fichier d'aide sur les mots clés affichent le nom de l'auteur original, Qi Gao, et la source originale de l'article.
Introduction : La plupart des fichiers d'aide générale du système utilisent une forme statique pour afficher le contenu sur l'interface lors de l'affichage des informations d'aide. Comme je suis cette fois responsable du développement du projet, j'ai toujours l'impression que c'est trop monotone, donc dans chaque recherche. Sur le site Web, j'ai trouvé une bonne classe de contrôle (classe de contrôle d'affichage des polices), je l'ai donc développée et complété quelques fonctions d'affichage dynamique. Une fois terminée, les différentes informations d'aide à afficher peuvent être affichées dynamiquement comme un film. Je vais maintenant écrire le processus de production, le code et l'effet de démonstration. J'espère que cela sera utile à ceux qui ont fait des recherches dans ce domaine ou qui recherchent une bonne méthode.
Parallèlement, vous pouvez modifier les informations textuelles affichées dans le code de cet article selon vos besoins.
Lorsque le texte principal affiche le fichier d'aide, j'utilise la méthode d'affichage plein écran, mais si j'utilise la méthode VIEW plein écran, j'ai toujours l'impression que c'est trop moche, alors je colle d'abord une image d'arrière-plan sur la base du fichier d'aide complet. écran, puis chargez-le sur l'image d'arrière-plan. Affichez simplement une fonction. En fait, la méthode simple consiste à créer dynamiquement un contrôle CSTATIC directement sur l'image d'arrière-plan. Cependant, comme mon système implique de nombreuses autres interfaces fonctionnelles à traiter, j'ai utilisé. une boîte de dialogue, adoptez la forme d’une boîte de dialogue non modale, puis déplacez-la vers l’emplacement spécifié après sa création.
Étapes de fabrication :
Démarrez VC, créez une fonction de document unique basée sur CVIEW et conservez le reste avec les paramètres par défaut.
Je n'ai pas utilisé le concept de plein écran comme de manière traditionnelle. Au lieu de cela, j'ai déplacé le cadre principal MoveWindow vers la résolution de l'écran, puis j'ai supprimé la barre de titre, la barre de menus, la barre d'outils, la barre d'état, etc. presque un effet plein écran, puis collez simplement l'image d'arrière-plan dessus. Peut-être que cela ne peut pas du tout être considéré comme un concept plein écran (^_^).
Modifiez la fonction InitInstance() de l'APP comme suit :
// La seule et unique fenêtre a été initialisée, donc affichez-la et mettez-la à jour.
m_pMainWnd->SetMenu(NULL);//Supprimer le menu
m_pMainWnd->ModifyStyle(WS_THICKFRAME|WS_CAPTION,NULL);//Modifier les propriétés du formulaire
m_pMainWnd->MoveWindow(CRect(0,0,::GetSystemMetrics(SM_CXSCREEN),
::GetSystemMetrics(SM_CYSCREEN)),TRUE);//Déplacer le formulaire à la résolution de l'écran
m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);//Pas besoin d'expliquer cela
m_pMainWnd->UpdateWindow();
Modifiez ensuite la fonction membre de la classe MainFrame pour supprimer la barre d'outils et la barre d'état. Modifiez la fonction PreCreateWindow(CREATESTRUCT& cs) comme suit :
int CMainFrame :: OnCreate (LPCREATESTRUCT lpCreateStruct)
{
si (CFrameWnd::OnCreate(lpCreateStruct) == -1)
renvoie -1 ;
FindWindow("Shell_TrayWnd",NULL)->ShowWindow(SW_HIDE);//Masquer la barre des tâches Si elle n'est pas masquée, cette chose apparaîtra toujours à des moments inappropriés et affectera l'effet global.
renvoie 0 ;
}
Les étapes ci-dessus masquent la barre des tâches WINDOWS, nous devons donc la restaurer à la fermeture du programme. Nous ne voulons pas la voir une fois le programme terminé. Puisque le programme doit envoyer un message WM_CLOSE à sa sortie, nous pouvons intercepter le message WM_CLOSE. de MainFrame, ici Pour restaurer la barre d'état, le code est le suivant :
annuler CMainFrame :: OnClose ()
{
// TODO : ajoutez votre code de gestionnaire de messages ici et/ou appelez default
FindWindow("Shell_TrayWnd",NULL)->ShowWindow(SW_SHOW);//Restaurer la barre des tâches
CFrameWnd :: OnClose ();
}
À ce stade, nous avons terminé le travail de préparation de base. La tâche suivante consiste à coller le bitmap d'arrière-plan et à créer la boîte de dialogue affichée.
Collez le bitmap d'arrière-plan : chargez le bitmap d'arrière-plan, mappez le message WM_PAITN de VIEW, puis collez le bitmap d'arrière-plan, mappez le message WM_EARSEBKGND en même temps et supprimez le travail d'effacement d'écran. Modifiez simplement l'instruction return pour : return TRUE.
annuler CAboutDemoView :: OnPaint ()
{
// À FAIRE : Ajoutez votre code de gestionnaire de messages ici
CPaintDC dc(this); // contexte de périphérique pour la peinture
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);
:: Supprimer DC (hMenDC);
::DeleteObject(hbitmap);
// N'appelle pas CView::OnPaint() pour peindre les messages
}
Créez une ressource de boîte de dialogue pour afficher les informations pertinentes, modifiez les propriétés de la boîte de dialogue, Style->Popup, Border->Aucun ; et créez une classe de boîte de dialogue CShowAboutDlg ; puis placez un contrôle CSTATIC sur la boîte de dialogue et ajustez sa position.
Créez cette boîte de dialogue non modale dans VIEW et affichez :
CShowAboutDlg *m_pAboutDlg;
CRectrect ;
m_pAboutDlg = new CShowAboutDlg();
m_pAboutDlg->Créer(IDD_ABOUT);
m_pAboutDlg->MoveWindow(CRect(18,18,::GetSystemMetrics(SM_CXSCREEN)-13,::GetSystemMetrics(SM_CYSCREEN)-16),TRUE); //Étant donné que l'image d'arrière-plan a une bordure, cette position doit être réservée ici.
m_pAboutDlg->GetClientRect(&rect);
m_pAboutDlg->m_AboutCtrl.MoveWindow(rect,TRUE);//Ce contrôle PIC occupe la zone client de la boîte de dialogue
m_pAboutDlg->ShowWindow(SW_SHOW);
Voici le fichier pour ajouter la classe de contrôle d'affichage des polices. Ajoutez ZgMemDC, ZgDraw.h, ZgDraw.cpp, TitleShow.h, TitleShow.cpp, PublicClass.cpp, PublicClass.h au projet, puis ajoutez AutoFont.h et AutoFont.cpp. Inutile de dire que la fonction de cette classe a été présentée dans l'article précédent. Sur la base de la personne qui a fourni la classe de contrôle d'affichage des polices, j'ai modifié une quantité appropriée de code et apporté des modifications à l'affichage du texte, car le classe d'origine La police n'est pas adaptée aux exigences d'affichage de notre système actuel (^_^).
Ensuite, chargez et affichez simplement le message dans la classe de dialogue.
Définissez l'objet de classe CSTATIC d'affichage TitleShow, puis ajoutez le contenu d'affichage de vos informations lors de l'initialisation :
****
Une autre étape consiste à intercepter le retour chariot et les touches ESC pour quitter la boîte de dialogue.
BOOL CShowAboutDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO : Ajoutez votre code spécialisé ici et/ou appelez la classe de base
si (pMsg-> message == WM_KEYDOWN)
{
commutateur (pMsg->wParam)
{
cas VK_RETURN :
retourner VRAI ;
cas VK_ESCAPE :
retourner VRAI ;
}
}
retourner CDialog :: PreTranslateMessage (pMsg);
}
À ce stade, le travail de base du programme est terminé. Compilez et exécutez votre projet pour voir l'effet.
Développer