我需要自绘CListCtrl,于是我定义一个CListCtrl的子类CMyListCtrl,在其中覆盖父类的DrawItem,并设置Owner Draw Fixed属性为TRUE。我进行Debug,发现程序并没有跑到我的DrawItem中。我找到CListCtrl的定义是在winctrl2.cpp里面,于是我在winctrl2.cpp中随便写几个字符,发现程序还是能跑起来,这说明winctrl2根本没有被编译。我又创建几个工程,在winctrl2.cpp中随便乱改了一下,发现工程还是可以很正常的运行。我使用VS2005,SDK是PPC 2003。请高手解答这到底是怎么回事,我该怎么样改正这个BUG?

解决方案 »

  1.   

    改MFC源文件winctrl2.cpp?如果你的工程使用MFC共享库方式,你怎么改都没用;
    如果使用静态库,要改完后重新生成MFC静态库才能生效。
      

  2.   

    非常的晕……winctrl.cpp是mfc的source code文件,你改了有什么用?你调用的代码是已经编译好的mfc42.dll!
    DrawItem没被调用是因为list创建的时候没有制定owner draw属性!
      

  3.   

    clistctrl建议你还是使用Custom draw。
      

  4.   

    多谢楼上几位朋友指教,winctrl2.cpp确实不用再编译。我仔细检查了一下,现在可以单步跟了。不过我自己写的DrawItem还是没有运行,我Owner Draw fixed这个属性已经设置为TRUE了,但是if (message != WM_DRAWITEM)这句话始终过不去。用其他的控件,比如Button,ListBox,在将Owner Draw 设置为TRUE后都可以自己画。list创建的时候制定owner draw属性怎么搞啊,请朋友们指点迷津啊~