Partilhar via


Classe CMonthCalCtrl

Encapsula a funcionalidade de um controle de calendário mensal.

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::Criar Cria um controle de calendário mensal e o anexa ao CMonthCalCtrl objeto.
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 o modo de exibição exibido 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 Faz com que o primeiro dia da semana seja exibido na coluna mais à esquerda do calendário.
CMonthCalCtrl::GetMaxSelCount Recupera o número máximo atual de dias que podem ser selecionados em um controle de calendário de mês.
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 de mês.
CMonthCalCtrl::GetMonthDelta Recupera a taxa de rolagem para um controle de calendário mensal.
CMonthCalCtrl::GetMonthRange Recupera informações de data que representam os limites alto e baixo da exibição do 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 atualmente selecionado 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 mensal está em um determinado ponto da tela.
CMonthCalCtrl::IsCenturyView Indica se o modo de exibição atual do controle de calendário do mês atual é o modo de exibição do século.
CMonthCalCtrl::IsDecadeView Indica se o modo de exibição atual do controle de calendário do mês atual é o modo de exibição de década.
CMonthCalCtrl::IsMonthView Indica se o modo de exibição atual do controle de calendário do mês atual é o modo de exibição de mês.
CMonthCalCtrl::IsYearView Indica se o modo de exibição atual do controle de calendário do mês atual é o modo de exibição de ano.
CMonthCalCtrl::SetCalendarBorder Define a largura da borda do controle de calendário do mês atual.
CMonthCalCtrl::SetCalendarBorderDefault Define a largura padrão da borda do controle de calendário do mês atual.
CMonthCalCtrl::SetCalID Define o identificador de calendário para o controle de calendário do mês atual.
CMonthCalCtrl::SetCenturyView Define o controle de calendário do 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 especificado.
CMonthCalCtrl::SetCurSel Define a data atualmente selecionada para um controle de calendário de mês.
CMonthCalCtrl::SetDayState Define a exibição para dias em um controle de calendário mensal.
CMonthCalCtrl::SetDecadeView Define o controle de calendário do mês atual para 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.
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 para um controle de calendário mensal.
CMonthCalCtrl::SetMonthView Define o controle de calendário do mês atual para exibir a exibição de mês.
CMonthCalCtrl::SetRange Define as datas mínimas e máximas permitidas para um controle de calendário mensal.
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 do mês atual como modo de exibição de ano.
CMonthCalCtrl::SizeMinReq Repinta 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 do mês atual, calcula o menor retângulo que pode conter todos os calendários que cabem em um retângulo especificado.

Observações

O controle de calendário de mês fornece ao usuário uma interface de calendário simples, a partir da qual o usuário pode selecionar uma data. O usuário pode alterar a exibição por:

  • Rolar para trás e para frente, de mês para mês.

  • Clicar no texto Hoje para exibir o dia atual (se o estilo MCS_NOTODAY não for usado).

  • Escolher um mês ou um ano a partir de 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 pode indicar dias especiais (como feriados) colocando a data em negrito.

Para obter mais informações sobre como usar o controle de calendário de mês, consulte Usando CMonthCalCtrl.

Hierarquia de herança

CObject

CCmdTarget

CWnd

CMonthCalCtrl

Requerimentos

Cabeçalho: afxdtctl.h

CMonthCalCtrl::CMonthCalCtrl

Constrói um objeto CMonthCalCtrl.

CMonthCalCtrl();

Observações

Você deve chamar Create depois de construir o objeto.

CMonthCalCtrl::Criar

Cria um controle de calendário mensal e o anexa ao CMonthCalCtrl objeto.

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 aplicada ao controle de calendário do mês. Consulte Estilos de controle de calendário do mês no SDK do Windows para obter mais informações sobre os estilos.

retângulo
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 deve ser NULL.

nID
Especifica a ID de controle do controle de calendário mensal.

Valor de retorno

Diferente de zero se a inicialização foi bem-sucedida; caso contrário, 0.

Observações

Crie um controle de calendário mensal em duas etapas:

  1. Chame CMonthCalCtrl para construir um CMonthCalCtrl objeto.

  2. Chame essa função de membro, que cria um controle de calendário de mês e o anexa ao CMonthCalCtrl objeto.

Quando você chama Createo , os controles comuns são inicializados. A versão da Create chamada 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.

Observações

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 atualmente exibidos no controle de calendário do mês. O número máximo permitido de calendários é 12.

