BS_SPLITBUTTON

Тема в разделе "WASM.WIN32", создана пользователем A_L_E_X, 26 авг 2020.

  1. A_L_E_X

    A_L_E_X New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2020
    Сообщения:
    13
    Привет!
    Как работать с этим типом кнопок? Ни одного примера на ассемблере в сети не нашел.
    Вот что пока смог приготовить:
    Код (ASM):
    1. wm_initdialog:
    2. .data
    3. BCSIF_STYLE         =0x0004
    4. BCSIF_SIZE             =0x0008
    5. BCSS_NOSPLIT      =0x0001
    6. struc               BUTTON_SPLITINFO             mask,hGlyph,Style,cx,cy
    7. {
    8.       .mask         dw  mask
    9.       .hGlyph     dq  hGlyph
    10.      .Style         dw  Style
    11.      .cx               dq  cx
    12.      .cy               dq  cy
    13. }
    14. SplitInfo    BUTTON_SPLITINFO         BCSIF_STYLE,0,0,0,0
    15. BCM_SETSPLITINFO     =0x1607
    16. BCM_GETSPLITINFO    =0x1608
    17. .code
    18.         invoke    GetDlgItem,[hWnd],IDC_B_Load
    19.         invoke    SendMessage,eax,BCM_SETSPLITINFO,0,SplitInfo
    Но вот hGlyph хочет ссылаться на список изображений, тогда как мне нужно вставить обычный тестовый список, либо дочернее окно, в котором я такой список сам накатаю.
    Весь функционал по таким кнопкам заточен на работу с методами под класс CButton, а как с ним работать, без примеров, я не понимаю, всё покрыто мраком. Где вообще брать описания структур и констант? Я данный кусок кода по крупицам собирал, а CButton -- вообще темный лес. Ещё есть интерфейсы IImageList с которыми вроде как проще, но GUID ключи под них я не нашел.
    Помогите разобраться, желательно на примерах.
     
  2. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Насколько я могу судить, при клике в такой батон WM_NOTIFY с BCN_DROPDOWN должно приходить, а тебе надо PopupMenu нарисовать по этому событию. Без всяких там. Так что не сношал бы ты мозг, а рисовал на кнопке характерную иконку с текстом (или из двух кнопок соорудил, как это обычно делается) и выкидывал это меню при нажатии на нее, без самого этого стиля. Опять же совместимость с Windows XP SP2 будет.
     
  3. A_L_E_X

    A_L_E_X New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2020
    Сообщения:
    13
    Я хочу разобраться именно с этим стилем. BUTTON_SPLITINFO и должно ссылаться на такое PopupMenu, вот его то мне и нужно правильно оформить.
     
  4. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Не должно. https://docs.microsoft.com/ru-ru/windows/win32/api/commctrl/ns-commctrl-button_splitinfo
    Посмотри внимательно на поля и маски:
    BCSIF_GLYPH
    BCSIF_IMAGE
    BCSIF_SIZE
    BCSIF_STYLE
    Туда только ImageList, стиль и размер можно напатронить. У майкрософт не бывает скрытых способов что-то куда-то засунуть, если не предусмотрено.

    Зато есть вот такая статья про Split Buttons https://docs.microsoft.com/en-us/wi...bcn-dropdown-notification-from-a-split-button
     
  5. A_L_E_X

    A_L_E_X New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2020
    Сообщения:
    13
    Похоже это то, что нужно, спасибо. Ушел читать и переводить на ассемблер...