请问如何用sendmessage来选择带checkbox的Listbox前面的钩?
我只能选择到那个item,但是没法在他前面打勾,因为是两个不同的程序,所以需要用sendmessage来发消息

解决方案 »

  1.   

    SendMessage(CheckBox1.Handle,BM_SETCHECK,1,0)
      

  2.   

    CheckDlgButton(Handle, GetDlgCtrlID(CheckBox1.Handle), BST_CHECKED );
      

  3.   

    楼上两位可能没明白我的意思,我说的是另一个程序上面的Listbox是带checkbox的,也就是listbox里面有checkbox可以选择,并不是直接的checkbox,所以上面的方法不行的,我试过了
      

  4.   

    先findwindow('TCheckBox','CheckBox1');
    得到checkbox1的句柄,然后再
    SendMessage(the Handle,BM_SETCHECK,1,0)
      

  5.   

    我说了不是独立的checkbox,checkbox是listbox里面的,不能直接用BM_SETCHECK的,我试过了
      

  6.   

    SendMessage(m_hWnd, TVM_GetNextItem, TVGN_Root, ByVal 0) 获得根节点句柄
    TVGN_Child, 获得子节点句柄
    TVGN_Next 获得下一个句柄
    遍历循环得到所有节点的句柄了
    给下TVGN_Next这些常数的值谢谢
    TVGN_Root=0x0000,
    TVGN_Next=0x0001,
    TVGN_Previous=0x0002,
    TVGN_Parent=0x0003,
    TVGN_Child=0x0004,
    TVGN_FirstVisible=0x0005,
    TVGN_NextVisible=0x0006,
    TVGN_PreviousVisible=0x0007,
    TVGN_DropHilite=0x0008,
    TVGN_Caret=0x0009,
    TVGN_LastVisible=0x000A,还有很多值的,具体请参照msdn
      

  7.   

    如果你在listbox所在的主程序裡可以修改checkbox的狀態的話,問題很簡單,如
    sendmessage(mainform.handle,自定消息,0,標識);
    自定消息:WM_MyMsg= WM_User + 100;
    標識:用來標識要修改哪個item的狀態,可以是整數,如1,2....
    然後在,主程序裡處理這個消息,對應上面的,判斷lparam即可