Un método que se puede utilizar para mostrar dinámicamente información sobre el sistema, muy útil (^_^)
La información del archivo de ayuda de palabras clave muestra el nombre del autor original, Qi Gao, y la fuente original del artículo.
Introducción: la mayoría de los archivos de ayuda generales del sistema utilizan un formulario estático para mostrar el contenido en la interfaz cuando se muestra información de ayuda. Dado que esta vez soy responsable del desarrollo del proyecto, siempre siento que es demasiado monótono, por lo que en cada uno de ellos. En el sitio web, encontré una buena clase de control (clase de control de visualización de fuentes), así que la amplié y completé algunas funciones de visualización dinámica. Una vez completada, la información de ayuda que se mostrará se puede mostrar dinámicamente como una película. Ahora escribiré el proceso de producción, el código y el efecto de demostración. Espero que sea útil para quienes hayan investigado en esta área o estén buscando un buen método.
Al mismo tiempo, puede modificar la información de texto que se muestra en el código de este artículo según sea necesario.
Cuando el texto principal muestra el archivo de ayuda, uso el método de visualización en pantalla completa, pero si uso el método VER en pantalla completa, siempre siento que es demasiado feo, así que primero pego una imagen de fondo en base al archivo de ayuda completo. pantalla y luego cárguelo en la imagen de fondo. Simplemente muestre una función. De hecho, el método simple es crear dinámicamente un control CSTATIC directamente en la imagen de fondo. Sin embargo, dado que mi sistema involucra muchas otras interfaces funcionales para procesar. un cuadro de diálogo, adopte la forma de un cuadro de diálogo no modal y luego muévalo a la ubicación especificada después de crearlo.
Pasos de producción:
Inicie VC, cree una función de documento único basada en CVIEW y mantenga el resto con la configuración predeterminada.
No procedí con el concepto de pantalla completa como en la forma tradicional. En cambio, moví el marco principal MoveWindow a la resolución de la pantalla y luego eliminé la barra de título, la barra de menú, la barra de herramientas, la barra de estado, etc. casi un efecto de pantalla completa, y luego en esto Simplemente pegue la imagen de fondo en él. Quizás esto no pueda considerarse un concepto de pantalla completa (^_^). Los pasos de implementación específicos son los siguientes:
Modifique la función InitInstance() de la aplicación de la siguiente manera:
// La única ventana se ha inicializado, así que muéstrala y actualízala.
m_pMainWnd->SetMenu(NULL);//Eliminar el menú
m_pMainWnd->ModifyStyle(WS_THICKFRAME|WS_CAPTION,NULL);//Modificar propiedades del formulario
m_pMainWnd->MoveWindow(CRect(0,0,::GetSystemMetrics(SM_CXSCREEN),
::GetSystemMetrics(SM_CYSCREEN)),TRUE);//Mover el formulario a la resolución de la pantalla
m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);//No es necesario explicar esto
m_pMainWnd->UpdateWindow();
Luego modifique la función miembro de la clase MainFrame para eliminar la barra de herramientas y la barra de estado. Modifique la función PreCreateWindow(CREATESTRUCT& cs) de la siguiente manera:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
si (CFrameWnd::OnCreate(lpCreateStruct) == -1)
devolver -1;
FindWindow("Shell_TrayWnd",NULL)->ShowWindow(SW_HIDE);// Ocultar la barra de tareas Si no está oculta, esto siempre aparecerá en momentos inapropiados y afectará el efecto general.
devolver 0;
}
Los pasos anteriores ocultan la barra de tareas de WINDOWS, por lo que debemos restaurarla cuando se cierra el programa. No queremos verla después de que finalice el programa. Dado que el programa necesita enviar un mensaje WM_CLOSE cuando sale, podemos interceptar el mensaje WM_CLOSE. de MainFrame, aquí Para restaurar la barra de estado, el código es el siguiente:
anular CMainFrame::OnClose()
{
// TODO: agregue aquí el código de su controlador de mensajes y/o llame a default
FindWindow("Shell_TrayWnd",NULL)->ShowWindow(SW_SHOW);//Restaurar la barra de tareas
CFrameWnd::OnClose();
}
En este punto, hemos completado el trabajo de preparación básico. La siguiente tarea es pegar el mapa de bits de fondo y crear el cuadro de diálogo que se muestra.
Pegue el mapa de bits de fondo: cargue el mapa de bits de fondo, asigne el mensaje WM_PAITN de VIEW, luego pegue el mapa de bits de fondo, asigne el mensaje WM_EARSEBKGND al mismo tiempo y elimine el trabajo de borrado de pantalla. Simplemente modifique la declaración de retorno para: devolver VERDADERO.
void CAcerca deDemoView::OnPaint()
{
// TODO: Añade aquí el código del controlador de mensajes
CPaintDC dc(this); // contexto del dispositivo para pintar
HBITMAP mapa de bits;
hbitmap=::LoadBitmap(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BACKBMP));
HDC hMenDC=::CreateCompatibleDC(NULL);
SeleccionarObjeto(hMenDC,hbitmap);
::StretchBlt(dc.m_hDC,0,0,1024,768,hMenDC,0,0,1024,768,SRCCOPY);
::DeleteDC(hMenDC);
::DeleteObject(hbitmap);
// No llames a CView::OnPaint() para pintar mensajes
}
Cree un recurso de cuadro de diálogo para mostrar información relevante, modifique las propiedades del cuadro de diálogo, Estilo->Ventana emergente, Borde->Ninguno; y cree una clase de cuadro de diálogo CShowAboutDlg, luego coloque un control CSTATIC en el cuadro de diálogo y ajuste su posición.
Cree este cuadro de diálogo no modal en VIEW y muestre:
CShowAboutDlg *m_pAboutDlg;
CRectecto;
m_pAboutDlg = nuevo CShowAboutDlg();
m_pAboutDlg->Crear(IDD_ABOUT);
m_pAboutDlg->MoveWindow(CRect(18,18,::GetSystemMetrics(SM_CXSCREEN)-13,::GetSystemMetrics(SM_CYSCREEN)-16),TRUE //Debido a que la imagen de fondo tiene un borde, esa posición debe reservarse aquí);
m_pAboutDlg->GetClientRect(&rect);
m_pAboutDlg->m_AboutCtrl.MoveWindow(rect,TRUE);//Este control PIC ocupa el área del cliente del cuadro de diálogo
m_pAboutDlg->ShowWindow(SW_SHOW);
El siguiente es el archivo para agregar la clase de control de visualización de fuentes. Agregue ZgMemDC, ZgDraw.h, ZgDraw.cpp, TitleShow.h, TitleShow.cpp, PublicClass.cpp, PublicClass.h al proyecto y luego agregue AutoFont.h y. No hace falta decir que la función de esta clase se introdujo en el artículo anterior. Según la persona que proporcionó la clase de control de visualización de fuentes, modifiqué una cantidad adecuada de código e hice modificaciones en la visualización de texto. clase original La fuente no es adecuada para los requisitos de visualización de nuestro sistema actual (^_^).
Luego simplemente cargue y muestre el mensaje en la clase de diálogo.
Defina el objeto de clase CSTATIC de visualización TitleShow y luego agregue el contenido de visualización de información en la inicialización:
****
Otro paso es interceptar las teclas de retorno de carro y ESC para salir del cuadro de diálogo.
BOOL CShowAboutDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Agrega tu código especializado aquí y/o llama a la clase base
if(pMsg->mensaje == WM_KEYDOWN)
{
cambiar(pMsg->wParam)
{
caso VK_RETURN:
devolver VERDADERO;
caso VK_ESCAPE:
devolver VERDADERO;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
En este punto, el trabajo básico del programa se ha completado. Compile y ejecute su proyecto para ver el efecto.
Expandir