Panic的小屋

国破山河在,城春草木深。
随笔 - 151, 评论 - 1287, 引用 - 22, 文章 - 0

导航

公告

<2008年8月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

留言簿(250)

随笔分类

随笔档案

文章档案

相册

国外好站推荐

工具网页

我的其他网页

我的网友

户外运动

美女的空间

搜索

最新评论

阅读排行榜

评论排行榜

CMonthCalCtrl的一个BUG

Posted on 2006-12-06 11:38 Panic 阅读(2693) 评论(2)  编辑 收藏

环境:win2k pro, vc6.0 sp5
bug描述:
CMonthCalCtrl::GetCurSel函数的返回值是错误的。

测试代码:
//CMonthCalCtrl m_c; //定义在某处。
//当用户选择了不同的日期后
CTime t;
m_c.GetCurSel(t);
CString s = t.Format( "%A, %B %d, %Y" );
//之后s的值和用户选择的数值相去甚远。

bug跟踪:
通过简单的跟踪,发现问题出在控件本身对消息的响应上,在winctrl5.cpp中:
BOOL CMonthCalCtrl::GetCurSel(CTime& refTime) const
{
 ASSERT(::IsWindow(m_hWnd));

 // can't use this method on multiple selection controls
 ASSERT(!(GetStyle() & MCS_MULTISELECT));

 SYSTEMTIME sysTime;
 BOOL bResult = (BOOL)
  ::SendMessage(m_hWnd, MCM_GETCURSEL, 0, (LPARAM) &sysTime);
//这个消息返回后,sysTime的wMinute和wSecond成员的数值是错误的。

 if (bResult)
  refTime = CTime(sysTime);

 return bResult;
}

解决方法:自己发消息,然后修正sysTime的对应成员。

Feedback

# re: CMonthCalCtrl的一个BUG

2008-08-08 11:31 by 我心飞翔
你好,我也遇到了这个问题,但是你说的自己发消息,然后修正sysTime的对应成员。这个我不会。你能不能把修改后的程序发到我的邮箱上。我的邮箱是chinakangwenjun@163.com 非常感谢。

# re: CMonthCalCtrl的一个BUG

2008-08-26 10:59 by jack
使用 SYSTEMTIME time;结构去得到当前时间,结果也行
标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]