sendmessage()不是想象中的那么简单,如果涉及到对另外一个进程sendmessage问题就很多了,所以不能简单的使用

解决方案 »

  1.   

    1. LB_SETITEMDATA返回的不是index.
    2. 没有效果指的是什么?是SendMessage(hList1,LB_GETITEMDATA,nIndex,0)取不到数据吗?
      

  2.   

    句柄一定没有错。
    谢谢CHEHW,这里LINDEX只是做一个变量没有其它意义
    没有效果指的是,这句原来,我希望能改变LIST指定ITEM的颜色。
      

  3.   

    希望能改变LIST指定ITEM的颜色?? LB_SETITEMDATA是设置列表项的数据的!
      

  4.   

    如果用PostMessage可以,不要用SendMessage。原因我也不知道
      

  5.   

    agree with jiangsheng(蒋晟) (  ) 信誉:100
      

  6.   

    void CColorListBox::SetItemColor(int nIndex, COLORREF rgb)
    //
    // Return Value: None.
    //
    // Parameters : nIndex - Specifies the zero-based index of the item.
    // rgb - Specifies the color to be associated with the item.
    //
    // Res : Sets the 32-bit value associated with the specified
    // item in the list box.
    //
    {
    SetItemData(nIndex, rgb);
    RedrawWindow();
    } // SetItemColor
    其中的代码是这样写的
    对SetItemData函数, 在MSDN中有MFC的说明。
    不过,对于其它语言,我想只有这个消息,最合适了,
    那大家能不能用其它方法
    在VC中这个方法可以。
      

  7.   

    用PostMessage要快一点。没有其它区别
      

  8.   

    如果你的列表框指定了LBS_OWNERDRAW 和LBS_HASSTRINGS 风格,并且在WM_DRAWITEM中作了相应的处理,那么应该是在SendMessage()后再InvalidateRect(hList,NULL,TRUE);
      

  9.   

    WM_DRAWITEM是我来SEND,
    还是控件自己SEND的。
      

  10.   

    请问刀锋
    如果涉及另一个进程有哪些要注意的
    我用sendmessage向edit发送settxt消息成功的
    但是发送listbox的click就不成功了。(具体的那个消息忘了)
      

  11.   

    可以去下载我的内存共享和进程通讯的例子看看,用SendMessage发送
    WM_SETTEXT消息来达到通知的目的。
      http://www.csdn.net/expert/topic/516/516072.xml