Проблемка встала интересная... Как в VC++ во время выполнения сменить вид селекции в листбоксе?
Есть объект CListBox, есть окно к которому он привязан, и оно созданнно со свойством Single-Selection. А надо во время работы программы сменить его на Multiple-Selection. Как это сделать ума не приложу... И окну свойства менял, и производный от CListBox объект создавал в котором перегружал функцию Create и PreCreateWindow... — Не хочет работать! Может кто знает как это сделать в VC++, а то в C++ Builder'е илиDelphi все прекрасно работает...
А>Только убив и создав его заново с новыми стилями. C++ Builder и Delphi, кстати, так и делают.
Тогда как можно убить объект, если свойства его я задавал в ClassWizard'е и он автоматически создавался...
Здравствуйте Saruman, Вы писали:
А>>Только убив и создав его заново с новыми стилями. C++ Builder и Delphi, кстати, так и делают.
S>Тогда как можно убить объект, если свойства его я задавал в ClassWizard'е и он автоматически создавался...
Что значит автоматически?
ClassWizard тебе сделал какую-то переменную в твоем диалоге, что-то типа:
class CMyDialog : public CDialog
{
// . . .
CListBox m_wndList;
// . . .
};
теперь там, где надо поменять стиль, нужно сделать что-то вроде следующего:
m_wndList.DestroyWindow();
m_wndList.Create(...); // здесь нужные тебе стили
а дальше нужно смотреть на месте, может быть, еще что-то надо сделать в дополнение к этому — это только общий принцип.
В любом случае, одной-двумя строчками не обойдешься
Кстати, а
ModifyStyle(0, LBS_MULTIPLESEL) ты не пробовал вызывать? Может, поможет. Тогда все, что было выше написано, делать не нужно.