很奇怪(debug下的问题)

a1234567750 2009-11-11 11:44:48
m_PicCtrl是一个时间控件关联的CDateTimeCtrl类型变量。

CTime CurTime = CTime::GetCurrentTime();
m_PicCtrl.SetTime(&CurTime);

这样动态设置时间控件上的时间在release版本运行是可以的。在debug下运行是不起作用的

请问各位这个是什么原因呢?
...全文
120 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
a1234567750 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 tanwei1002 的回复:]
肯定是你工程中其他地方的原因  光这两行代码 没问题
[/Quote]

是啊,不过有可能的原因是什么啊,开始我想是debug里边的API底层的断言错误,可是跟踪到sendMessage之前都没发现出错,rebuild工程也不行。想不通啊。我的工程也只不过是普通MFC对话框工程啊,没做特殊的设置。

反正在发布之后能正常运行就好了,我也不管那么多了,谢谢各位的热心啊
tanwei1002 2009-11-13
  • 打赏
  • 举报
回复
肯定是你工程中其他地方的原因 光这两行代码 没问题
a1234567750 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 happyparrot 的回复:]
那麻烦你把你确定错误的代码贴出来,我这里也运行一下就知道对错了。
[/Quote]

相关的只有这两句
CTime CurTime = CTime::GetCurrentTime();
int errorCode = m_PicCtrl.SetTime(&CurTime);
在窗口的收到wm_showwindow消息时执行的,debug下errorCode返回0,release下errorCode非0

maple_zhj 2009-11-12
  • 打赏
  • 举报
回复
Mark。
这不是鸭头 2009-11-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 muzizongheng 的回复:]
debug下, 单步调试, 用getlasterror看看到底是不是这里出问题了.
[/Quote]
单步调试..
Wenxy1 2009-11-11
  • 打赏
  • 举报
回复
对,debug下,设置断点,跟踪下。
muzizongheng 2009-11-11
  • 打赏
  • 举报
回复
debug下, 单步调试, 用getlasterror看看到底是不是这里出问题了.
快乐鹦鹉 2009-11-11
  • 打赏
  • 举报
回复
如果只是这两句话,应该没有问题。
kolige 2009-11-11
  • 打赏
  • 举报
回复
就两句话也失败?不会吧,我这里没有任何问题。。。
关注下,有时候一些莫名的问题真是搞到头都大
快乐鹦鹉 2009-11-11
  • 打赏
  • 举报
回复
那麻烦你把你确定错误的代码贴出来,我这里也运行一下就知道对错了。
a1234567750 2009-11-11
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 happyparrot 的回复:]
你的工程的具体问题,就不好说了。
[/Quote]

我新建一个工程就运行这两句,也是此现象
快乐鹦鹉 2009-11-11
  • 打赏
  • 举报
回复
你的工程的具体问题,就不好说了。
a1234567750 2009-11-11
  • 打赏
  • 举报
回复
TO: happyparrot 时间显示正确不一定就是正确,因为控件初始值也当前时间,你要换个时间动态设置一下试试,还有看看setTime的返回值啊。
a1234567750 2009-11-11
  • 打赏
  • 举报
回复
还有happyparrot大侠,getTime也会出现此情况,我之前也用过Data time Picker,从未遇到过。
a1234567750 2009-11-11
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 happyparrot 的回复:]
引用 6 楼 a1234567750 的回复:
引用 1 楼 happyparrot 的回复:
如果只是这两句话,应该没有问题。


就这两句,debug下就是不行,不信你可试下,VC6.0

我已经测试过,DEBUG下,没有任何问题。返回TRUE,时间显示也正确,就两行代码。
如果就这样也错,微软的都是吃干饭的了。
[/Quote]

可是我现在就是这样的情况啊,我也觉得应该是我错了,,不过我以前就是这样用的都用问题啊,刚刚我在另一台PC上实验这两行代码也是可以的。

我现在就是不知道为什么出现此情况啊
快乐鹦鹉 2009-11-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 a1234567750 的回复:]
引用 1 楼 happyparrot 的回复:
如果只是这两句话,应该没有问题。


就这两句,debug下就是不行,不信你可试下,VC6.0
[/Quote]
我已经测试过,DEBUG下,没有任何问题。返回TRUE,时间显示也正确,就两行代码。
如果就这样也错,微软的都是吃干饭的了。
a1234567750 2009-11-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jyh_baoding 的回复:]
在DEBUG下进入到SETTIME的内部看看,有什么发生
[/Quote]
跟到里边就是这样
BOOL CDateTimeCtrl::SetTime(LPSYSTEMTIME pTimeNew /* = NULL */)
{
ASSERT(::IsWindow(m_hWnd));
WPARAM wParam = (pTimeNew == NULL) ? GDT_NONE : GDT_VALID;
return (BOOL) ::SendMessage(m_hWnd, DTM_SETSYSTEMTIME,
wParam, (LPARAM) pTimeNew);
}
结果发送sendmessage发送窗口消息的时候就失败了
jyh_baoding 2009-11-11
  • 打赏
  • 举报
回复
在DEBUG下进入到SETTIME的内部看看,有什么发生
a1234567750 2009-11-11
  • 打赏
  • 举报
回复
同样的代码,settime在debug下返回0,在release下非0,0是失败。
a1234567750 2009-11-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 happyparrot 的回复:]
如果只是这两句话,应该没有问题。
[/Quote]

就这两句,debug下就是不行,不信你可试下,VC6.0
加载更多回复(1)

16,472

社区成员

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

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

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