CMonthCalCtrl (clase)
Encapsula la funcionalidad de un control de calendario mensual.
Sintaxis
class CMonthCalCtrl : public CWnd
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
CMonthCalCtrl::CMonthCalCtrl | Construye un objeto CMonthCalCtrl . |
Métodos públicos
Nombre | Descripción |
---|---|
CMonthCalCtrl::Create | Crea un control de calendario mensual y lo adjunta al objeto CMonthCalCtrl . |
CMonthCalCtrl::GetCalendarBorder | Recupera el ancho del borde del control de calendario mensual actual. |
CMonthCalCtrl::GetCalendarCount | Recupera el número de calendarios que se muestran en el control de calendario mensual actual. |
CMonthCalCtrl::GetCalendarGridInfo | Recupera información sobre el control de calendario mensual actual. |
CMonthCalCtrl::GetCalID | Recupera el identificador de calendario para el control de calendario mensual actual. |
CMonthCalCtrl::GetColor | Obtiene el color de un área especificada de un control de calendario mensual. |
CMonthCalCtrl::GetCurrentView | Recupera la vista que muestra actualmente el control de calendario mensual actual. |
CMonthCalCtrl::GetCurSel | Recupera la hora del sistema tal como se indica en la fecha seleccionada actualmente. |
CMonthCalCtrl::GetFirstDayOfWeek | Obtiene el primer día de la semana que se va a mostrar en la columna situada más a la izquierda del calendario. |
CMonthCalCtrl::GetMaxSelCount | Recupera el número máximo de días actuales que se pueden seleccionar en un control de calendario mensual. |
CMonthCalCtrl::GetMaxTodayWidth | Recupera el ancho máximo de la cadena "Today" para el control de calendario mensual actual. |
CMonthCalCtrl::GetMinReqRect | Recupera el tamaño mínimo necesario para mostrar un mes completo en un control de calendario mensual. |
CMonthCalCtrl::GetMonthDelta | Recupera la tasa de desplazamiento para un control de calendario mensual. |
CMonthCalCtrl::GetMonthRange | Recupera la información de fecha que representa los límites superior e inferior de la presentación del control de calendario mensual. |
CMonthCalCtrl::GetRange | Recupera las fechas mínima y máxima actuales establecidas en un control de calendario mensual. |
CMonthCalCtrl::GetSelRange | Recupera la información de fecha que representa los límites superior e inferior del intervalo de fechas seleccionado actualmente por el usuario. |
CMonthCalCtrl::GetToday | Recupera la información de fecha para la fecha especificada como "today" para un control de calendario mensual. |
CMonthCalCtrl::HitTest | Determina qué sección de un control de calendario mensual se encuentra en un punto determinado de la pantalla. |
CMonthCalCtrl::IsCenturyView | Indica si la vista actual del control de calendario mensual actual es la vista de siglo. |
CMonthCalCtrl::IsDecadeView | Indica si la vista actual del control de calendario mensual actual es la vista de década. |
CMonthCalCtrl::IsMonthView | Indica si la vista actual del control de calendario mensual actual es la vista de mes. |
CMonthCalCtrl::IsYearView | Indica si la vista actual del control de calendario mensual actual es la vista de año. |
CMonthCalCtrl::SetCalendarBorder | Establece el ancho del borde del control de calendario mensual actual. |
CMonthCalCtrl::SetCalendarBorderDefault | Establece el ancho predeterminado del borde del control de calendario mensual actual. |
CMonthCalCtrl::SetCalID | Establece el identificador de calendario para el control de calendario mensual actual. |
CMonthCalCtrl::SetCenturyView | Establece el control de calendario mensual actual para mostrar la vista de siglo. |
CMonthCalCtrl::SetColor | Establece el color de un área especificada de un control de calendario mensual. |
CMonthCalCtrl::SetCurrentView | Establece el control de calendario mensual actual para mostrar la vista especificada. |
CMonthCalCtrl::SetCurSel | Establece la fecha seleccionada actualmente para un control de calendario mensual. |
CMonthCalCtrl::SetDayState | Establece la presentación de días en un control de calendario mensual. |
CMonthCalCtrl::SetDecadeView | Establece el control de calendario mensual actual en la vista de década. |
CMonthCalCtrl::SetFirstDayOfWeek | Establece el primer día de la semana que se va a mostrar en la columna situada más a la izquierda del calendario. |
CMonthCalCtrl::SetMaxSelCount | Establece el número máximo de días que se pueden seleccionar en un control de calendario mensual. |
CMonthCalCtrl::SetMonthDelta | Establece la tasa de desplazamiento para un control de calendario mensual. |
CMonthCalCtrl::SetMonthView | Establece el control de calendario mensual actual para mostrar la vista de mes. |
CMonthCalCtrl::SetRange | Establece las fechas mínima y máxima permitidas para un control de calendario mensual. |
CMonthCalCtrl::SetSelRange | Establece la selección de un control de calendario mensual en un intervalo de fechas determinado. |
CMonthCalCtrl::SetToday | Establece el control de calendario para el día actual. |
CMonthCalCtrl::SetYearView | Establece el control de calendario mensual actual en la vista de año. |
CMonthCalCtrl::SizeMinReq | Vuelve a dibujar el control de calendario mensual en su tamaño mínimo, que es un mes. |
CMonthCalCtrl::SizeRectToMin | Para el control de calendario mensual actual, calcula el rectángulo más pequeño que puede contener todos los calendarios que caben en un rectángulo especificado. |
Comentarios
El control de calendario mensual proporciona al usuario una interfaz de calendario simple, en la que el usuario puede seleccionar una fecha. Para cambiar la presentación, el usuario puede realizar lo siguiente:
Desplazarse hacia atrás y hacia delante, mes a mes.
Hacer clic en el texto Today para mostrar el día actual (si no se usa el estilo MCS_NOTODAY).
Seleccionar un mes o un año en un menú emergente.
Puede personalizar el control de calendario mensual aplicando una variedad de estilos al objeto al crearlo. Estos estilos se describen en Estilos de control de calendario mensual en Windows SDK.
En el control de calendario mensual se puede mostrar más de un mes y se pueden indicar días especiales (como días festivos) poniendo la fecha en negrita.
Para más información sobre el uso del control de calendario mensual, consulte Uso de CMonthCalCtrl.
Jerarquía de herencia
CMonthCalCtrl
Requisitos
Encabezado: afxdtctl.h
CMonthCalCtrl::CMonthCalCtrl
Construye un objeto CMonthCalCtrl
.
CMonthCalCtrl();
Comentarios
Debe llamar a Create
después de construir el objeto.
CMonthCalCtrl::Create
Crea un control de calendario mensual y lo adjunta al objeto CMonthCalCtrl
.
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
virtual BOOL Create(
DWORD dwStyle,
const POINT& pt,
CWnd* pParentWnd,
UINT nID);
Parámetros
dwStyle
Especifica la combinación de estilos Windows aplicados al control de calendario mensual. Consulte Estilos de control de calendario mensual en Windows SDK para más información sobre los estilos.
rect
Referencia a una estructura RECT. Contiene la posición y el tamaño del control de calendario mensual.
pt
Referencia a una estructura POINT que identifica la ubicación del control de calendario mensual.
pParentWnd
Puntero a un objeto CWnd que es la ventana primaria del control de calendario mensual. No debe ser NULL.
Nid
Especifica el id. de control del control de calendario mensual.
Valor devuelto
Es distinto de cero si la inicialización se realiza correctamente; de lo contrario,es 0.
Comentarios
Cree un control de calendario mensual en dos pasos:
Llame a CMonthCalCtrl para construir un objeto
CMonthCalCtrl
.Llame a esta función miembro, que crea el control de calendario mensual y lo adjunta al objeto
CMonthCalCtrl
.
Cuando se llama a Create
, se inicializan los controles habituales. La versión de Create
que llama determina cómo se ajusta el tamaño:
Para que MFC cambie automáticamente el tamaño del control a un mes, llame a la invalidación que usa el parámetro pt.
Para ajustar el tamaño del control usted mismo, llame a la invalidación de esta función que usa el parámetro rect.
Ejemplo
// Given two member objects m_calCtrl1 and m_calCtrl2, we can
// create them in one of two ways.
// Providing a point has the control with its top-left corner
// at that point and sized automatically to show one month
// page.
CPoint pt(10, 10);
VERIFY(m_calCtrl1.Create(WS_TABSTOP | WS_CHILD | WS_VISIBLE |
WS_BORDER | MCS_DAYSTATE,
pt, this, IDC_MONTHCALCTRL1));
// Providing a rectangle lets us completely control the size.
// The control will paint as many complete month pages in the
// control's area as possible.
CRect rect(300, 100, 470, 200);
VERIFY(m_calCtrl2.Create(WS_TABSTOP | WS_CHILD | WS_VISIBLE |
WS_BORDER | MCS_MULTISELECT,
rect, this, IDC_MONTHCALCTRL2));
CMonthCalCtrl::GetCalendarBorder
Recupera el ancho del borde del control de calendario mensual actual.
int GetCalendarBorder() const;
Valor devuelto
Ancho del borde del control, en píxeles.
Comentarios
Este método envía el mensaje MCM_GETCALENDARBORDER, que se describe en Windows SDK.
CMonthCalCtrl::GetCalendarCount
Recupera el número de calendarios que se muestran en el control de calendario mensual actual.
int GetCalendarCount() const;
Valor devuelto
Número de calendarios que se muestran actualmente en el control de calendario mensual. El número máximo de calendarios permitidos es 12.
Comentarios
Este método envía el mensaje MCM_GETCALENDARCOUNT, que se describe en Windows SDK.
CMonthCalCtrl::GetCalendarGridInfo
Recupera información sobre el control de calendario mensual actual.
BOOL GetCalendarGridInfo(PMCGRIDINFO pmcGridInfo) const;
Parámetros
pmcGridInfo
[out] Puntero a una estructura MCGRIDINFO que recibe información sobre el control de calendario mensual actual. El autor de la llamada es responsable de asignar e inicializar esta estructura.
Valor devuelto
TRUE si este método se ejecuta correctamente; de lo contrario, FALSE.
Comentarios
Este método envía el mensaje MCM_GETCALENDARGRIDINFO, que se describe en Windows SDK.
Ejemplo
En el primer ejemplo del código se define la variable m_monthCalCtrl
, que se usa para acceder mediante programación al control de calendario mensual. Esta variable se utiliza en el siguiente ejemplo.
// Variable used to reference the month calendar control.
CMonthCalCtrl m_monthCalCtrl;
// Variable used to reference the splitbutton control.
CSplitButton m_splitButton;
En el ejemplo de código siguiente se usa el método GetCalendarGridInfo
para recuperar la fecha del calendario que muestra el control de calendario mensual actual.
WCHAR name[26];
name[0] = _T('\0');
MCGRIDINFO gridInfo;
gridInfo.cbSize = sizeof(MCGRIDINFO);
gridInfo.dwPart = MCGIP_CALENDARHEADER;
gridInfo.dwFlags = MCGIF_NAME;
gridInfo.iCalendar = 0;
gridInfo.pszName = reinterpret_cast<PWSTR>(&name);
gridInfo.cchName = sizeof(name);
m_monthCalCtrl.GetCalendarGridInfo(&gridInfo);
CString str;
CString calendarDate(name);
str.Format(_T("Calendar date: '%s'"), calendarDate);
AfxMessageBox(str, MB_ICONINFORMATION);
CMonthCalCtrl::GetCalID
Recupera el identificador de calendario para el control de calendario mensual actual.
CALID GetCalID() const;
Valor devuelto
Una de las constantes de identificador de calendario.
Comentarios
Un identificador de calendario indica un calendario específico de la región, como los calendarios gregoriano (localizado), japonés o Hijri. La aplicación puede usar un identificador de calendario que tenga varias funciones de compatibilidad de lenguaje.
Este método envía el mensaje MCM_GETCALID, que se describe en Windows SDK.
CMonthCalCtrl::GetColor
Recupera el color de un área del control de calendario mensual especificado por nRegion.
COLORREF GetColor(int nRegion) const;
Parámetros
nRegion
Región del control de calendario mensual de la que se recupera el color. Para una lista de valores, vea el parámetro nRegion de SetColor.
Valor devuelto
Valor COLORREF que especifica el color asociado a la parte del control de calendario mensual, si se ejecuta correctamente. De lo contrario, esta función miembro devuelve -1.
CMonthCalCtrl::GetCurrentView
Recupera la vista que muestra actualmente el control de calendario mensual actual.
DWORD GetCurrentView() const;
Valor devuelto
La vista actual, que se indica mediante uno de los valores siguientes:
Valor | Significado |
---|---|
MCMV_MONTH | Vista mensual |
MCMV_YEAR | Vista anual |
MCMV_DECADE | Vista de década |
MCMV_CENTURY | Vista de siglo |
Comentarios
Este método envía el mensaje MCM_GETCURRENTVIEW, que se describe en Windows SDK.
Ejemplo
En el primer ejemplo del código se define la variable m_monthCalCtrl
, que se usa para acceder mediante programación al control de calendario mensual. Esta variable se utiliza en el siguiente ejemplo.
// Variable used to reference the month calendar control.
CMonthCalCtrl m_monthCalCtrl;
// Variable used to reference the splitbutton control.
CSplitButton m_splitButton;
En el ejemplo de código siguiente se informa de la vista que el control de calendario mensual muestra actualmente.
CString str;
CString msg = _T("The current calendar displays %s view.");
DWORD view = m_monthCalCtrl.GetCurrentView();
switch (view)
{
case MCMV_MONTH:
str.Format(msg, _T("month"));
break;
case MCMV_YEAR:
str.Format(msg, _T("year"));
break;
case MCMV_DECADE:
str.Format(msg, _T("decade"));
break;
case MCMV_CENTURY:
str.Format(msg, _T("century"));
break;
default:
str.Format(msg, _T("an unknown"));
break;
}
AfxMessageBox(str, MB_ICONINFORMATION);
CMonthCalCtrl::GetCurSel
Recupera la hora del sistema tal como se indica en la fecha seleccionada actualmente.
BOOL GetCurSel(COleDateTime& refDateTime) const; BOOL GetCurSel(CTime& refDateTime) const;
BOOL GetCurSel(LPSYSTEMTIME pDateTime) const;
Parámetros
refDateTime
Referencia a un objeto COleDateTime o a un objeto CTime. Recibe la hora actual.
pDateTime
Puntero a una estructura SYSTEMTIME que recibirá la información de fecha seleccionada actualmente. Este parámetro debe ser una dirección válida y no puede ser NULL.
Valor devuelto
Distinto de cero, si se ejecuta correctamente; en caso contrario, 0.
Comentarios
Esta función miembro implementa el comportamiento del mensaje MCM_GETCURSEL de Win32, tal y como se describe en Windows SDK.
Nota:
Se produce un error en esta función miembro si se establece el estilo MCS_MULTISELECT.
En la implementación de MFC de GetCurSel
, puede especificar un uso de COleDateTime
, un uso de CTime
o un uso de estructura SYSTEMTIME
.
CMonthCalCtrl::GetFirstDayOfWeek
Obtiene el primer día de la semana que se va a mostrar en la columna situada más a la izquierda del calendario.
int GetFirstDayOfWeek(BOOL* pbLocal = NULL) const;
Parámetros
pbLocal
Puntero a un valor BOOL. Si el valor es distinto de cero, el valor del control no coincide con el valor del panel de control.
Valor devuelto
Valor entero que representa el primer día de la semana. Vea Comentarios para más información sobre lo que representan estos enteros.
Comentarios
Esta función miembro implementa el comportamiento del mensaje MCM_GETFIRSTDAYOFWEEK de Win32, tal y como se describe en Windows SDK. Los días de la semana se representan como enteros, según se indica a continuación.
Valor | Día de la semana |
---|---|
0 | Lunes |
1 | Martes |
2 | Miércoles |
3 | Jueves |
4 | Viernes |
5 | Sábado |
6 | Domingo |
Ejemplo
Vea el ejemplo de CMonthCalCtrl::SetFirstDayOfWeek.
CMonthCalCtrl::GetMaxSelCount
Recupera el número máximo de días actuales que se pueden seleccionar en un control de calendario mensual.
int GetMaxSelCount() const;
Valor devuelto
Valor entero que representa el número total de días que se pueden seleccionar para el control.
Comentarios
Esta función miembro implementa el comportamiento del mensaje MCM_GETMAXSELCOUNT de Win32, tal y como se describe en Windows SDK. Use esta función miembro para los controles con el conjunto de estilos MCS_MULTISELECT.
Ejemplo
Vea el ejemplo de CMonthCalCtrl::SetMaxSelCount.
CMonthCalCtrl::GetMaxTodayWidth
Recupera el ancho máximo de la cadena "Today" para el control de calendario mensual actual.
DWORD GetMaxTodayWidth() const;
Valor devuelto
Ancho de la cadena "Today", en píxeles.
Ejemplo
En el primer ejemplo del código se define la variable m_monthCalCtrl
, que se usa para acceder mediante programación al control de calendario mensual. Esta variable se utiliza en el siguiente ejemplo.
// Variable used to reference the month calendar control.
CMonthCalCtrl m_monthCalCtrl;
// Variable used to reference the splitbutton control.
CSplitButton m_splitButton;
En el siguiente código de ejemplo se muestra el método GetMaxTodayWidth
.
DWORD width = m_monthCalCtrl.GetMaxTodayWidth();
CString str;
str.Format(_T("The maximum today width is %d."), width);
AfxMessageBox(str, MB_ICONINFORMATION);
Comentarios
El usuario puede volver a la fecha actual haciendo clic en la cadena "Today", que se muestra en la parte inferior del control de calendario mensual. La cadena "Today" incluye texto de etiqueta y texto de fecha.
Este método envía el mensaje MCM_GETMAXTODAYWIDTH, que se describe en Windows SDK.
CMonthCalCtrl::GetMinReqRect
Recupera el tamaño mínimo necesario para mostrar un mes completo en un control de calendario mensual.
BOOL GetMinReqRect(RECT* pRect) const;
Parámetros
pRect
Puntero a una estructura RECT que recibirá información de rectángulo delimitador. Este parámetro debe ser una dirección válida y no puede ser NULL.
Valor devuelto
Si se ejecuta correctamente, esta función miembro devuelve un valor distinto de cero y lpRect
recibe la información de límite aplicable. Si no se realiza correctamente, la función miembro devuelve 0.
Comentarios
Esta función miembro implementa el comportamiento del mensaje MCM_GETMINREQRECT de Win32, tal y como se describe en Windows SDK.
CMonthCalCtrl::GetMonthDelta
Recupera la tasa de desplazamiento para un control de calendario mensual.
int GetMonthDelta() const;
Valor devuelto
La tasa de desplazamiento para el control de calendario mensual. La tasa de desplazamiento es el número de meses que el control mueve su presentación cuando el usuario hace clic en un botón de desplazamiento una vez.
Comentarios
Esta función miembro implementa el comportamiento del mensaje MCM_GETMONTHDELTA de Win32, tal y como se describe en Windows SDK.
CMonthCalCtrl::GetMonthRange
Recupera la información de fecha que representa los límites superior e inferior de la presentación del control de calendario mensual.
int GetMonthRange(
COleDateTime& refMinRange,
COleDateTime& refMaxRange,
DWORD dwFlags) const;
int GetMonthRange(
CTime& refMinRange,
CTime& refMaxRange,
DWORD dwFlags) const;
int GetMonthRange(
LPSYSTEMTIME pMinRange,
LPSYSTEMTIME pMaxRange,
DWORD dwFlags) const;
Parámetros
refMinRange
Referencia a un objeto COleDateTime o CTime que contiene la fecha mínima permitida.
refMaxRange
Referencia a un objeto COleDateTime
o CTime
que contiene la fecha máxima permitida.
pMinRange
Puntero a una estructura SYSTEMTIME que contiene la fecha en el extremo inferior del intervalo.
pMaxRange
Puntero a una estructura SYSTEMTIME
que contiene la fecha en el extremo superior del intervalo.
dwFlags
Valor que especifica el ámbito de los límites de intervalo que se van a recuperar. Este valor debe ser uno de los siguientes.
Valor | Significado |
---|---|
GMR_DAYSTATE | Incluye los meses anterior y final del intervalo visible que solo se muestran parcialmente. |
GMR_VISIBLE | Incluye solo los meses que se muestran por completo. |
Valor devuelto
Entero que representa el intervalo, en meses, que abarca hasta los dos límites indicados por refMinRange y refMaxRange en las versiones primera y segunda, o pMinRange y pMaxRange en la tercera versión.
Comentarios
Esta función miembro implementa el comportamiento del mensaje MCM_GETMONTHRANGE de Win32, tal y como se describe en Windows SDK. En la implementación de MFC de GetMonthRange
, puede especificar un uso de COleDateTime
, un uso de CTime
o un uso de estructura SYSTEMTIME
.
Ejemplo
Vea el ejemplo de CMonthCalCtrl::SetDayState.
CMonthCalCtrl::GetRange
Recupera las fechas mínima y máxima actuales establecidas en un control de calendario mensual.
DWORD GetRange(
COleDateTime* pMinRange,
COleDateTime* pMaxRange) const;
DWORD GetRange(
CTime* pMinRange,
CTime* pMaxRange) const;
DWORD GetRange(
LPSYSTEMTIME pMinRange,
LPSYSTEMTIME pMaxRange) const;
Parámetros
pMinRange
Puntero a un objeto COleDateTime
, un objeto CTime
o una estructura SYSTEMTIME que contiene la fecha en el extremo inferior del intervalo.
pMaxRange
Puntero a un objeto COleDateTime
, un objeto CTime
o una estructura SYSTEMTIME que contiene la fecha en el extremo superior del intervalo.
Valor devuelto
DWORD que puede ser cero (no se establecen límites) o una combinación de los valores siguientes que especifican información de límite.
Valor | Significado |
---|---|
GDTR_MAX | Se establece un límite máximo para el control; pMaxRange es válido y contiene la información de fecha aplicable. |
GDTR_MIN | Se establece un límite mínimo para el control; pMinRange es válido y contiene la información de fecha aplicable. |
Comentarios
Esta función miembro implementa el comportamiento del mensaje MCM_GETRANGE de Win32, tal y como se describe en Windows SDK. En la implementación de MFC de GetRange
, puede especificar un uso de COleDateTime
, un uso de CTime
o un uso de estructura SYSTEMTIME
.
Ejemplo
// This code fragment sets a variety of ranges in the
// control, and calls a separate function to show the
// set range to the user.
void CMonthCalDlg::OnBnClickedRangebutton()
{
// set minimum of January 1st, 1995 with no maximum
COleDateTime dtMin;
COleDateTime dtMax;
dtMin = COleDateTime(1995, 1, 1, 0, 0, 0);
dtMax.SetStatus(COleDateTime::null);
m_calCtrl1.SetRange(&dtMin, &dtMax);
ShowRange(&m_calCtrl1);
// set no minimum and a maximum of September 30th, 1997
dtMin.SetStatus(COleDateTime::null);
dtMax = COleDateTime(1997, 9, 30, 0, 0, 0);
m_calCtrl1.SetRange(&dtMin, &dtMax);
ShowRange(&m_calCtrl1);
// set minimum of April 15, 1992 and maximum of June 5, 2002
dtMin = COleDateTime(1992, 4, 15, 0, 0, 0);
dtMax = COleDateTime(2002, 6, 5, 0, 0, 0);
m_calCtrl1.SetRange(&dtMin, &dtMax);
ShowRange(&m_calCtrl1);
}
void CMonthCalDlg::ShowRange(CMonthCalCtrl *pMoCalCtrl)
{
ASSERT(pMoCalCtrl != NULL);
CString strMessage;
COleDateTime dtMinimum;
COleDateTime dtMaximum;
// Get the range
DWORD dwResult = pMoCalCtrl->GetRange(&dtMinimum, &dtMaximum);
// If a minimum was specified, format it
// otherwise, indicate that there is no lower bound
if (dwResult & GDTR_MIN)
strMessage += dtMinimum.Format(_T("Minimum range is %x %X.\r\n"));
else
strMessage += _T("No minimum range.\r\n");
// Treat maximum similarly
if (dwResult & GDTR_MAX)
strMessage += dtMaximum.Format(_T("Maximum range is %x %X.\r\n"));
else
strMessage += _T("No maximum range.\r\n");
// Show the user
AfxMessageBox(strMessage);
}
CMonthCalCtrl::GetSelRange
Recupera la información de fecha que representa los límites superior e inferior del intervalo de fechas seleccionado actualmente por el usuario.
BOOL GetSelRange(
COleDateTime& refMinRange,
COleDateTime& refMaxRange) const;
BOOL GetSelRange(
CTime& refMinRange,
CTime& refMaxRange) const;
BOOL GetSelRange(
LPSYSTEMTIME pMinRange,
LPSYSTEMTIME pMaxRange) const;
Parámetros
refMinRange
Referencia a un objeto COleDateTime o CTime que contiene la fecha mínima permitida.
refMaxRange
Referencia a un objeto COleDateTime
o CTime
que contiene la fecha máxima permitida.
pMinRange
Puntero a una estructura SYSTEMTIME que contiene la fecha en el extremo inferior del intervalo.
pMaxRange
Puntero a una estructura SYSTEMTIME
que contiene la fecha en el extremo superior del intervalo.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
Comentarios
Esta función miembro implementa el comportamiento del mensaje MCM_GETSELRANGE de Win32, tal y como se describe en Windows SDK. GetSelRange
generará un error si se aplica a un control de calendario mensual que no usa el estilo MCS_MULTISELECT.
En la implementación de MFC de GetSelRange
, puede especificar un uso de COleDateTime
, un uso de CTime
o un uso de estructura SYSTEMTIME
.
CMonthCalCtrl::GetToday
Recupera la información de fecha para la fecha especificada como "today" para un control de calendario mensual.
BOOL GetToday(COleDateTime& refDateTime) const; BOOL GetToday(COleDateTime& refDateTime) const;
BOOL GetToday(LPSYSTEMTIME pDateTime) const;
Parámetros
refDateTime
Referencia a un objeto COleDateTime o CTime que indica el día actual.
pDateTime
Puntero a una estructura SYSTEMTIME que recibirá la información de fecha. Este parámetro debe ser una dirección válida y no puede ser NULL.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
Comentarios
Esta función miembro implementa el comportamiento del mensaje MCM_GETTODAY de Win32, tal y como se describe en Windows SDK. En la implementación de MFC de GetToday
, puede especificar un uso de COleDateTime
, un uso de CTime
o un uso de estructura SYSTEMTIME
.
Ejemplo
void CMonthCalDlg::OnBnClickedGettodaybutton()
{
COleDateTime timeToday;
if (m_calCtrl1.GetToday(timeToday))
{
// Format the date information from the value we received
// and post a message box about it.
CString str = timeToday.Format(VAR_DATEVALUEONLY);
AfxMessageBox(str);
// Set the control's "today" indicator to be five
// days previous.
timeToday -= 5;
m_calCtrl1.SetToday(timeToday);
}
else
{
// Something is wrong!
ASSERT(FALSE);
}
}
CMonthCalCtrl::HitTest
Determina qué control de calendario mensual, si existe, está en una posición especificada.
DWORD HitTest(PMCHITTESTINFO pMCHitTest);
Parámetros
pMCHitTest
Puntero a una estructura MCHITTESTINFO que contiene puntos de prueba de posicionamiento para el control de calendario mensual.
Valor devuelto
Valor DWORD. Igual al miembro uHit de la estructura MCHITTESTINFO
.
Comentarios
HitTest
usa la estructura MCHITTESTINFO
, que contiene información sobre la prueba de posicionamiento.
CMonthCalCtrl::IsCenturyView
Indica si la vista actual del control de calendario mensual actual es la vista de siglo.
BOOL IsCenturyView() const;
Valor devuelto
TRUE si la vista actual es una vista de siglo; de lo contrario, FALSE.
Comentarios
Este método envía el mensaje MCM_GETCURRENTVIEW, que se describe en Windows SDK. Si ese mensaje devuelve MCMV_CENTURY, este método devuelve TRUE.
CMonthCalCtrl::IsDecadeView
Indica si la vista actual del control de calendario mensual actual es la vista de década.
BOOL IsDecadeView() const;
Valor devuelto
TRUE si la vista actual es una vista de década; de lo contrario, FALSE.
Comentarios
Este método envía el mensaje MCM_GETCURRENTVIEW, que se describe en Windows SDK. Si ese mensaje devuelve MCMV_DECADE, este método devuelve TRUE.
CMonthCalCtrl::IsMonthView
Indica si la vista actual del control de calendario mensual actual es la vista de mes.
BOOL IsMonthView() const;
Valor devuelto
TRUE si la vista actual es una vista de mes; de lo contrario, FALSE.
Comentarios
Este método envía el mensaje MCM_GETCURRENTVIEW, que se describe en Windows SDK. Si ese mensaje devuelve MCMV_MONTH, este método devuelve TRUE.
CMonthCalCtrl::IsYearView
Indica si la vista actual del control de calendario mensual actual es la vista de año.
BOOL IsYearView() const;
Valor devuelto
TRUE si la vista actual es una vista de año; de lo contrario, FALSE.
Comentarios
Este método envía el mensaje MCM_GETCURRENTVIEW, que se describe en Windows SDK. Si ese mensaje devuelve MCMV_YEAR, este método devuelve TRUE.
CMonthCalCtrl::SetCalendarBorder
Establece el ancho del borde del control de calendario mensual actual.
void SetCalendarBorder(int cxyBorder);
Parámetros
cxyBorder
[in] El ancho del borde en píxeles.
Comentarios
Si este método se ejecuta correctamente, el ancho del borde se establece en el parámetro cxyBorder. De lo contrario, el ancho del borde se restablece en el valor predeterminado especificado por el tema actual o cero si no se usan temas.
Este método envía el mensaje MCM_SETCALENDARBORDER, que se describe en Windows SDK.
Ejemplo
En el primer ejemplo del código se define la variable m_monthCalCtrl
, que se usa para acceder mediante programación al control de calendario mensual. Esta variable se utiliza en el siguiente ejemplo.
// Variable used to reference the month calendar control.
CMonthCalCtrl m_monthCalCtrl;
// Variable used to reference the splitbutton control.
CSplitButton m_splitButton;
En el ejemplo de código siguiente se establece el ancho de borde del control de calendario mensual en ocho píxeles. Use el método CMonthCalCtrl::GetCalendarBorder para determinar si este método se realizó correctamente.
// Use the GetCalendarBorder() method to determine whether
// this method succeeded or failed.
m_monthCalCtrl.SetCalendarBorder(8);
CMonthCalCtrl::SetCalendarBorderDefault
Establece el ancho predeterminado del borde del control de calendario mensual actual.
void SetCalendarBorderDefault();
Comentarios
El ancho del borde se establece en el valor predeterminado especificado por el tema actual o cero si no se usan temas.
Este método envía el mensaje MCM_SETCALENDARBORDER, que se describe en Windows SDK.
CMonthCalCtrl::SetCalID
Establece el identificador de calendario para el control de calendario mensual actual.
BOOL SetCalID(CALID calid);
Parámetros
calid
[in] Una de las constantes de identificador de calendario.
Valor devuelto
TRUE si este método se ejecuta correctamente; de lo contrario, FALSE.
Comentarios
Un identificador de calendario especifica un calendario específico de la región, como los calendarios gregoriano (localizado), japonés o Hijri. Use el método SetCalID
para mostrar un calendario especificado por el parámetro calid si la configuración regional que contiene el calendario está instalada en el equipo.
Este método envía el mensaje MCM_SETCALID, que se describe en Windows SDK.
Ejemplo
En el primer ejemplo del código se define la variable m_monthCalCtrl
, que se usa para acceder mediante programación al control de calendario mensual. Esta variable se utiliza en el siguiente ejemplo.
// Variable used to reference the month calendar control.
CMonthCalCtrl m_monthCalCtrl;
// Variable used to reference the splitbutton control.
CSplitButton m_splitButton;
En el ejemplo de código siguiente se establece el control de calendario mensual para mostrar el calendario de la Era del emperador japonés. El método SetCalID
solo se realiza correctamente si ese calendario está instalado en el equipo.
BOOL rc = m_monthCalCtrl.SetCalID(CAL_JAPAN);
CString str = _T("Calendar change ");
;
if (rc == TRUE)
str += _T("succeeded.");
else
{
str += _T("failed.\n");
str += _T("Perhaps this locale is not installed.");
}
AfxMessageBox(str, MB_ICONINFORMATION);
CMonthCalCtrl::SetCenturyView
Establece el control de calendario mensual actual para mostrar la vista de siglo.
BOOL SetCenturyView();
Valor devuelto
TRUE si este método se ejecuta correctamente; de lo contrario, FALSE.
Comentarios
Este método usa el método CMonthCalCtrl::SetCurrentView para establecer la vista en MCMV_CENTURY
, que representa la vista de siglo.
CMonthCalCtrl::SetColor
Establece el color de un área especificada de un control de calendario mensual.
COLORREF SetColor(
int nRegion,
COLORREF ref);
Parámetros
nRegion
Valor entero que especifica qué color de calendario mensual se va a establecer. Puede tomar uno de los valores siguientes.
Valor | Significado |
---|---|
MCSC_BACKGROUND | Color de fondo mostrado entre meses. |
MCSC_MONTHBK | Color de fondo que se muestra dentro del mes. |
MCSC_TEXT | Color usado para mostrar texto en un mes. |
MCSC_TITLEBK | Color de fondo que se muestra en el título del calendario. |
MCSC_TITLETEXT | Color usado para mostrar texto en el título del calendario. |
MCSC_TRAILINGTEXT | Color usado para mostrar el texto de los días de encabezado y finales. Los días de encabezado y finales son los días de los meses anterior y siguiente que aparecen en el calendario actual. |
ref
Valor COLORREF para la nueva configuración de color para la parte especificada del control de calendario mensual.
Valor devuelto
Valor COLORREF que representa la configuración de color anterior para la parte especificada del control de calendario mensual, si se ejecuta correctamente. De lo contrario, este mensaje devuelve -1.
Comentarios
Esta función miembro implementa el comportamiento del mensaje MCM_SETCOLOR de Win32, tal y como se describe en Windows SDK.
Ejemplo
// Set colors for title text and title background to match
// the Control Panel settings for inactive window captions.
m_calCtrl1.SetColor(MCSC_TITLETEXT, ::GetSysColor(COLOR_INACTIVECAPTIONTEXT));
m_calCtrl1.SetColor(MCSC_TITLEBK, ::GetSysColor(COLOR_INACTIVECAPTION));
CMonthCalCtrl::SetCurrentView
Establece el control de calendario mensual actual para mostrar la vista especificada.
BOOL SetCurrentView(DWORD dwNewView);
Parámetros
dwNewView
[in] Uno de los valores siguientes que especifica una vista mensual, anual, de década o de siglo.
MCMV_MONTH
: vista mensualMCMV_YEAR
: vista anualMCMV_DECADE
: vista de décadaMCMV_CENTURY
: vista de siglo
Valor devuelto
TRUE si este método se ejecuta correctamente; de lo contrario, FALSE.
Comentarios
Este método envía el mensaje MCM_SETCURRENTVIEW, que se describe en Windows SDK.
CMonthCalCtrl::SetCurSel
Establece la fecha seleccionada actualmente para un control de calendario mensual.
BOOL SetCurSel(const COleDateTime& refDateTime);
BOOL SetCurSel(const CTime& refDateTime);
BOOL SetCurSel(const LPSYSTEMTIME pDateTime);
Parámetros
refDateTime
Referencia a un objeto COleDateTime o CTime que indica el control de calendario mensual seleccionado actualmente.
pDateTime
Puntero a una estructura SYSTEMTIME que contiene la fecha que se va a establecer como selección actual.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
Comentarios
Esta función miembro implementa el comportamiento del mensaje MCM_SETCURSEL de Win32, tal y como se describe en Windows SDK. En la implementación de MFC de SetCurSel
, puede especificar un uso de COleDateTime
, un uso de CTime
o un uso de estructura SYSTEMTIME
.
Ejemplo
void CMonthCalDlg::OnBnClickedCurselbutton()
{
// All of these calls set the current selection to March 15, 1998.
// with a COleDateTime
COleDateTime dt1(1998, 3, 15, 0, 0, 0);
m_calCtrl1.SetCurSel(dt1);
// with a CTime
CTime dt2(1998, 3, 15, 0, 0, 0);
m_calCtrl1.SetCurSel(dt2);
// with a SYSTEMTIME structure
SYSTEMTIME sysTime;
// set everything to zero
memset(&sysTime, 0, sizeof(sysTime));
// except for the date we want
sysTime.wYear = 1998;
sysTime.wMonth = 3;
sysTime.wDay = 15;
m_calCtrl1.SetCurSel(&sysTime);
}
CMonthCalCtrl::SetDayState
Establece la presentación de días en un control de calendario mensual.
BOOL SetDayState(
int nMonths,
LPMONTHDAYSTATE pStates);
Parámetros
nMonths
Valor que indica cuántos elementos hay en la matriz a la que apunta pStates.
pStates
Puntero a una matriz MONTHDAYSTATE de valores que definen cómo dibujará el control de calendario mensual cada día en su presentación. El tipo de datos MONTHDAYSTATE es un campo de bits, donde cada bit (de 1 a 31) representa el estado de un día de un mes. Si un bit está activado, el día correspondiente se mostrará en negrita; de lo contrario, se mostrará sin énfasis.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
Comentarios
Esta función miembro implementa el comportamiento del mensaje MCM_SETDAYSTATE de Win32, tal y como se describe en Windows SDK.
Ejemplo
void CMonthCalDlg::OnBnClickedDaystatebutton()
{
// First, we must find the visible range. The array we pass to the
// SetDayState() function must be large enough to hold days for all
// of the visible months. Even if a month is _partially_ visible,
// we must have MONTHDAYSTATE data for it in the array we pass.
// GetMonthRange() returns the range of days currently visible in
// the control, along with a count of visible months. This array
// will be up to 2 months larger than the number of "pages" visible
// in the control.
SYSTEMTIME timeFrom;
SYSTEMTIME timeUntil;
int nCount = m_calCtrl1.GetMonthRange(&timeFrom, &timeUntil, GMR_DAYSTATE);
// Allocate the state array based on the return value.
LPMONTHDAYSTATE pDayState;
pDayState = new MONTHDAYSTATE[nCount];
memset(pDayState, 0, sizeof(MONTHDAYSTATE) * nCount);
// Find the first fully visible month.
int nIndex = (timeFrom.wDay == 1) ? 0 : 1;
// Set the 4th day, 19th day, and 26th day of the first
// _fully_ visible month as bold.
pDayState[nIndex] |= 1 << 3; // 4th day
pDayState[nIndex] |= 1 << 18; // 19th day
pDayState[nIndex] |= 1 << 25; // 25th day
// Set state and clean up
VERIFY(m_calCtrl1.SetDayState(nCount, pDayState));
delete[] pDayState;
}
CMonthCalCtrl::SetDecadeView
Establece el control de calendario mensual actual en la vista de década.
BOOL SetDecadeView();
Valor devuelto
TRUE si este método se ejecuta correctamente; de lo contrario, FALSE.
Comentarios
Este método usa el método CMonthCalCtrl::SetCurrentView para establecer la vista en MCMV_DECADE
, que representa la vista de década.
CMonthCalCtrl::SetFirstDayOfWeek
Establece el primer día de la semana que se va a mostrar en la columna situada más a la izquierda del calendario.
BOOL SetFirstDayOfWeek(
int iDay,
int* lpnOld = NULL);
Parámetros
iDay
Valor entero que representa el día que se va a establecer como el primer día de la semana. Este valor debe ser uno de los números de día. Consulte GetFirstDayOfWeek para una descripción de los números de día.
lpnOld
Puntero a un entero que indica el primer día de la semana establecido anteriormente.
Valor devuelto
Distinto de cero si el primer día de la semana anterior está establecido en un valor distinto del de LOCALE_IFIRSTDAYOFWEEK, que es el día indicado en la configuración del panel de control. De lo contrario, esta función devuelve 0.
Comentarios
Esta función miembro implementa el comportamiento del mensaje MCM_SETFIRSTDAYOFWEEK de Win32, tal y como se describe en Windows SDK.
Ejemplo
// This work isn't normally necessary, since the control will set
// the day of the week to match the system locale by itself.
// Ask the system for the first day of the week
TCHAR sz[2];
GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_IFIRSTDAYOFWEEK, sz, 2);
// Convert from string result
int nFirstDay = _ttoi(sz);
// Set it and assert that it was successful.
m_calCtrl1.SetFirstDayOfWeek(nFirstDay);
ASSERT(m_calCtrl1.GetFirstDayOfWeek() == nFirstDay);
CMonthCalCtrl::SetMaxSelCount
Establece el número máximo de días que se pueden seleccionar en un control de calendario mensual.
BOOL SetMaxSelCount(int nMax);
Parámetros
nMax
Valor que se establecerá para representar el número máximo de días seleccionables.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
Comentarios
Esta función miembro implementa el comportamiento del mensaje MCM_SETMAXSELCOUNT de Win32, tal y como se describe en Windows SDK.
Ejemplo
// The control needs to have the MCS_MULTISELECT style
// for the following code to work.
// change the maximum selection count
m_calCtrl2.SetMaxSelCount(10);
// check that the change was really made
ASSERT(m_calCtrl2.GetMaxSelCount() == 10);
CMonthCalCtrl::SetMonthDelta
Establece la tasa de desplazamiento para un control de calendario mensual.
int SetMonthDelta(int iDelta);
Parámetros
iDelta
Número de meses que se van a establecer como tasa de desplazamiento del control. Si este valor es cero, la diferencia de mes se restablece en el valor predeterminado, que es el número de meses que se muestran en el control.
Valor devuelto
Tasa de desplazamiento anterior. Si no se ha establecido previamente la tasa de desplazamiento, el valor devuelto es 0.
Comentarios
Esta función miembro implementa el comportamiento del mensaje MCM_SETMONTHDELTA de Win32, tal y como se describe en Windows SDK.
CMonthCalCtrl::SetMonthView
Establece el control de calendario mensual actual para mostrar la vista de mes.
BOOL SetMonthView();
Valor devuelto
TRUE si este método se ejecuta correctamente; de lo contrario, FALSE.
Comentarios
Este método usa el método CMonthCalCtrl::SetCurrentView para establecer la vista en MCMV_MONTH, que representa la vista de mes.
Ejemplo
En el primer ejemplo del código se define la variable m_monthCalCtrl
, que se usa para acceder mediante programación al control de calendario mensual. Esta variable se utiliza en el siguiente ejemplo.
// Variable used to reference the month calendar control.
CMonthCalCtrl m_monthCalCtrl;
// Variable used to reference the splitbutton control.
CSplitButton m_splitButton;
En el ejemplo de código siguiente se establece el control de calendario mensual para mostrar las vistas de mes, año, década y siglo.
void CCMonthCalCtrl_s1Dlg::OnSetviewSetmonthview()
{
m_monthCalCtrl.SetMonthView();
}
void CCMonthCalCtrl_s1Dlg::OnSetviewSetyearview()
{
m_monthCalCtrl.SetYearView();
}
void CCMonthCalCtrl_s1Dlg::OnSetviewSetdecadeview()
{
m_monthCalCtrl.SetDecadeView();
}
void CCMonthCalCtrl_s1Dlg::OnSetviewSetcenturyview()
{
m_monthCalCtrl.SetCenturyView();
}
CMonthCalCtrl::SetRange
Establece las fechas mínima y máxima permitidas para un control de calendario mensual.
BOOL SetRange(
const COleDateTime* pMinRange,
const COleDateTime* pMaxRange);
BOOL SetRange(
const CTime* pMinRange,
const CTime* pMaxRange);
BOOL SetRange(
const LPSYSTEMTIME pMinRange,
const LPSYSTEMTIME pMaxRange);
Parámetros
pMinRange
Puntero a un objeto COleDateTime
, un objeto CTime
o una estructura SYSTEMTIME que contiene la fecha en el extremo inferior del intervalo.
pMaxRange
Puntero a un objeto COleDateTime
, un objeto CTime
o una estructura SYSTEMTIME
que contiene la fecha en el extremo superior del intervalo.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
Comentarios
Esta función miembro implementa el comportamiento del mensaje MCM_SETRANGE de Win32, tal y como se describe en Windows SDK. En la implementación de MFC de SetRange
, puede especificar un uso de COleDateTime
, un uso de CTime
o un uso de estructura SYSTEMTIME
.
Ejemplo
Vea el ejemplo de CMonthCalCtrl::GetRange.
CMonthCalCtrl::SetSelRange
Establece la selección de un control de calendario mensual en un intervalo de fechas determinado.
BOOL SetSelRange(
const COleDateTime& pMinRange,
const COleDateTime& pMaxRange);
BOOL SetSelRange(
const CTime& pMinRange,
const CTime& pMaxRange);
BOOL SetSelRange(
const LPSYSTEMTIME pMinRange,
const LPSYSTEMTIME pMaxRange);
Parámetros
pMinRange
Puntero a un objeto COleDateTime
, un objeto CTime
o una estructura SYSTEMTIME que contiene la fecha en el extremo inferior del intervalo.
pMaxRange
Puntero a un objeto COleDateTime
, un objeto CTime
o una estructura SYSTEMTIME
que contiene la fecha en el extremo superior del intervalo.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
Comentarios
Esta función miembro implementa el comportamiento del mensaje MCM_SETSELRANGE de Win32, tal y como se describe en Windows SDK. En la implementación de MFC de SetSelRange
, puede especificar un uso de COleDateTime
, un uso de CTime
o un uso de estructura SYSTEMTIME
.
CMonthCalCtrl::SetToday
Establece el control de calendario para el día actual.
void SetToday(const COleDateTime& refDateTime);
void SetToday(const CTime* pDateTime);
void SetToday(const LPSYSTEMTIME pDateTime);
Parámetros
refDateTime
Referencia a un objeto COleDateTime que contiene la fecha actual.
pDateTime
En la segunda versión, un puntero a un objeto CTime que contiene la información de fecha actual. En la tercera versión, un puntero a una estructura SYSTEMTIME que contiene la información de fecha actual.
Comentarios
Esta función miembro implementa el comportamiento del mensaje MCM_SETTODAY de Win32, tal y como se describe en Windows SDK.
Ejemplo
Vea el ejemplo de CMonthCalCtrl::GetToday.
CMonthCalCtrl::SetYearView
Establece el control de calendario mensual actual en la vista de año.
BOOL SetYearView();
Valor devuelto
TRUE si este método se ejecuta correctamente; de lo contrario, FALSE.
Comentarios
Este método usa el método CMonthCalCtrl::SetCurrentView para establecer la vista en MCMV_YEAR, que representa la vista anual.
CMonthCalCtrl::SizeMinReq
Muestra el control de calendario mensual con el tamaño mínimo que muestra un mes.
BOOL SizeMinReq(BOOL bRepaint = TRUE);
Parámetros
bRepaint
Especifica si el control se va a volver a pintar. Valor predeterminado: TRUE. Si es FALSE, no se vuelve a pintar.
Valor devuelto
Distinto de cero si el control de calendario mensual tiene su tamaño mínimo; de lo contrario, 0.
Comentarios
Al llamar a SizeMinReq
correctamente, se muestra el control de calendario mensual completo para el calendario de un mes.
CMonthCalCtrl::SizeRectToMin
Para el control de calendario mensual actual, calcula el rectángulo más pequeño que puede contener todos los calendarios que caben en un rectángulo especificado.
LPRECT SizeRectToMin(LPRECT lpRect);
Parámetros
lpRect
[in] Puntero a una estructura RECT que define un rectángulo que contiene el número deseado de calendarios.
Valor devuelto
Puntero a una estructura RECT que define un rectángulo cuyo tamaño es menor o igual que el rectángulo definido por el parámetro lpRect.
Comentarios
Este método calcula cuántos calendarios pueden caber en el rectángulo especificado por el parámetro lpRect y, a continuación, devuelve el rectángulo más pequeño que puede contener ese número de calendarios. En efecto, este método reduce el rectángulo especificado para ajustarse exactamente al número deseado de calendarios.
Este método envía el mensaje MCM_SIZERECTTOMIN, que se describe en Windows SDK.
Consulte también
Ejemplo CMNCTRL1 de MFC
CWnd (clase)
Gráfico de jerarquías
CDateTimeCtrl (clase)