Observações

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
[saídas] 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 este método for bem-sucedido; caso contrário, FALSE.

Observações

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. Esta variável é 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 GetCalendarGridInfo método 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 de identificador de calendário .

Observações

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 a idiomas.

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 do mês especificado por nRegion.

COLORREF GetColor(int nRegion) const;

Parâmetros

nRegião
A região do controle de calendário do mês da qual a cor é recuperada. Para obter uma lista de valores, consulte o parâmetro nRegion de SetColor.

Valor de retorno

Um valor COLORREF especificando a cor associada à parte do controle de calendário do mês, se bem-sucedido. Caso contrário, essa função de membro retornará -1.

CMonthCalCtrl::GetCurrentView

Recupera o modo de exibição exibido 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 Visualização mensal
MCMV_YEAR Vista anual
MCMV_DECADE Visualização da década
MCMV_CENTURY Vista do século

Observações

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. Esta variável é 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 exibir o controle de calendário de mês é exibido atualmente.

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 um objeto CTime . Recebe a hora atual.

pDataHora
Um ponteiro para uma estrutura SYSTEMTIME que receberá as informações de data selecionadas no momento. Este parâmetro deve ser um endereço válido e não pode ser NULL.

Valor de retorno

Diferente de zero se for bem-sucedido; caso contrário, 0.

Observações

Esta função de membro implementa o comportamento do MCM_GETCURSEL de mensagens Win32, conforme descrito no SDK do Windows.

Observação

Esta função de membro falhará se o estilo MCS_MULTISELECT estiver definido.

Na implementação do MFC do GetCurSel, você pode especificar um COleDateTime uso, um CTime uso ou um SYSTEMTIME uso de estrutura.

CMonthCalCtrl::GetFirstDayOfWeek

Faz com que o primeiro dia da semana seja 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 for diferente de zero, a configuração do controle não corresponde à configuração no painel de controle.

Valor de retorno

Um valor inteiro que representa o primeiro dia da semana. Consulte Comentários para obter mais informações sobre o que esses inteiros representam.

Observações

Esta função de membro implementa o comportamento da mensagem Win32 MCM_GETFIRSTDAYOFWEEK, conforme descrito no SDK do Windows. Os dias da semana são representados como inteiros, da seguinte forma.

Valor Dia da semana
0 Segunda-feira
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

Recupera o número máximo atual de dias que podem ser selecionados em um controle de calendário de mês.

int GetMaxSelCount() const;

Valor de retorno

Um valor inteiro que representa o número total de dias que podem ser selecionados para o controle.

Observações

Esta função de membro implementa o comportamento do MCM_GETMAXSELCOUNT de mensagens Win32, conforme descrito no SDK do Windows. Use esta função de membro para controles com o conjunto de estilos MCS_MULTISELECT.

Exemplo

Veja 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. Esta variável é 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 GetMaxTodayWidth método.

DWORD width = m_monthCalCtrl.GetMaxTodayWidth();
CString str;
str.Format(_T("The maximum today width is %d."), width);
AfxMessageBox(str, MB_ICONINFORMATION);

Observações

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 do rótulo 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 de mês.

BOOL GetMinReqRect(RECT* pRect) const;

Parâmetros

pRect
Um ponteiro para uma estrutura RECT que receberá informações de retângulo delimitador. Este parâmetro deve ser um endereço válido e não pode ser NULL.

Valor de retorno

Se bem-sucedida, essa função de membro retorna diferente de zero e lpRect recebe as informações delimitadoras aplicáveis. Se não tiver êxito, a função de membro retornará 0.

Observações

Esta função de membro implementa o comportamento do MCM_GETMINREQRECT de mensagens Win32, conforme descrito no SDK do Windows.

CMonthCalCtrl::GetMonthDelta

Recupera a taxa de rolagem para um controle de calendário mensal.

int GetMonthDelta() const;

Valor de retorno

A taxa de rolagem para o controle de calendário do mês. A taxa de rolagem é o número de meses que o controle move sua exibição quando o usuário clica em um botão de rolagem uma vez.

Observações

Esta função de 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 alto e baixo da exibição do 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 contendo a data mínima permitida.

refMaxRange [en]
Uma referência a um COleDateTime ou CTime objeto que contenha a data máxima permitida.

pMinRange
Um ponteiro para uma estrutura SYSTEMTIME que contém a data na extremidade mais baixa do intervalo.

