как создать список в combobox

Тема в разделе "WASM.BEGINNERS", создана пользователем zxcc, 6 ноя 2006.

  1. zxcc

    zxcc New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2006
    Сообщения:
    172
    Подскажите как создать выпадающий список в combobox на masm32.
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Так же как и любой другой контрол. CreateWindow с классом COMBOBOX
     
  3. zxcc

    zxcc New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2006
    Сообщения:
    172
    Дело в том что не знаю как занести в combobox список.
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    CB_ADDSTRING
    wParam - 0
    lParam - указатель на строку.
     
  5. KiNDeR

    KiNDeR New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2003
    Сообщения:
    258
    Адрес:
    Russia
    Код (Text):
    1. ; Процедура "AddStringToComboBox"
    2. ; Добавляет массив строк в сонтрол ComboBox.
    3. ;
    4. ; Пример использования:
    5. ;        ...
    6. ; _str  db 'строка_1',0
    7. ;       db 'строка_2',0
    8. ;       ...
    9. ;       ...
    10. ;       db 'строка_n',0
    11. ;       db 0
    12. ;       ...
    13. ;
    14. ; @call AddStringToComboBox,[h_combobox],_str
    15. ;
    16.   AddStringToComboBox:  ; hCBWnd,pStr
    17.  
    18.               push    ebx esi edi
    19.               mov     esi,[esp+08h+0Ch]
    20.          .add_string:
    21.               cmp     byte [esi],0
    22.               je      AddStringToComboBox.finish
    23.               mov     eax,[esp+04h+0Ch]
    24.               push    esi
    25.               push    0
    26.               push    143h             ;CB_ADDSTRING
    27.               push    eax
    28.               call    [SendMessage]
    29.          .next_string:
    30.               lodsb
    31.               or      al,al
    32.               jnz     AddStringToComboBox.next_string
    33.               jmp     AddStringToComboBox.add_string
    34.          .finish:
    35.               pop     edi esi ebx
    36.               retn    08h
     
  6. zxcc

    zxcc New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2006
    Сообщения:
    172
    К сожалению ничего не получилось
     
  7. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    изучай:
     
  8. zxcc

    zxcc New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2006
    Сообщения:
    172
    shoo А в каком формате файлы в архиве? У меня после извлечения в sw40[1].0.0.1.1
     
  9. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    если не открывается, то вот ключевые моменты:
    1.
    Код (Text):
    1. week        db "Понедельник",0
    2.             db "Вторник",0
    3.             db "Среда",0
    4.             db "Четверг",0
    5.             db "Пятница",0
    6.             db "Суббота",0
    7.             db "Воскресенье",0
    8.             db 0
    2.
    Код (Text):
    1.     cmp [uMsg],WM_INITDIALOG
    2.     jne @F
    3.     invoke GetDlgItem,[hWnd],COMBO_1
    4.     stdcall cb_fill_str,eax,week    
    5.     jmp .exit_true
    6. @@:
    3.
    Код (Text):
    1. proc cb_fill_str hWnd, strtab
    2.     push edi
    3.     mov edi,[strtab]
    4. @@:
    5.     cmp byte [edi],0
    6.     je  @F
    7.     invoke SendMessage,[hWnd],CB_ADDSTRING,0,edi
    8.     mov ecx,127
    9.     xor eax,eax
    10.     repne scasb
    11.     jmp @B
    12. @@:
    13.     pop edi
    14.     ret    
    15. endp
     
  10. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    кстати, важный момент: высота контрола на форме - вместе с выпавшим списком. если сделать высоту комбобокса в одну строку - можно просто не увидеть выпавший список, т.к. он будет обрезан - не забудь "растянуть" его вертикально.
     
  11. zxcc

    zxcc New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2006
    Сообщения:
    172
    shoo Извиняюсь за вопрос а как "растянуть"?
     
  12. Jupiter

    Jupiter Jupiter

    Публикаций:
    0
    Регистрация:
    12 авг 2004
    Сообщения:
    532
    Адрес:
    Russia
    растянуть в редакторе ресурсов
    либо задай ему высоту 60

    вдогонку - макросы для masm32
    Код (Text):
    1. ; ComboBox
    2. ; Add String
    3. AddCboStr   Macro   hcbo,indx,pbuff
    4.     invoke  SendMessage, hcbo, CB_ADDSTRING, indx,pbuff
    5. EndM
    6. ; Set Current Selection
    7. SetCboSel   Macro   hcbo,indx
    8.     invoke  SendMessage, hcbo, CB_SETCURSEL, indx, 0
    9. EndM
    10. ; Get Current Selection
    11. GetCboSel   Macro   hcbo
    12.     invoke  SendMessage, hcbo, CB_GETCURSEL, 0, 0
    13. EndM
    14. ; Reset Content
    15. ResetCbo    Macro   hcbo
    16.     invoke  SendMessage,hcbo, CB_RESETCONTENT,0,0
    17. EndM
    использование:
    AddCboStr hCbo,0,addr szSomeStr
    AddCboStr hCbo,1,addr szSomeStr2
    AddCboStr hCbo,2,addr szSomeStr3
    SetCboSel hCbo,0
    где hCbo - хэндл комбобокса
     
  13. zxcc

    zxcc New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2006
    Сообщения:
    172
    Спасибо большое Всем ,всё получилось
     
  14. KingT

    KingT Member

    Публикаций:
    0
    Регистрация:
    12 янв 2006
    Сообщения:
    208
    Скажите если комбо бокц создается с помощью CreateWindow то зачем например в Visual Studio есть готовый контрол который просто можно перетянуть на дилоговое окно?
    Я создал диалоговое окно и добавил Extended комбо бокс и после этого окно перестало появляться.
    Если добавить простой комбо бокс то он появляется, надписи можно добавить, только при нажатии они все не выскакивают вниз а видна только первая с индексом 0.
     
  15. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    Если уж очень интересно- можно заглянуть в МСДН-рубрика Dialog Data Exchange :) Механизм такой.Там и его работа описана с картинками. :)
    Сделано это для реализации технологии-"что вижу,то и делаю"-для быстроты разработки GUI. Так,к примеру,очень быстро можно накидать кучу кнопок, настроить их местоположение,расстояние и прочее.
     
  16. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    Это потому, что ты не узказал в ресурсах область раскрытия выпадающего списка.Нужно потянуть за кнопочку со стрелочкой -появится рамочка :)
    Если создавал динамически, через Create, в RECT для bottom'а ставим высоту комбика с дроплистом, эдак не не менее 200 длясчастья :)
    Что-то не то :) Такого не бывает :)
     
  17. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.347
    Про InitCommonControlsEx+ICC_USEREX_CLASSES не забываем...