SysListView32

Тема в разделе "WASM.BEGINNERS", создана пользователем vg, 4 сен 2007.

  1. vg

    vg New Member

    Публикаций:
    0
    Есть SysListView32

    Код (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

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

    GMax Member

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

    vg New Member

    Публикаций:
    0
    RamMerLabs
    Так
    Код (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

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

    vg New Member

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

    GMax Member

    Публикаций:
    0
    Ну вопервых -- http://www.wasm.ru/article.php?article=1001031

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

    RamMerLabs Well-Known Member

    Публикаций:
    0
    в субботу приеду домой-выложу пример
     
  9. RamMerLabs

    RamMerLabs Well-Known Member

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

    итем:
    Код (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
    субитем:
    Код (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