Gama pMaxRange
Um ponteiro para uma SYSTEMTIME estrutura que contém a data na extremidade mais alta do intervalo.

dwBandeiras
Valor que especifica o escopo dos limites de intervalo a serem recuperados. Esse valor deve ser um dos seguintes.

Valor Significado
GMR_DAYSTATE Inclua os meses anteriores e finais do intervalo visível que são exibidos apenas parcialmente.
GMR_VISIBLE Inclua apenas os meses que são totalmente exibidos.

Valor de retorno

Um inteiro que representa o intervalo, em meses, atravessado pelos dois limites indicados por refMinRange e refMaxRange na primeira e segunda versões, ou pMinRange e pMaxRange na terceira versão.

Observações

Esta função de membro implementa o comportamento do MCM_GETMONTHRANGE de mensagens Win32, conforme descrito no SDK do Windows. Na implementação do MFC do , você pode especificar GetMonthRange o uso, um COleDateTime uso ou um CTime uso da SYSTEMTIMEestrutura.

Exemplo

Veja 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 COleDateTime objeto, um CTime objeto ou uma estrutura SYSTEMTIME que contém a data na extremidade mais baixa do intervalo.

Gama pMaxRange
Um ponteiro para um COleDateTime objeto, um CTime objeto ou uma estrutura SYSTEMTIME que contém a data na extremidade mais alta do intervalo.

Valor de retorno

Um DWORD que pode ser zero (sem limites são definidos) ou uma combinação dos seguintes valores que especificam informações de limite.

Valor Significado
GDTR_MAX É fixado um limite máximo para o controlo; pMaxRange é válido e contém as informações de data aplicáveis.
GDTR_MIN É fixado um limite mínimo para o controlo; O pMinRange é válido e contém as informações de data aplicáveis.

Observações

Esta função de membro implementa o comportamento do MCM_GETRANGE de mensagens Win32, conforme descrito no SDK do Windows. Na implementação do MFC do GetRange, você pode especificar um COleDateTime uso, um CTime uso ou um SYSTEMTIME uso de estrutura.

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 atualmente selecionado 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 contendo a data mínima permitida.

refMaxRange [en]
Uma referência a um COleDateTime ou CTime objeto que contenha a data máxima permitida.

pMinRange
Um ponteiro para uma estrutura SYSTEMTIME que contém a data na extremidade mais baixa do intervalo.

Gama pMaxRange
Um ponteiro para uma SYSTEMTIME estrutura que contém a data na extremidade mais alta do intervalo.

Valor de retorno

Diferente de zero se for bem-sucedido; caso contrário, 0.

Observações

Esta função de membro implementa o comportamento do MCM_GETSELRANGE de mensagens Win32, 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 do , você pode especificar GetSelRange o uso, um COleDateTime uso ou um CTime uso da SYSTEMTIMEestrutura.

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 indicando o dia atual.

pDataHora
Um ponteiro para uma estrutura SYSTEMTIME que receberá as informações de data. Este parâmetro deve ser um endereço válido e não pode ser NULL.

Valor de retorno

Diferente de zero se for bem-sucedido; caso contrário, 0.

Observações

Esta função de membro implementa o comportamento da mensagem Win32 MCM_GETTODAY, conforme descrito no SDK do Windows. Na implementação do MFC do GetToday, você pode especificar um COleDateTime uso, um CTime uso ou um SYSTEMTIME uso de estrutura.

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 contendo pontos de teste de acerto para o controle de calendário do mês.

Valor de retorno

Um valor DWORD. Igual ao membro uHit da MCHITTESTINFO estrutura.

Observações

HitTest usa a MCHITTESTINFO estrutura, que contém informações sobre o teste de acerto.

CMonthCalCtrl::IsCenturyView

Indica se o modo de exibição atual do controle de calendário do mês atual é o modo de exibição do século.

BOOL IsCenturyView() const;

Valor de retorno

VERDADEIRO se a visão atual é a visão do século; caso contrário, FALSE.

Observações

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 o modo de exibição atual do controle de calendário do mês atual é o modo de exibição de década.

BOOL IsDecadeView() const;

Valor de retorno

TRUE se a visão atual for a visão da década; caso contrário, FALSE.

Observações

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 o modo de exibição atual do controle de calendário do mês atual é o modo de exibição de mês.

BOOL IsMonthView() const;

Valor de retorno

TRUE se a vista atual for a vista de mês; caso contrário, FALSE.

