CDateTimeCtrl下拉日历设置问题

贪玩的老鼠 2010-09-15 10:53:48
我想在CDateTimeCtrl的下拉日历中设置某些天字体为粗体,可是没成功.

发现设置日历的MCS_DAYSTATE属性总是不成功!

具体代码如下:

void CXXXDlg::OnDtnDropdownDatetimepicker1(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
CMonthCalCtrl* pMoCalCtrl = m_DateTimeCtrl.GetMonthCalCtrl();
if (pMoCalCtrl)
{
pMoCalCtrl->ModifyStyle(0,MCS_DAYSTATE,MCS_DAYSTATE);//设置没起作用
SYSTEMTIME timeFrom;
SYSTEMTIME timeUntil;

int nCount = pMoCalCtrl->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);
int nIndex = (timeFrom.wDay == 1) ? 0 : 1;
pDayState[nIndex] |= 1 << 3;
pDayState[nIndex] |= 1 << 18;
pDayState[nIndex] |= 1 << 25;
if (pMoCalCtrl->GetStyle()&MCS_DAYSTATE)
{
pMoCalCtrl->SetDayState(nCount, pDayState);
}
delete [] pDayState
}
*pResult = 0;
}
...全文
432 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
samcsu002 2011-08-31
  • 打赏
  • 举报
回复
我也遇到了一样的问题。MonthCal可以设置粗体,但是DateTime下拉下来的就是不行,过程中,已经得到了下拉MonthCal的所有信息,但是SetDayState是不成功的。
我有试过下拉的时候,重绘处理,但是如何得到当前重绘的对象是个问题。
leegoex 2010-09-21
  • 打赏
  • 举报
回复
好像没有!这里有个帖子,有人提到了这个问题,你看以看看
http://www.experts-exchange.com/Programming/System/Windows__Programming/MFC/Q_23927552.html
贪玩的老鼠 2010-09-21
  • 打赏
  • 举报
回复
有没有办法设置啊!
leegoex 2010-09-18
  • 打赏
  • 举报
回复
From MSDN:


Month calendar controls have several styles that determine their appearance and behavior. When you create the control using CreateWindowEx, include the desired styles in the dwStyle parameter.

After creating the control, you can change all of the styles except for MCS_DAYSTATE and MCS_MULTISELECT. To change these styles, you will need to destroy the existing control and create a new one that has the desired styles. To retrieve or change any other window styles, use the GetWindowLong and SetWindowLong functions.
向立天 2010-09-18
  • 打赏
  • 举报
回复
我试了一下
很奇怪
MCS_DAYSTATE和MCS_MULTISELECT这两个属性通过ModifyStyle处理不了
dvlinker 2010-09-18
  • 打赏
  • 举报
回复
帮忙顶一个~
贪玩的老鼠 2010-09-18
  • 打赏
  • 举报
回复
高手呢!!
贪玩的老鼠 2010-09-17
  • 打赏
  • 举报
回复
没有用的,我要的是设置某些天,
不是所有的字体!
贪玩的老鼠 2010-09-17
  • 打赏
  • 举报
回复
没有用的,我要的是设置某些天,
不是所的字体!
向立天 2010-09-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qimiao77 的回复:]

引用 6 楼 xianglitian 的回复:
CDateTimeCtrl支持粗体么

难道你不知道CDateTimeCtrl的DTN_DROPDOWN会显示日历[CMonthCalCtrl]控件吗,
CMonthCalCtrl是可以设置粗体的
[/Quote]
你说的是这个啊
我刚看明白
具体的确是没做过
一下代码引自MSDN
希望对你有帮助
CMonthCalCtrl* pMCCtrl= NULL;

pMCCtrl= m_dtPicker.GetMonthCalCtrl();

//create and initialize the font to be used
LOGFONT logFont;

logFont.lfHeight = -12;
logFont.lfWidth = 0;
logFont.lfWeight = FW_NORMAL;
logFont.lfItalic = FALSE;
logFont.lfUnderline = FALSE;
logFont.lfStrikeOut = FALSE;
logFont.lfEscapement = 0;
logFont.lfOrientation = 0;
lstrcpy(logFont.lfFaceName, _T("Verdana"));

m_MCFont.CreateFontIndirect(&logFont);
m_dtPicker.SetMonthCalFont((HFONT)m_MCFont);


贪玩的老鼠 2010-09-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xianglitian 的回复:]
CDateTimeCtrl支持粗体么
[/Quote]
难道你不知道CDateTimeCtrl的DTN_DROPDOWN会显示日历[CMonthCalCtrl]控件吗,
CMonthCalCtrl是可以设置粗体的
向立天 2010-09-17
  • 打赏
  • 举报
回复
CDateTimeCtrl支持粗体么
贪玩的老鼠 2010-09-16
  • 打赏
  • 举报
回复
???顶一下
ponydph 2010-09-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 vc1000 的回复:]
将控件的Day States属性设置为true就行了
[/Quote]
通解
vc1000 2010-09-15
  • 打赏
  • 举报
回复
将控件的Day States属性设置为true就行了
贪玩的老鼠 2010-09-15
  • 打赏
  • 举报
回复
你们的VC是什么版本的啊?
vc 2003 CDateTimeCtrl控件好象没有Day States属性

CMonthCalCtrl才有Day States属性

而我现在说的是在下拉CDateTimeCtrl时显示的那个CMonthCalCtrl
对象设置MCS_DAYSTATE属性哦
就像下拉Combobox时显示的listbox一样哦


16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