SysListView32

Discussion in 'WASM.BEGINNERS' started by vg, Sep 4, 2007.

  1. vg

    vg New Member

    Blog Posts:
    0
    Есть SysListView32

    Code (Text):
    1.      invoke CreateWindowEx,0,addr ListViewClass,0,WS_CHILD or WS_VISIBLE or LVS_REPORT or LVS_SHAREIMAGELISTS,75,70,350,200,hwnd,0,hInstance,0
    2.      mov    hlist,eax
    3.      invoke SendMessage,hlist,LVM_SETEXTENDEDLISTVIEWSTYLE,0,LVS_EX_CHECKBOXES
    4.      mov    lvc.imask,LVCF_TEXT+LVCF_WIDTH
    5.      mov    lvc.pszText,offset Heading
    6.      mov    lvc.lx,250
    7.      invoke SendMessage,hlist,LVM_INSERTCOLUMN,0,addr lvc
    8.      mov    lvc.lx,100
    9.      mov    lvc.pszText,offset Heading
    10.      invoke SendMessage,hlist,LVM_INSERTCOLUMN,1,addr lvc
    11.      mov    lvs.imask,LVIF_TEXT or LVIF_STATE
    12.  
    13.      mov    lvs.state,8192
    14.      mov    lvs.stateMask,LVIS_STATEIMAGEMASK
    15.      mov    lvs.pszText,offset Text
    16.      invoke SendMessage,hlist,LVM_INSERTITEM,0,addr lvs
    17.      mov    lvs.imask,LVIF_TEXT
    18.      mov    lvs.iSubItem,0
    19.      mov    lvs.pszText,offset Text
    20.      invoke SendMessage,hlist,LVM_SETITEM,1,addr lvs
    Вопрос №1
    Почему не добавляется под-item?

    Вопрос №2
    Данный код не работает под Win98. Каким образом можно сделать список с CHECKBOXES под Win98?
     
  2. RamMerLabs

    RamMerLabs Well-Known Member

    Blog Posts:
    0
    subitem равный нулю - это просто item, во втором случае ставь subitem=1;
     
  3. GMax

    GMax Member

    Blog Posts:
    0
    По второму вопросу:
    В MSDN все написано
    P.S. В Win98 надо самому реакции прописывать
     
  4. vg

    vg New Member

    Blog Posts:
    0
    RamMerLabs
    Так
    Code (Text):
    1.      mov    lvs.imask,LVIF_TEXT
    2.      mov    lvs.iSubItem,1
    3.      mov    lvs.pszText,offset schevent
    4.      invoke SendMessage,hlist,LVM_SETITEM,1,addr lvs
    тоже не работает

    GMax
    Это как?
     
  5. GMax

    GMax Member

    Blog Posts:
    0
    Первый клик поставить галку, второй убрать
     
  6. vg

    vg New Member

    Blog Posts:
    0
    Т. е. создать, что-то типа кнопки? А как тогда эту кнопку соединить со списком итемов? Кстати, итемы тоже пропадают при Win 98. Короче говоря, не совсем понимаю как это практически осуществить. Может есть пример?
     
  7. GMax

    GMax Member

    Blog Posts:
    0
    Ну вопервых -- http://www.wasm.ru/article.php?article=1001031

    А чекбоксы это рисунки (Image), добавляются через ImageList
     
  8. RamMerLabs

    RamMerLabs Well-Known Member

    Blog Posts:
    0
    в субботу приеду домой-выложу пример
     
  9. RamMerLabs

    RamMerLabs Well-Known Member

    Blog Posts:
    0
    вот, юзай: (сорри, что на vb - первый пример, который нашёл)

    итем:
    Code (Text):
    1. Public Function ItemAdd(ByVal Item%, ByVal text$, ByVal Indent%, ByVal Icon%) As Boolean
    2.  Dim uLV As LVITEM
    3.  If (m_hListView) Then
    4.   With uLV
    5.    .iItem = Item
    6.    .lParam = Item
    7.    .pszText = text & vbNullChar
    8.    .cchTextMax = Len(text) + 1
    9.    .iIndent = Indent
    10.    .iImage = Icon
    11.    .mask = LVIF_TEXT Or LVIF_INDENT Or LVIF_IMAGE Or LVIF_PARAM
    12.   End With
    13.   ItemAdd = (SendMessageA(m_hListView, LVM_INSERTITEM, 0, uLV) > -1)
    14.  End If
    15. End Function
    субитем:
    Code (Text):
    1. Public Function SubItemSet(ByVal Item%, ByVal SubItem%, ByVal text$, ByVal Icon%) As Boolean
    2.  Dim uLV As LVITEM
    3.  If (m_hListView) Then
    4.   With uLV
    5.    .iItem = Item
    6.    .iSubItem = SubItem
    7.    .pszText = text & vbNullChar
    8.    .cchTextMax = Len(text) + 1
    9.    .iImage = Icon
    10.    .mask = LVIF_TEXT Or LVIF_IMAGE
    11.   End With
    12.   SubItemSet = CBool(SendMessageA(m_hListView, LVM_SETITEM, 0, uLV))
    13.  End If
    14. End Function