Observações

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 o modo de exibição atual do controle de calendário do mês atual é o modo de exibição de ano.

BOOL IsYearView() const;

Valor de retorno

TRUE se a vista atual for a vista do ano; caso contrário, FALSE.

Observações

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 do mês atual.

void SetCalendarBorder(int cxyBorder);

Parâmetros

cxyBorder
[em] A largura da borda, em pixels.

Observações

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 para o valor padrão especificado pelo tema atual, ou zero se os temas não forem usados.

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. Esta variável é 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 para oito pixels. Use o método CMonthCalCtrl::GetCalendarBorder para determinar se esse método teve êxito.

// 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 do mês atual.

void SetCalendarBorderDefault();

Observações

A largura da borda é definida como o valor padrão especificado pelo tema atual, ou zero se os temas não forem usados.

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 do mês atual.

BOOL SetCalID(CALID calid);

Parâmetros

Calid
[em] Uma das constantes de identificador de calendário .

Valor de retorno

TRUE se este método for bem-sucedido; caso contrário, FALSE.

Observações

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 SetCalID método para exibir um calendário especificado pelo parâmetro calid se a localidade que contém o calendário estiver instalada no 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. Esta variável é 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 SetCalID método só terá êxito se esse calendário estiver instalado no 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 do mês atual para exibir a exibição do século.

BOOL SetCenturyView();

Valor de retorno

TRUE se este método for bem-sucedido; caso contrário, FALSE.

Observações

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 do 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

nRegião
Um valor inteiro especificando qual cor de calendário do mês deve ser definida. Esse valor pode ser um dos seguintes.

Valor Significado
MCSC_BACKGROUND A cor de fundo exibida entre meses.
MCSC_MONTHBK A cor de fundo exibida dentro do mês.
MCSC_TEXT A cor usada para exibir texto dentro de um mês.
MCSC_TITLEBK A cor de fundo apresentada no título do calendário.
MCSC_TITLETEXT A cor usada para exibir o texto dentro do título do calendário.
MCSC_TRAILINGTEXT A cor usada para exibir o cabeçalho e o texto do dia à direita. Os dias de cabeçalho e à 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, esta mensagem retorna -1.

Observações

Esta função de membro implementa o comportamento do MCM_SETCOLOR de mensagens Win32, 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 especificado.

BOOL SetCurrentView(DWORD dwNewView);

Parâmetros

dwNewView
[em] Um dos seguintes valores que especifica uma vista mensal, anual, de década ou de século.

  • MCMV_MONTH: Vista mensal
  • MCMV_YEAR: Vista anual
  • MCMV_DECADE: Visão da década
  • MCMV_CENTURY: Vista do século

Valor de retorno

TRUE se este método for bem-sucedido; caso contrário, FALSE.

Observações

Esse método envia a mensagem MCM_SETCURRENTVIEW , que é descrita no SDK do Windows.

CMonthCalCtrl::SetCurSel

Define a data atualmente selecionada 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 indicando o controle de calendário de mês selecionado atualmente.

pDataHora
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 for bem-sucedido; caso contrário, 0.

Observações

Esta função de membro implementa o comportamento do MCM_SETCURSEL de mensagens Win32, conforme descrito no SDK do Windows. Na implementação do MFC do SetCurSel, você pode especificar um COleDateTime uso, um CTime uso ou um SYSTEMTIME uso de estrutura.

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 mensal.

BOOL SetDayState(
    int nMonths,
    LPMONTHDAYSTATE pStates);

Parâmetros

nMeses
Valor que indica quantos elementos estão na matriz para a qual pStates aponta.

pEstados
Um ponteiro para uma matriz de valores MONTHDAYSTATE que define como o controle de calendário de mês desenhará cada dia em sua exibição. O tipo de dados MONTHDAYSTATE é um campo bit, onde cada bit (1 a 31) representa o estado de um dia em um mês. Se um bit estiver ligado, o dia correspondente será exibido em negrito; caso contrário, será exibido sem ênfase.

Valor de retorno

Diferente de zero se for bem-sucedido; caso contrário, 0.

Observações

Esta função de membro implementa o comportamento do MCM_SETDAYSTATE de mensagens Win32, 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 o modo de exibição de década.

BOOL SetDecadeView();

Valor de retorno

TRUE se este método for bem-sucedido; caso contrário, FALSE.

Observações

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

iDia
Um valor inteiro que representa qual dia deve ser definido como o primeiro dia da semana. Este valor deve ser um dos números do dia. Consulte GetFirstDayOfWeek para obter uma descrição dos números diários.

