一个CListCtrl控件,按小键盘的左右键可以自动选中上(下)一个;但是我用SendMessage(WM_KEYDOWN,VK_LEFT) 和SendMessage(WM_KEYDOWN,VK_RIGHT),可以触发控件的Keydown事件,但是,控件中的目标没有选中。(选中的意思是有颜色转换)

解决方案 »

  1.   

    题目有点问题,应该是对一个控件WM_KEYDOWN消息
      

  2.   

    正向你说的,你用SendMessage(WM_KEYDOWN,VK_LEFT) 和SendMessage(WM_KEYDOWN,VK_RIGHT)其实是在向对话框发送按键消息,而不是向CListCtrl控件.
    你可以得到CListCtrl控件的句柄,然后向该句柄发送消息.
    HWND  h = m_List.GetSafeHwnd();
    ::SendMessage(h,WM_KEYDOWN,VK_DOWN,0);
    ::SendMessage(h,WM_KEYDOWN,VK_UP,0);
      

  3.   

    不是这个原因,我当然是给控件发消息的啦BmpZoomList.SendMessage(WM_KEYDOWN,VK_LEFT);BmpZoomList就是那个控件对象
      

  4.   

    我用这种方法试过了,是可以的.
    不过我发的是 VK_DOWN 和 VK_UP 消息 
    我试过用VK_LEFT,也是不行的.
      

  5.   

    找到问题了,问题是我在界面上放了2个按钮,按一下就发一个消息。所以,再按键的时候,焦点到了按钮上,所以那个list里面看起来就没有选中的样子-。-把焦点重新回到控件上就可以了。真不好意思