суббота, 26 декабря 2009 г.

Все не так просто с высотой комбобокса (WinAPI)

На днях пришлось добавить комбобокс в древнюю софтину с GUI на Win32 API. Комбобокс этот должен входить в состав диалога, описанного в ресурсах. Ок, мне оставалось только добавить код, наполняющий этот комбобокс, и обработчик выбора элемента.

Все бы хорошо, но выпадающий список не появлялся! При этом GetLastError() == 0 и SendMessage(..., CB_ADDSTRING, ...) != CB_ERR после предварительного SetLastError(ERROR_SUCCESS).

О-о-о... Мне стоило полтора десятка минут повозиться с этой ерундой, меняя стили, коды возврата на разные сообщения и т. д. и т. п., пытаясь заставить список выпасть, прежде чем я обнаружил, что значение высоты, указанное при декларации комбобокса в ресурсах определяет не только высоту непосредственно поля ввода, но и вместе с ним высоту выпадающего списка. Ох уж этот ужасный код, реализующий GUI на чистом Win32 API... :)

2 комментария:

  1. "Полтора десятка минут" - это мелочи :)
    Полезное замечание, спасибо!

    ОтветитьУдалить
  2. да, приходилось и подольше повозиться, но всеравно не приятно :)
    Всегда пожалуйста :)

    ОтветитьУдалить