VS2008 f:/dd/vctools/vc7libs/ship/atlmfc/src/mfc/winctrl1.cpp 错误代码

      最近碰到一个很奇怪的问题,项目在Release下能正常运行,可是在Debug下就报一个错误,VS2008 f:/dd/vctools/vc7libs/ship/atlmfc/src/mfc/winctrl1.cpp 错误调试。图片如下:




      点击重试后进入下面的代码处:


VS2008 f:/dd/vctools/vc7libs/ship/atlmfc/src/mfc/winctrl1.cpp 错误代码_第1张图片


      很明显这是MFC中CButton类的函数了,在网上找了半天,有一个和我这个错误很类似的文章。但是他不是在CButton类的DrawItem函数处出错,而是在CStatic类的DrawItem函数处出错,也试验了一下它的方法,可是不行。


      因为网上的说法是重写DrawItem函数,可是我的工程使用了ToolkitPro(一个MFC界面库),这个Button是CXTPButton类型的,想来想去如果使用第三方库还要自己重写函数的话那这个库做的也太失败了。在CXTPButton这个类的头文件中查找DrawItem函数发现根本没有这个函数。


      但是在查阅CButton类的DrawItem函数的过程中发现有人不断提醒WM_DRAWITEM消息和Owner Draw这个属性,发现WM_DRAWITEM消息行不通后又看了下Owner Draw这个属性,本来感觉这个属性应该定位为true的,因为的确是定义了一个按钮类,虽然这个按钮类是不是我定义的。可是抱着试验的心态将它改成false,这个错误就奇迹般消失了。


      现在回过头来想想,发现也是这么回事,如果将Owner Draw置为true,那么就需要重写WM_DRAWITEM这个函数,否则就会报哪个错误,CXTPButton类中根本没有重写这个函数,所以不需要将Owner Draw置为true。

你可能感兴趣的:(VS2008 f:/dd/vctools/vc7libs/ship/atlmfc/src/mfc/winctrl1.cpp 错误代码)