lpnOld
Um ponteiro para um número inteiro que indica o primeiro dia da semana definido anteriormente.

Valor de retorno

Diferente de zero se o primeiro dia da semana anterior estiver definido para um valor diferente do de LOCALE_IFIRSTDAYOFWEEK, que é o dia indicado na configuração do painel de controle. Caso contrário, essa função retornará 0.

Observações

Esta função de membro implementa o comportamento do MCM_SETFIRSTDAYOFWEEK de mensagens Win32, 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 for bem-sucedido; caso contrário, 0.

Observações

Esta função de membro implementa o comportamento do MCM_SETMAXSELCOUNT de mensagens Win32, 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 para um controle de calendário mensal.

int SetMonthDelta(int iDelta);

Parâmetros

iDelta
O número de meses a ser definido 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 de retorno será 0.

Observações

Esta função de membro implementa o comportamento do MCM_SETMONTHDELTA de mensagens Win32, conforme descrito no SDK do Windows.

CMonthCalCtrl::SetMonthView

Define o controle de calendário do mês atual para exibir a exibição de mês.

BOOL SetMonthView();

Valor de retorno

TRUE se este método for bem-sucedido; caso contrário, FALSE.

Observações

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. Esta variável é 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 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 mensal.

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 COleDateTime objeto, um CTime objeto ou uma estrutura SYSTEMTIME que contém a data na extremidade mais baixa do intervalo.

Gama pMaxRange
Um ponteiro para um COleDateTime objeto, um CTime objeto ou SYSTEMTIME uma estrutura que contém a data na extremidade mais alta do intervalo.

Valor de retorno

Diferente de zero se for bem-sucedido; caso contrário, 0.

Observações

Esta função de membro implementa o comportamento da mensagem Win32 MCM_SETRANGE, conforme descrito no SDK do Windows. Na implementação do MFC do , você pode especificar SetRange o uso, um COleDateTime uso ou um CTime uso da SYSTEMTIMEestrutura.

Exemplo

Veja 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 COleDateTime objeto, um CTime objeto ou uma estrutura SYSTEMTIME que contém a data na extremidade mais baixa do intervalo.

Gama pMaxRange
Um ponteiro para um COleDateTime objeto, um CTime objeto ou SYSTEMTIME uma estrutura que contém a data na extremidade mais alta do intervalo.

Valor de retorno

Diferente de zero se for bem-sucedido; caso contrário, 0.

Observações

Esta função de membro implementa o comportamento do MCM_SETSELRANGE de mensagens Win32, conforme descrito no SDK do Windows. Na implementação do MFC do , você pode especificar SetSelRange o uso, um COleDateTime uso ou um CTime uso da SYSTEMTIMEestrutura.

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.

pDataHora
Na segunda versão, um ponteiro para um objeto CTime que contém as informações de data atual. Na terceira versão, um ponteiro para uma estrutura SYSTEMTIME que contém as informações de data atual.

Observações

Esta função de membro implementa o comportamento do MCM_SETTODAY de mensagens Win32, conforme descrito no SDK do Windows.

Exemplo

Veja o exemplo de CMonthCalCtrl::GetToday.

CMonthCalCtrl::SetYearView

Define o controle de calendário do mês atual como modo de exibição de ano.

BOOL SetYearView();

Valor de retorno

TRUE se este método for bem-sucedido; caso contrário, FALSE.

Observações

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 anual.

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

bRepintar
Especifica se o controle deve ser repintado. Por padrão, TRUE. Se FALSE, não ocorre repintura.

Valor de retorno

Diferente de zero se o controle de calendário do mês for dimensionado ao mínimo; caso contrário, 0.

Observações

A chamada SizeMinReq bem-sucedida exibe o controle de calendário de mês inteiro para o calendário de um mês.

CMonthCalCtrl::SizeRectToMin

Para o controle de calendário do mês atual, calcula o menor retângulo que pode conter todos os calendários que cabem em um retângulo especificado.

LPRECT SizeRectToMin(LPRECT lpRect);

Parâmetros

lpRect
[em] 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 .

Observações

Esse método calcula quantos calendários podem caber no retângulo especificado pelo parâmetro lpRect e, em seguida, 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.

Ver também

Exemplo de CMNCTRL1 MFC
CWnd Classe
Gráfico de Hierarquia
CDateTimeCtrl Classe