在listctrl控件一定的小范围里鼠标点击无任何反应
离开这片小区域,点击就相应正常,比如:行被选中等。
刷新控件列表后,可以看到无效区域的大小和位置一片白,
当鼠标移动到这片白区域内,白色消失,列表显示正常。但这片白所在的区域就是怎么点也没反应
PS:个人感觉像是什么控件挡住了,但是由于对话框以及控件很多枚举查找的方式基本可以忽略……
    spy++也试了,将整个工程对话框作为message的来源,只选用mouse消息,过滤 wm_setcouser消息,在这片白色区域点击 可以收到buttondown消息,但是关联的值是整个工程的值…
请教各位有什么好的思路解决问题?

解决方案 »

  1.   

    嗯。如果你不想知道是哪个窗口挡住了这个控件的话,试试看用SetWindowPos将ListCtrl提前到最上方。
      

  2.   

    布局控件位置时是否有控件与这个ListView的位置重又叠?如果没有就说明不是被控件挡住了。
      

  3.   

    窗口挡住控件?您指的窗口是Dialog吗?
    我感觉像是控件挡住控件,比如:button挡住listXtrl,但他们都是在同一个Dialog里的
    只是比如~
      

  4.   

    恩~我试试在ListCrel所在的Dialog里将所有Create出来的控件先都注掉才看看
    不过这个工作量比较大……海量的控件……
      

  5.   


    干嘛要做这么麻烦的工作呢?直接把ListCtrl注掉,看看那里有没有别的控件不就完了。再说,你ListCtrl范围内有什么其他的控件你自己不知道吗?
      

  6.   

    如果不是自绘的list,应该是被同级的其它控件挡住了。在对话框的设计面板中 摁Ctrl+A选择所有控件,再排除list控件,然后给其它所有控件属性设置Visble->False.以此来确定问题。 如果真的是被其它控件挡住了,那就用spy++看看那个白的控件的ID值是多少,确定ID后就容易找到这个控件时哪个了
      

  7.   

    也有可能是你把ListCtrl的那几块区域给扣掉了,所以就不会刷新.
      

  8.   

    1.麻烦不麻烦,这个已经是事实了……
    2.ListCtrl所在的Dialog类中只有2个控件,还有一个是Tree,其他都是动态创建的,所以只通过资源来排查不行。
    3.我将所有控件,包括动态创建的控件都注掉还是存在
    现在感觉这个挡住的东西已经不像是该Dialog类中的控件了
      

  9.   

    1.静态控件就2个,还包括很多动态创建额
    2.spy++怎么看?把准心挪进去,只能选中整个listctrl,那个白色区域看不见
      

  10.   

    在所有的控件里响应左键单击消息(按钮在其父窗口里响应),弹出MessageBox,其中显示控件ID,在该区域点击左键,看看蹦出的是什么。
      

  11.   

    卡卡西
    关键是不知道是哪个控件挡住了,而且不排除是其他 Dialog类~
      

  12.   

    如果你ListCtrl所在的dialog是DoModal出来的,其他dialog根本不可能获得焦点,也就不可能有窗口在ListCtrl上面。而如果ListCtrl所在的dialog不是DoModal出来的,其他dialog的控件要出现在上面也一定要先获得焦点,除非——你画了一个窗口,让它一直占据最上层窗口。