Cómo mostrar siempre la hora en la barra de estado en la programación mfc
Muestra la hora en la barra de estado de MFC
c/c++ vc Muestra la hora en la barra de estado de MFC
Hay una barra de estado en el control VC que se puede mostrar en el formulario Agregar fecha y hora a la barra de estado. De hecho, a través de
código simple, puede crear una barra de estado con una visualización del reloj y también puede configurar el método de visualización de la barra del reloj
. Un ejemplo es el siguiente:
Primero, utilice MFC AppWizard para crear un marco de aplicación de interfaz de múltiples documentos de forma predeterminada.
Luego, escriba el código:
1) Agregue una nueva cadena a la tabla de cadenas, definida aquí como ID_INDICATOR_CLOCK, y establezca
su título en 00:00 :00 (dado que la barra de estado determina el ancho predeterminado del panel de tiempo según el título,
el uso de este valor reservará espacio para la visualización de la hora). Tenga en cuenta que hay dos formas de realizar este paso:
Una es crear una nueva tabla de cadenas y agregar una cadena; la otra es agregarla a la tabla de cadenas original
. Cuando se utiliza el último método, si la barra de reloj no muestra la hora después de la finalización, debe agregar 1 al valor correspondiente de esta
nueva cadena en la tabla de cadenas (se puede configurar en el recurso. h Revisar).
2) Agregue ID_INDICATOR_CLOCK a la declaración de indicadores en MainFrm.cpp, el código es el siguiente:
indicadores UINT estáticos[] =
{
ID_SEPARATOR,
ID_INDICATOR_CLOCK, //La disposición aquí afecta el orden de visualización
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
La posición de inserción de ID_INDICATOR_CLOCK en este paso afectará la posición de visualización del panel de tiempo en la barra de estado.
3) Instale el temporizador: agregue el siguiente código en la función OnCreate en MainFrm.cpp:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{ … …
SetTimer(1,1000,NULL);//Instala el temporizador y establece su intervalo de tiempo en 1000 milisegundos
return 0;
}
4) Escriba una función de procesamiento de tiempo: use ClassWizard para agregar la función de procesamiento de mensajes WM_TIMER OnTimer a la clase CMainFrame y agregue el siguiente código:
void CMainFrame: :OnTimer(UINT nIDEvent )
{// TODO: agregue aquí el código del controlador de mensajes y/o llame a la hora predeterminada
CTime;
time=CTime: :GetCurrentTime(); //Obtener la hora actual
CString s=time.Format("%H:%M:%S");//Convertir el formato de hora
m_wndStatusBar SetPaneText(m_wndStatusBar. .CommandToIndex(ID_INDICATOR_CLOCK),s); //Mostrar reloj
CFrameWnd::OnTimer(nIDEvent);}
5) Destruir el temporizador: usar ClassWizard para crear la clase CMainFrame Agregar la función de procesamiento de mensajes WM_CLOSE
OnClose y agregue el código de la siguiente manera:
void CMainFrame::OnClose()
{// TODO: agregue su controlador de mensajes codifique aquí y/o llame a default
KillTime...