Classe CMonthCalCtrl
Encapsula a funcionalidade de um controle de calendário de mês.
Sintaxe
class CMonthCalCtrl : public CWnd
Membros
Construtores públicos
Nome | Descrição |
---|---|
CMonthCalCtrl::CMonthCalCtrl | Constrói um objeto CMonthCalCtrl . |
Métodos públicos
Nome | Descrição |
---|---|
CMonthCalCtrl::Create | Cria um controle de calendário de mês e o anexa ao objeto CMonthCalCtrl . |
CMonthCalCtrl::GetCalendarBorder | Recupera a largura da borda do controle de calendário do mês atual. |
CMonthCalCtrl::GetCalendarCount | Recupera o número de calendários exibidos no controle de calendário do mês atual. |
CMonthCalCtrl::GetCalendarGridInfo | Recupera informações sobre o controle de calendário do mês atual. |
CMonthCalCtrl::GetCalID | Recupera o identificador de calendário para o controle de calendário do mês atual. |
CMonthCalCtrl::GetColor | Obtém a cor de uma área especificada de um controle de calendário de mês. |
CMonthCalCtrl::GetCurrentView | Recupera a exibição mostrada atualmente pelo controle de calendário do mês atual. |
CMonthCalCtrl::GetCurSel | Recupera a hora do sistema, conforme indicado pela data selecionada no momento. |
CMonthCalCtrl::GetFirstDayOfWeek | Obtém o primeiro dia da semana a ser exibido na coluna mais à esquerda do calendário. |
CMonthCalCtrl::GetMaxSelCount | Obtém ou define o número máximo de dias que podem ser selecionados em um controle de calendário mensal. |
CMonthCalCtrl::GetMaxTodayWidth | Recupera a largura máxima da cadeia de caracteres "Hoje" para o controle de calendário do mês atual. |
CMonthCalCtrl::GetMinReqRect | Recupera o tamanho mínimo necessário para mostrar um mês inteiro em um controle de calendário mensal. |
CMonthCalCtrl::GetMonthDelta | Recupera a taxa de rolagem de um controle de calendário de mês. |
CMonthCalCtrl::GetMonthRange | Recupera informações de data que representam os limites altos e baixos da exibição de um controle de calendário de um mês. |
CMonthCalCtrl::GetRange | Recupera as datas mínimas e máximas atuais definidas em um controle de calendário de mês. |
CMonthCalCtrl::GetSelRange | Recupera informações de data que representam os limites superior e inferior do intervalo de datas selecionado atualmente pelo usuário. |
CMonthCalCtrl::GetToday | Recupera as informações de data para a data especificada como "hoje" para um controle de calendário de mês. |
CMonthCalCtrl::HitTest | Determina qual seção de um controle de calendário de mês está em um determinado ponto na tela. |
CMonthCalCtrl::IsCenturyView | Indica se a exibição atual do controle de calendário de mês atual é a exibição de século. |
CMonthCalCtrl::IsDecadeView | Indica se a exibição atual do controle de calendário de mês atual é a exibição de década. |
CMonthCalCtrl::IsMonthView | Indica se a exibição atual do controle de calendário de mês atual é a exibição de mês. |
CMonthCalCtrl::IsYearView | Indica se a exibição atual do controle de calendário de mês atual é a exibição de ano. |
CMonthCalCtrl::SetCalendarBorder | Define a largura da borda do controle de calendário de mês atual. |
CMonthCalCtrl::SetCalendarBorderDefault | Define a largura padrão da borda do controle de calendário de mês atual. |
CMonthCalCtrl::SetCalID | Define o identificador de calendário para o controle de calendário de mês atual. |
CMonthCalCtrl::SetCenturyView | Define o controle de calendário de mês atual para exibir a exibição do século. |
CMonthCalCtrl::SetColor | Define a cor de uma área especificada de um controle de calendário de mês. |
CMonthCalCtrl::SetCurrentView | Define o controle de calendário do mês atual para exibir o modo de exibição especificada. |
CMonthCalCtrl::SetCurSel | Define a data selecionada no momento para um controle de calendário de mês. |
CMonthCalCtrl::SetDayState | Define a exibição para dias em um controle de calendário de mês. |
CMonthCalCtrl::SetDecadeView | Define o controle de calendário do mês atual para a exibição de década. |
CMonthCalCtrl::SetFirstDayOfWeek | Define o dia da semana a ser exibido na coluna mais à esquerda do calendário. |
CMonthCalCtrl::SetMaxSelCount | Define o número máximo de dias que podem ser selecionados em um controle de calendário de mês. |
CMonthCalCtrl::SetMonthDelta | Define a taxa de rolagem de um controle de calendário de mês. |
CMonthCalCtrl::SetMonthView | Define o controle de calendário do mês atual para exibir o modo de exibição de mês. |
CMonthCalCtrl::SetRange | Define as datas mínimas e máximas permitidas para um controle de calendário de mês. |
CMonthCalCtrl::SetSelRange | Define a seleção de um controle de calendário de mês para um determinado intervalo de datas. |
CMonthCalCtrl::SetToday | Define o controle de calendário para o dia atual. |
CMonthCalCtrl::SetYearView | Define o controle de calendário de mês atual para exibição de ano. |
CMonthCalCtrl::SizeMinReq | Pinta novamente o controle de calendário de mês para seu tamanho mínimo de um mês. |
CMonthCalCtrl::SizeRectToMin | Para o controle de calendário de mês atual, calcula o menor retângulo que pode conter todos os calendários que se encaixam em um retângulo especificado. |
Comentários
O controle de calendário de mês fornece ao usuário uma interface de calendário simples na qual selecionar uma data. O usuário pode alterar a exibição:
Rolando para trás e para frente, de mês a mês.
Clicando no texto Hoje para exibir o dia atual (se o estilo MCS_NOTODAY não for usado).
Escolhendo um mês ou um ano em um menu pop-up.
Você pode personalizar o controle de calendário de mês aplicando uma variedade de estilos ao objeto ao criá-lo. Esses estilos são descritos em Estilos de controle de calendário de mês no SDK do Windows.
O controle de calendário de mês pode exibir mais de um mês e indicar dias especiais (como feriados) colocando a data em negrito.
Para mais informações sobre como usar o controle de calendário de mês, confira Como usar CMonthCalCtrl.
Hierarquia de herança
CMonthCalCtrl
Requisitos
Cabeçalho: afxdtctl.h
CMonthCalCtrl::CMonthCalCtrl
Constrói um objeto CMonthCalCtrl
.
CMonthCalCtrl();
Comentários
Você deve chamar Create
depois de construir o objeto.
CMonthCalCtrl::Create
Cria um controle de calendário de mês e o anexa ao 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 a combinação de estilos do Windows aplicados ao controle de calendário de mês. Confira Estilos de controle de calendário de mês no SDK do Windows para mais informações sobre os estilos.
rect
Uma referência a uma estrutura RECT. Contém a posição e o tamanho do controle de calendário do mês.
pt
Uma referência a uma estrutura POINT que identifica o local do controle de calendário do mês.
pParentWnd
Um ponteiro para um objeto CWnd que é a janela pai do controle de calendário do mês. Não pode ser NULL.
Nid
Especifica a ID de controle referente ao controle do calendário do mês.
Valor de retorno
Um valor diferente de zero, se a inicialização tiver êxito. Caso contrário, 0.
Comentários
Crie um controle de calendário de mês em duas etapas:
Chame CMonthCalCtrl para construir um objeto
CMonthCalCtrl
.Chame essa função de membro, que cria um controle de calendário de mês e a anexa ao objeto
CMonthCalCtrl
.
Quando você chama Create
, os controles comuns são inicializados. A versão de Create
que você chama determina como ela é dimensionada:
Para que o MFC dimensione automaticamente o controle para um mês, chame a substituição que usa o parâmetro pt.
Para dimensionar o controle por conta própria, chame a substituição dessa função que usa o parâmetro rect.
Exemplo
// 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 a largura da borda do controle de calendário do mês atual.
int GetCalendarBorder() const;
Valor de retorno
A largura da borda de controle em pixels.
Comentários
Esse método envia a mensagem MCM_GETCALENDARBORDER, que é descrita no SDK do Windows.
CMonthCalCtrl::GetCalendarCount
Recupera o número de calendários exibidos no controle de calendário do mês atual.
int GetCalendarCount() const;
Valor de retorno
O número de calendários exibidos atualmente no controle de calendário do mês. O número máximo permitido de calendários é 12.
Comentários
Esse método envia a mensagem MCM_GETCALENDARCOUNT, que é descrita no SDK do Windows.
CMonthCalCtrl::GetCalendarGridInfo
Recupera informações sobre o controle de calendário do mês atual.
BOOL GetCalendarGridInfo(PMCGRIDINFO pmcGridInfo) const;
Parâmetros
pmcGridInfo
[out] Ponteiro para uma estrutura MCGRIDINFO que recebe informações sobre o controle de calendário do mês atual. O chamador é responsável por alocar e inicializar essa estrutura.
Valor de retorno
TRUE se o método for bem-sucedido; caso contrário, FALSE.
Comentários
Esse método envia a mensagem MCM_GETCALENDARGRIDINFO, que é descrita no SDK do Windows.
Exemplo
O primeiro exemplo de código define a variável, m_monthCalCtrl
, que é usada para acessar programaticamente o controle de calendário de mês. Essa variável será usada no próximo exemplo.
// Variable used to reference the month calendar control.
CMonthCalCtrl m_monthCalCtrl;
// Variable used to reference the splitbutton control.
CSplitButton m_splitButton;
O próximo exemplo de código usa o método GetCalendarGridInfo
para recuperar a data do calendário que o controle de calendário do mês atual exibe.
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 o identificador de calendário para o controle de calendário do mês atual.
CALID GetCalID() const;
Valor de retorno
Uma das constantes do identificador de calendário.
Comentários
Um identificador de calendário indica um calendário específico da região, como os calendários gregoriano (localizado), japonês ou hijri. Seu aplicativo pode usar um identificador de calendário que tenha várias funções de suporte ao idioma.
Esse método envia a mensagem MCM_GETCALID, que é descrita no SDK do Windows.
CMonthCalCtrl::GetColor
Recupera a cor de uma área do controle de calendário de mês especificado por nRegion.
COLORREF GetColor(int nRegion) const;
Parâmetros
nRegion
A região do controle de calendário de mês da qual a cor é recuperada. Para uma lista de valores, confira o parâmetro nRegion de SetColor.
Valor de retorno
Um valor COLORREF que especifica a cor associada à parte do controle de calendário do mês, se bem-sucedido. Caso contrário, essa função membro retornará -1.
CMonthCalCtrl::GetCurrentView
Recupera a exibição mostrada atualmente pelo controle de calendário do mês atual.
DWORD GetCurrentView() const;
Valor de retorno
A exibição atual, que é indicada por um dos seguintes valores:
Valor | Significado |
---|---|
MCMV_MONTH | Exibição de mês |
MCMV_YEAR | Exibição de ano |
MCMV_DECADE | Exibição de década |
MCMV_CENTURY | Exibição de século |
Comentários
Esse método envia a mensagem MCM_GETCURRENTVIEW, que é descrita no SDK do Windows.
Exemplo
O primeiro exemplo de código define a variável, m_monthCalCtrl
, que é usada para acessar programaticamente o controle de calendário de mês. Essa variável será usada no próximo exemplo.
// Variable used to reference the month calendar control.
CMonthCalCtrl m_monthCalCtrl;
// Variable used to reference the splitbutton control.
CSplitButton m_splitButton;
O próximo exemplo de código relata que exibem o controle de calendário do mês atualmente exibido.
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 a hora do sistema, conforme indicado pela data selecionada no momento.
BOOL GetCurSel(COleDateTime& refDateTime) const; BOOL GetCurSel(CTime& refDateTime) const;
BOOL GetCurSel(LPSYSTEMTIME pDateTime) const;
Parâmetros
refDateTime
Uma referência a um objeto COleDateTime ou a um objeto CTime. Recebe a hora atual.
pDateTime
Um ponteiro para uma estrutura SYSTEMTIME que receberá as informações de data selecionadas no momento. Esse parâmetro deve ser um endereço válido e não pode ser NULL.
Valor de retorno
Não zero se tiver êxito; caso contrário, 0.
Comentários
Essa função membro implementa o comportamento da mensagem Win32 MCM_GETCURSEL, conforme descrito no SDK do Windows.
Observação
Essa função membro falhará se o estilo MCS_MULTISELECT estiver definido.
Na implementação do MFC de GetCurSel
, você pode especificar um uso COleDateTime
, um uso CTime
ou um uso de estrutura SYSTEMTIME
.
CMonthCalCtrl::GetFirstDayOfWeek
Obtém o primeiro dia da semana a ser exibido na coluna mais à esquerda do calendário.
int GetFirstDayOfWeek(BOOL* pbLocal = NULL) const;
Parâmetros
pbLocal
Um ponteiro para um valor BOOL. Se o valor não for zero, a configuração do controle não corresponderá à configuração no painel de controle.
Valor de retorno
Um valor de inteiro que representa o primeiro dia da semana. Confira Comentários para mais informações sobre o que esses inteiros representam.
Comentários
Essa função membro implementa o comportamento da mensagem Win32 MCM_GETFIRSTDAYOFWEEK, conforme descrito no SDK do Windows. Os dias da semana são representados como inteiros como segue.
Valor | Dia da semana |
---|---|
0 | Monday |
1 | Terça-feira |
2 | Quarta-feira |
3 | Quinta-feira |
4 | Sexta-feira |
5 | Sábado |
6 | Domingo |
Exemplo
Veja o exemplo de CMonthCalCtrl::SetFirstDayOfWeek.
CMonthCalCtrl::GetMaxSelCount
Obtém ou define o número máximo de dias que podem ser selecionados em um controle de calendário mensal.
int GetMaxSelCount() const;
Valor de retorno
Um valor inteiro que representa o número total de dias que podem ser selecionados para o controle.
Comentários
Essa função membro implementa o comportamento da mensagem Win32 MCM_GETMAXSELCOUNT, conforme descrito no SDK do Windows. Use essa função membro para controles com o conjunto de estilos MCS_MULTISELECT.
Exemplo
Confira o exemplo de CMonthCalCtrl::SetMaxSelCount.
CMonthCalCtrl::GetMaxTodayWidth
Recupera a largura máxima da cadeia de caracteres "Hoje" para o controle de calendário do mês atual.
DWORD GetMaxTodayWidth() const;
Valor de retorno
A largura da cadeia de caracteres "Hoje' em pixels.
Exemplo
O primeiro exemplo de código define a variável, m_monthCalCtrl
, que é usada para acessar programaticamente o controle de calendário de mês. Essa variável será usada no próximo exemplo.
// Variable used to reference the month calendar control.
CMonthCalCtrl m_monthCalCtrl;
// Variable used to reference the splitbutton control.
CSplitButton m_splitButton;
O próximo exemplo de código demonstra o método GetMaxTodayWidth
.
DWORD width = m_monthCalCtrl.GetMaxTodayWidth();
CString str;
str.Format(_T("The maximum today width is %d."), width);
AfxMessageBox(str, MB_ICONINFORMATION);
Comentários
O usuário pode retornar à data atual clicando na cadeia de caracteres "Hoje", que é exibida na parte inferior do controle de calendário do mês. A cadeia de caracteres "Hoje" inclui texto de etiqueta e texto de data.
Esse método envia a mensagem MCM_GETMAXTODAYWIDTH, que é descrita no SDK do Windows.
CMonthCalCtrl::GetMinReqRect
Recupera o tamanho mínimo necessário para mostrar um mês inteiro em um controle de calendário mensal.
BOOL GetMinReqRect(RECT* pRect) const;
Parâmetros
pRect
Um ponteiro para uma estrutura RECT que receberá informações de retângulo delimitador. Esse parâmetro deve ser um endereço válido e não pode ser NULL.
Valor de retorno
Se tiver êxito, essa função membro retornará sem zero e lpRect
receberá as informações delimitadoras aplicáveis. Se não tiver êxito, a função membro retornará 0.
Comentários
Essa função membro implementa o comportamento da mensagem Win32 MCM_GETMINREQRECT, conforme descrito no SDK do Windows.
CMonthCalCtrl::GetMonthDelta
Recupera a taxa de rolagem de um controle de calendário de mês.
int GetMonthDelta() const;
Valor de retorno
A taxa de rolagem do controle de calendário do mês. A taxa de rolagem é o número de meses pelo qual o controle move sua exibição quando o usuário clica em um botão de rolagem uma vez.
Comentários
Essa função membro implementa o comportamento da mensagem Win32 MCM_GETMONTHDELTA, conforme descrito no SDK do Windows.
CMonthCalCtrl::GetMonthRange
Recupera informações de data que representam os limites altos e baixos da exibição de um controle de calendário de um mês.
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
Uma referência a um objeto COleDateTime ou CTime que contém a data mínima permitida.
refMaxRange
Uma referência a um objeto COleDateTime
ou CTime
que contém a data máxima permitida.
pMinRange
Um ponteiro para uma estrutura SYSTEMTIME que contém a data na extremidade mais baixa do intervalo.
pMaxRange
Um ponteiro para uma estrutura SYSTEMTIME
que contém a data na extremidade mais alta do intervalo.
dwFlags
Valor que especifica o escopo dos limites de intervalo a serem recuperados. Esse valor deve ser um dos a seguir.
Valor | Significado |
---|---|
GMR_DAYSTATE | Inclua meses anteriores e à direita de intervalo visível que são exibidos apenas parcialmente. |
GMR_VISIBLE | Inclua apenas os meses que são exibidos por completo. |
Valor de retorno
Um inteiro que representa o intervalo, em meses, estendido pelos dois limites indicados por refMinRange e refMaxRange na primeira e na segunda versões, ou pMinRange e pMaxRange na terceira versão.
Comentários
Essa função membro implementa o comportamento da mensagem Win32 MCM_GETMONTHRANGE, conforme descrito no SDK do Windows. Na implementação do MFC de GetMonthRange
, você pode especificar o uso de COleDateTime
, o uso de CTime
ou o uso de uma estrutura SYSTEMTIME
.
Exemplo
Confira o exemplo de CMonthCalCtrl::SetDayState.
CMonthCalCtrl::GetRange
Recupera as datas mínimas e máximas atuais definidas em um controle de calendário de mês.
DWORD GetRange(
COleDateTime* pMinRange,
COleDateTime* pMaxRange) const;
DWORD GetRange(
CTime* pMinRange,
CTime* pMaxRange) const;
DWORD GetRange(
LPSYSTEMTIME pMinRange,
LPSYSTEMTIME pMaxRange) const;
Parâmetros
pMinRange
Um ponteiro para um objeto COleDateTime
, um objeto CTime
ou estrutura SYSTEMTIME que contém a data na extremidade mais baixa do intervalo.
pMaxRange
Um ponteiro para um objeto COleDateTime
, um objeto CTime
ou estrutura SYSTEMTIME que contém a data na extremidade mais alta do intervalo.
Valor de retorno
Uma DWORD que pode ser zero (nenhum limite é definido) ou uma combinação dos valores a seguir que especificam informações de limite.
Valor | Significado |
---|---|
GDTR_MAX | Um limite máximo é definido para o controle; pMaxRange é válido e contém as informações de data aplicáveis. |
GDTR_MIN | Um limite mínimo é definido para o controle; pMinRange é válido e contém as informações de data aplicáveis. |
Comentários
Essa função membro implementa o comportamento da mensagem Win32 MCM_GETRANGE, conforme descrito no SDK do Windows. Na implementação do MFC de GetRange
, você pode especificar um uso COleDateTime
, um uso CTime
ou um uso de estrutura SYSTEMTIME
.
Exemplo
// 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 informações de data que representam os limites superior e inferior do intervalo de datas selecionado atualmente pelo usuário.
BOOL GetSelRange(
COleDateTime& refMinRange,
COleDateTime& refMaxRange) const;
BOOL GetSelRange(
CTime& refMinRange,
CTime& refMaxRange) const;
BOOL GetSelRange(
LPSYSTEMTIME pMinRange,
LPSYSTEMTIME pMaxRange) const;
Parâmetros
refMinRange
Uma referência a um objeto COleDateTime ou CTime que contém a data mínima permitida.
refMaxRange
Uma referência a um objeto COleDateTime
ou CTime
que contém a data máxima permitida.
pMinRange
Um ponteiro para uma estrutura SYSTEMTIME que contém a data na extremidade mais baixa do intervalo.
pMaxRange
Um ponteiro para uma estrutura SYSTEMTIME
que contém a data na extremidade mais alta do intervalo.
Valor de retorno
Diferente de zero se tiver êxito; caso contrário, 0.
Comentários
Essa função membro implementa o comportamento da mensagem Win32 MCM_GETSELRANGE, conforme descrito no SDK do Windows. GetSelRange
falhará se aplicado a um controle de calendário de mês que não usa o estilo MCS_MULTISELECT.
Na implementação do MFC de GetSelRange
, você pode especificar o uso de COleDateTime
, o uso de CTime
ou o uso de uma estrutura SYSTEMTIME
.
CMonthCalCtrl::GetToday
Recupera as informações de data para a data especificada como "hoje" para um controle de calendário de mês.
BOOL GetToday(COleDateTime& refDateTime) const; BOOL GetToday(COleDateTime& refDateTime) const;
BOOL GetToday(LPSYSTEMTIME pDateTime) const;
Parâmetros
refDateTime
Uma referência a um objeto COleDateTime ou CTime que indica o dia atual.
pDateTime
Um ponteiro para uma estrutura SYSTEMTIME que receberá as informações de data. Esse parâmetro deve ser um endereço válido e não pode ser NULL.
Valor de retorno
Diferente de zero se tiver êxito; caso contrário, 0.
Comentários
Essa função membro implementa o comportamento da mensagem Win32 MCM_GETTODAY, conforme descrito no SDK do Windows. Na implementação do MFC de GetToday
, você pode especificar um uso COleDateTime
, um uso CTime
ou um uso de estrutura SYSTEMTIME
.
Exemplo
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 qual controle de calendário de mês, se houver, está em uma posição especificada.
DWORD HitTest(PMCHITTESTINFO pMCHitTest);
Parâmetros
pMCHitTest
Um ponteiro para uma estrutura MCHITTESTINFO que contém pontos de teste de ocorrência para o controle de calendário do mês.
Valor de retorno
Um valor DWORD. Igual ao membro uHit da estrutura MCHITTESTINFO
.
Comentários
HitTest
usa a estrutura MCHITTESTINFO
, que contém informações sobre o teste de clique.
CMonthCalCtrl::IsCenturyView
Indica se a exibição atual do controle de calendário de mês atual é a exibição de século.
BOOL IsCenturyView() const;
Valor de retorno
TRUE se o modo de exibição atual for o modo de exibição de século; caso contrário, FALSE.
Comentários
Esse método envia a mensagem MCM_GETCURRENTVIEW, que é descrita no SDK do Windows. Se essa mensagem retornar MCMV_CENTURY, esse método retornará TRUE.
CMonthCalCtrl::IsDecadeView
Indica se a exibição atual do controle de calendário de mês atual é a exibição de década.
BOOL IsDecadeView() const;
Valor de retorno
TRUE se o modo de exibição atual for a exibição de década; caso contrário, FALSE.
Comentários
Esse método envia a mensagem MCM_GETCURRENTVIEW, que é descrita no SDK do Windows. Se essa mensagem retornar MCMV_DECADE, esse método retornará TRUE.
CMonthCalCtrl::IsMonthView
Indica se a exibição atual do controle de calendário de mês atual é a exibição de mês.
BOOL IsMonthView() const;
Valor de retorno
TRUE se o modo de exibição atual for o modo de exibição de mês; caso contrário, FALSE.
Comentários
Esse método envia a mensagem MCM_GETCURRENTVIEW, que é descrita no SDK do Windows. Se essa mensagem retornar MCMV_MONTH, esse método retornará TRUE.
CMonthCalCtrl::IsYearView
Indica se a exibição atual do controle de calendário de mês atual é a exibição de ano.
BOOL IsYearView() const;
Valor de retorno
TRUE se o modo de exibição atual for o modo de exibição de ano; caso contrário, FALSE.
Comentários
Esse método envia a mensagem MCM_GETCURRENTVIEW, que é descrita no SDK do Windows. Se essa mensagem retornar MCMV_YEAR, esse método retornará TRUE.
CMonthCalCtrl::SetCalendarBorder
Define a largura da borda do controle de calendário de mês atual.
void SetCalendarBorder(int cxyBorder);
Parâmetros
cxyBorder
[in] A largura da borda em pixels.
Comentários
Se esse método for bem-sucedido, a largura da borda será definida como o parâmetro cxyBorder. Caso contrário, a largura da borda será redefinida como o valor padrão especificado pelo tema atual ou zero se não forem usados temas.
Esse método envia a mensagem MCM_SETCALENDARBORDER, que é descrita no SDK do Windows.
Exemplo
O primeiro exemplo de código define a variável, m_monthCalCtrl
, que é usada para acessar programaticamente o controle de calendário de mês. Essa variável será usada no próximo exemplo.
// Variable used to reference the month calendar control.
CMonthCalCtrl m_monthCalCtrl;
// Variable used to reference the splitbutton control.
CSplitButton m_splitButton;
O próximo exemplo de código define a largura da borda do controle de calendário do mês como oito pixels. Use o método CMonthCalCtrl::GetCalendarBorder para determinar se esse método foi bem-sucedido.
// Use the GetCalendarBorder() method to determine whether
// this method succeeded or failed.
m_monthCalCtrl.SetCalendarBorder(8);
CMonthCalCtrl::SetCalendarBorderDefault
Define a largura padrão da borda do controle de calendário de mês atual.
void SetCalendarBorderDefault();
Comentários
A largura da borda é definida como o valor padrão especificado pelo tema atual ou zero se não forem usados temas.
Esse método envia a mensagem MCM_SETCALENDARBORDER, que é descrita no SDK do Windows.
CMonthCalCtrl::SetCalID
Define o identificador de calendário para o controle de calendário de mês atual.
BOOL SetCalID(CALID calid);
Parâmetros
calid
[in] Uma das constantes do identificador de calendário.
Valor de retorno
TRUE se o método for bem-sucedido; caso contrário, FALSE.
Comentários
Um identificador de calendário especifica um calendário específico da região, como os calendários gregoriano (localizado), japonês ou hijri. Use o método SetCalID
para exibir um calendário especificado pelo parâmetro calid se a localidade que contém o calendário estiver instalada em seu computador.
Esse método envia a mensagem MCM_SETCALID, que é descrita no SDK do Windows.
Exemplo
O primeiro exemplo de código define a variável, m_monthCalCtrl
, que é usada para acessar programaticamente o controle de calendário de mês. Essa variável será usada no próximo exemplo.
// Variable used to reference the month calendar control.
CMonthCalCtrl m_monthCalCtrl;
// Variable used to reference the splitbutton control.
CSplitButton m_splitButton;
O próximo exemplo de código define o controle de calendário de mês para exibir o calendário da Era do Imperador Japonês. O método SetCalID
só terá êxito se esse calendário estiver instalado em seu computador.
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
Define o controle de calendário de mês atual para exibir a exibição do século.
BOOL SetCenturyView();
Valor de retorno
TRUE se o método for bem-sucedido; caso contrário, FALSE.
Comentários
Esse método usa o método CMonthCalCtrl::SetCurrentView para definir o modo de exibição como MCMV_CENTURY
, que representa o modo de exibição de século.
CMonthCalCtrl::SetColor
Define a cor de uma área especificada de um controle de calendário de mês.
COLORREF SetColor(
int nRegion,
COLORREF ref);
Parâmetros
nRegion
Um valor inteiro que especifica qual cor do calendário de mês a definir. Este valor pode ser um dos a seguir.
Valor | Significado |
---|---|
MCSC_BACKGROUND | A cor da tela de fundo exibida entre meses. |
MCSC_MONTHBK | A cor da tela de fundo exibida no mês. |
MCSC_TEXT | A cor usada para exibir texto em um mês. |
MCSC_TITLEBK | A cor da tela de fundo exibida no título do calendário. |
MCSC_TITLETEXT | A cor usada para exibir texto no título do calendário. |
MCSC_TRAILINGTEXT | A cor usada para exibir o cabeçalho e o texto do dia à direita. Cabeçalho e dias à direita são os dias dos meses anteriores e seguintes que aparecem no calendário atual. |
ref
Um valor COLORREF para a nova configuração de cor para a parte especificada do controle de calendário do mês.
Valor de retorno
Um valor COLORREF que representa a configuração de cor anterior para a parte especificada do controle de calendário do mês, se bem-sucedido. Caso contrário, essa mensagem retornará -1.
Comentários
Essa função membro implementa o comportamento da mensagem Win32 MCM_SETCOLOR, conforme descrito no SDK do Windows.
Exemplo
// 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
Define o controle de calendário do mês atual para exibir o modo de exibição especificada.
BOOL SetCurrentView(DWORD dwNewView);
Parâmetros
dwNewView
[in] Um dos valores a seguir que especifica uma exibição de mês, ano, década ou século.
MCMV_MONTH
: exibição de mêsMCMV_YEAR
: exibição de anoMCMV_DECADE
: exibição de décadaMCMV_CENTURY
: exibição de século
Valor de retorno
TRUE se o método for bem-sucedido; caso contrário, FALSE.
Comentários
Esse método envia a mensagem MCM_SETCURRENTVIEW, que é descrita no SDK do Windows.
CMonthCalCtrl::SetCurSel
Define a data selecionada no momento para um controle de calendário de mês.
BOOL SetCurSel(const COleDateTime& refDateTime);
BOOL SetCurSel(const CTime& refDateTime);
BOOL SetCurSel(const LPSYSTEMTIME pDateTime);
Parâmetros
refDateTime
Uma referência a um objeto COleDateTime ou CTime que indica o controle de calendário de mês selecionado no momento.
pDateTime
Ponteiro para uma estrutura SYSTEMTIME que contém a data a ser definida como a seleção atual.
Valor de retorno
Diferente de zero se tiver êxito; caso contrário, 0.
Comentários
Essa função membro implementa o comportamento da mensagem Win32 MCM_SETCURSEL, conforme descrito no SDK do Windows. Na implementação do MFC de SetCurSel
, você pode especificar um uso COleDateTime
, um uso CTime
ou um uso de estrutura SYSTEMTIME
.
Exemplo
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
Define a exibição para dias em um controle de calendário de mês.
BOOL SetDayState(
int nMonths,
LPMONTHDAYSTATE pStates);
Parâmetros
nMonths
Valor que indica quantos elementos estão na matriz para a qual pStates aponta.
pStates
Um ponteiro para uma matriz MONTHDAYSTATE de valores que definem como o controle de calendário de mês desenhará todos os dias em sua exibição. O tipo de dados MONTHDAYSTATE é um campo de bits, em que cada bit (1 a 31) representa o estado de um dia em um mês. Se um bit estiver ativado, o dia correspondente será exibido em negrito; caso contrário, ele será exibido sem ênfase.
Valor de retorno
Diferente de zero se tiver êxito; caso contrário, 0.
Comentários
Essa função membro implementa o comportamento da mensagem Win32 MCM_SETDAYSTATE, conforme descrito no SDK do Windows.
Exemplo
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
Define o controle de calendário do mês atual para a exibição de década.
BOOL SetDecadeView();
Valor de retorno
TRUE se o método for bem-sucedido; caso contrário, FALSE.
Comentários
Esse método usa o método CMonthCalCtrl::SetCurrentView para definir o modo de exibição como MCMV_DECADE
, que representa o modo de exibição de década.
CMonthCalCtrl::SetFirstDayOfWeek
Define o dia da semana a ser exibido na coluna mais à esquerda do calendário.
BOOL SetFirstDayOfWeek(
int iDay,
int* lpnOld = NULL);
Parâmetros
iDay
Um valor inteiro que representa qual dia deve ser definido como o primeiro dia da semana. Esse valor deve ser um dos números do dia. Confira GetFirstDayOfWeek para uma descrição dos números de dia.
lpnOld
Um ponteiro para um inteiro que indica o primeiro dia da semana definido anteriormente.
Valor de retorno
Diferente de zero se o primeiro dia anterior da semana for definido como um valor diferente do LOCALE_IFIRSTDAYOFWEEK, que é o dia indicado na configuração do painel de controle. Caso contrário, essa função retornará 0.
Comentários
Essa função membro implementa o comportamento da mensagem Win32 MCM_SETFIRSTDAYOFWEEK, conforme descrito no SDK do Windows.
Exemplo
// 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
Define o número máximo de dias que podem ser selecionados em um controle de calendário de mês.
BOOL SetMaxSelCount(int nMax);
Parâmetros
nMax
O valor que será definido para representar o número máximo de dias selecionáveis.
Valor de retorno
Diferente de zero se tiver êxito; caso contrário, 0.
Comentários
Essa função membro implementa o comportamento da mensagem Win32 MCM_SETMAXSELCOUNT, conforme descrito no SDK do Windows.
Exemplo
// 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
Define a taxa de rolagem de um controle de calendário de mês.
int SetMonthDelta(int iDelta);
Parâmetros
iDelta
O número de meses a serem definidos como a taxa de rolagem do controle. Se esse valor for zero, o delta do mês será redefinido para o padrão, que é o número de meses exibidos no controle.
Valor de retorno
A taxa de rolagem anterior. Se a taxa de rolagem não tiver sido definida anteriormente, o valor retornado será 0.
Comentários
Essa função membro implementa o comportamento da mensagem Win32 MCM_SETMONTHDELTA, conforme descrito no SDK do Windows.
CMonthCalCtrl::SetMonthView
Define o controle de calendário do mês atual para exibir o modo de exibição de mês.
BOOL SetMonthView();
Valor de retorno
TRUE se o método for bem-sucedido; caso contrário, FALSE.
Comentários
Esse método usa o método CMonthCalCtrl::SetCurrentView para definir o modo de exibição como MCMV_MONTH, que representa o modo de exibição de mês.
Exemplo
O primeiro exemplo de código define a variável, m_monthCalCtrl
, que é usada para acessar programaticamente o controle de calendário de mês. Essa variável será usada no próximo exemplo.
// Variable used to reference the month calendar control.
CMonthCalCtrl m_monthCalCtrl;
// Variable used to reference the splitbutton control.
CSplitButton m_splitButton;
O próximo exemplo de código define o controle de calendário de mês para mostrar as exibições de mês, ano, década e século.
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
Define as datas mínimas e máximas permitidas para um controle de calendário de mês.
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
Um ponteiro para um objeto COleDateTime
, um objeto CTime
ou estrutura SYSTEMTIME que contém a data na extremidade mais baixa do intervalo.
pMaxRange
Um ponteiro para um objeto COleDateTime
, um objeto CTime
ou uma estrutura SYSTEMTIME
que contém a data na extremidade mais alta do intervalo.
Valor de retorno
Diferente de zero se tiver êxito; caso contrário, 0.
Comentários
Essa função membro implementa o comportamento da mensagem Win32 MCM_SETRANGE, conforme descrito no SDK do Windows. Na implementação do MFC de SetRange
, você pode especificar o uso de COleDateTime
, o uso de CTime
ou o uso de uma estrutura SYSTEMTIME
.
Exemplo
Confira o exemplo de CMonthCalCtrl::GetRange.
CMonthCalCtrl::SetSelRange
Define a seleção de um controle de calendário de mês para um determinado intervalo de datas.
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
Um ponteiro para um objeto COleDateTime
, um objeto CTime
ou estrutura SYSTEMTIME que contém a data na extremidade mais baixa do intervalo.
pMaxRange
Um ponteiro para um objeto COleDateTime
, um objeto CTime
ou uma estrutura SYSTEMTIME
que contém a data na extremidade mais alta do intervalo.
Valor de retorno
Diferente de zero se tiver êxito; caso contrário, 0.
Comentários
Essa função membro implementa o comportamento da mensagem Win32 MCM_SETSELRANGE, conforme descrito no SDK do Windows. Na implementação do MFC de SetSelRange
, você pode especificar o uso de COleDateTime
, o uso de CTime
ou o uso de uma estrutura SYSTEMTIME
.
CMonthCalCtrl::SetToday
Define o controle de calendário para o dia atual.
void SetToday(const COleDateTime& refDateTime);
void SetToday(const CTime* pDateTime);
void SetToday(const LPSYSTEMTIME pDateTime);
Parâmetros
refDateTime
Uma referência a um objeto COleDateTime que contém a data atual.
pDateTime
Na segunda versão, um ponteiro para um objeto CTime que contém as informações de data atuais. Na terceira versão, um ponteiro para uma estrutura SYSTEMTIME que contém as informações de data atuais.
Comentários
Essa função membro implementa o comportamento da mensagem Win32 MCM_SETTODAY, conforme descrito no SDK do Windows.
Exemplo
Veja o exemplo de CMonthCalCtrl::GetToday.
CMonthCalCtrl::SetYearView
Define o controle de calendário de mês atual para exibição de ano.
BOOL SetYearView();
Valor de retorno
TRUE se o método for bem-sucedido; caso contrário, FALSE.
Comentários
Esse método usa o método CMonthCalCtrl::SetCurrentView para definir o modo de exibição como MCMV_YEAR, que representa o modo de exibição de ano.
CMonthCalCtrl::SizeMinReq
Exibe o controle de calendário de mês para o tamanho mínimo que exibe um mês.
BOOL SizeMinReq(BOOL bRepaint = TRUE);
Parâmetros
bRepaint
Especifica se o controle deve ser pintado novamente. Por padrão, TRUE. Se FALSE, não ocorrerá nenhuma nova pintura.
Valor de retorno
Não zero se o controle de calendário do mês for dimensionado no mínimo; caso contrário, 0.
Comentários
Chamar SizeMinReq
exibe com êxito todo o controle de calendário de mês para o calendário de um mês.
CMonthCalCtrl::SizeRectToMin
Para o controle de calendário de mês atual, calcula o menor retângulo que pode conter todos os calendários que se encaixam em um retângulo especificado.
LPRECT SizeRectToMin(LPRECT lpRect);
Parâmetros
lpRect
[in] Ponteiro para uma estrutura RECT que define um retângulo que contém o número desejado de calendários.
Valor de retorno
Ponteiro para uma estrutura RECT que define um retângulo cujo tamanho é menor ou igual ao retângulo definido pelo parâmetro lpRect.
Comentários
Esse método calcula quantos calendários podem caber no retângulo especificado pelo parâmetro lpRect e retorna o menor retângulo que pode conter esse número de calendários. Na verdade, esse método reduz o retângulo especificado para se ajustar exatamente ao número desejado de calendários.
Esse método envia a mensagem MCM_SIZERECTTOMIN, que é descrita no SDK do Windows.
Confira também
CMNCTRL1 de exemplo do MFC
Classe CWnd
Gráfico da hierarquia
Classe CDateTimeCtrl