Partilhar via


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

CObject

CCmdTarget

CWnd

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:

  1. Chame CMonthCalCtrl para construir um objeto CMonthCalCtrl.

  2. 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 Sunday

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ês
  • MCMV_YEAR: exibição de ano
  • MCMV_DECADE: exibição de década
  • MCMV_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