又一个Debug/release问题?
最近给朋友做界面时碰到的。界面是这样的:
SDI , 窗口被静态分割成左右两部分,右边用作试图切换。左边上部是个TabCtrl,下边是几个按钮。左边的TabCtrl是竖向排列的,所以我专门做了个基于CTabCtrl的类CKxTabCtrl.该类说起来比较简单,初始化时new几个对话框(Child,None board),然后把对话框移到TabCtrl的客户区.
问题出在:我重载了CTabCtrl的鼠标双击的消息映射函数,在该函数中向左边视图发了个消息,希望双击TabCtrl的ItemHead时,右边的视图能切换到相应的视图。
左边视图的指针是CKxTabCtrl初始化时传到CKxTabCtrl的,消息WM_MY_TABDBCLICK。想来不会有什么问题。m_pView->PostMessage(WM_MY_TANDBCLICK,(WPARAM)GetCurSel());
然后在左边视图类中处理消息,根据wParam的值进行切换。
这一切在Debug下运行得很好,然而一到release下,只要双击TabCtrl的ItemHead,视图切换过去后不到1秒就出错!
我检查了该类的GetDocument(),和Document类的变量。没什么异常,该初始化的都做到位了。
我特意在左边加了一排按钮来尝试切换,release非常正常!
最后,我把m_pView->PostMessage(WM_MY_TANDBCLICK,(WPARAM)GetCurSel());屏蔽掉,release正常!但不能切换了.
我尝试减少PostMessage的参数,没用!
我干脆让m_pView->PostMessage(WM_MY_TANDBCLICK,(WPARAM)GetCurSel());有效,但左边视图不处理该消息。正常!
这条路就走到这里了。双击切换的功能最后我在左边视图内通过处理CTabCtrl的Onclick(),配合定时器做出来了。
但为什么我在release下就不能像debug下那么发消息?
上面的程序在Win2k下VC++6.0(No service pack)完成。以上提到的函数可能有误,请相信我的程序里写的是正确的。
欢迎大家讨论。如果认为我某些地方没讲清楚,请跟贴,或者直接发到ahphone@263.net.
这个油箱已经转为收费油箱了。