Big Trouble!Vc6.0生成和VS 2005生成的程序,表现行为不一样!
问题描述
1 窗体上有我自绘的两个MyList,继承自CCtrlList
2 两个MyList中都有ON_NOTIFY_REFLECT(NM_CLICK, OnClick),就是在我点中一下列表中的某一条,在列表条上绘画出一个“勾”
3 VC 6中:两个MyList中都有各自的ON_NOTIFY_REFLECT(NM_CLICK, OnClick),我点一下MyList1,再去点一下MyList2,那样就会有两个勾,MyList1上一个,MyList2上一个
VS 2005中:我点一下MyList1,MyList1上出现一个勾,我再去点MyList2,结果MyList1上的勾消失了,只有MyList2上有
4 为了重绘“勾”的效果(比如我点一下MyList1 上的第一条,第一条出现勾,再点第二条,第一条的“勾”就消去了,在第二条上重绘“勾”),我用了Invalidate(),Invalidate()在各自的MyList类中(不是在父窗口中)
5 现在问题看起来是,VC 6.0中的Invalidate(),比如MyList1中的Invalidate()只重绘MyList1
vs2005中的 Invalidate(),比如MyList1的Invalidate()不仅重绘了MyList1,也重绘了MyList2。
补充说明:
1 MyList1和MyList2同在一个父窗口中国内,但是Invalidate()在各自的MyList类中
2 因为VS2005连接的窗体资源,按钮资源比较好看,所以我需要用vs2005链接vs2005的控件资源
分析:
应该是VC 6.0 和 VS 2005链接的MFC库不一样,其中这个Invalidate()函数改了。有没有哪位朋友碰到过这种问题,有解决经验的?求教了,Big Trouble.