прорисовка LISTVIEW

Тема в разделе "WASM.WIN32", создана пользователем 6opoDuJIo, 16 июл 2009.

  1. 6opoDuJIo

    6opoDuJIo New Member

    Публикаций:
    0
    Регистрация:
    22 май 2009
    Сообщения:
    105
    столкнулся с такой проблемой
    после получения главным окном сообщения WM_PAINT и осуществения перерисовки, визуально пропадают элементы LISTVIEW контролла, но если клацнуть в то место, где он предположительно есть, он снова становится видимым
    уважаемые, можете мне обьяснить почему элементы LISTVIEW'а прячутся от меня?)
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Ну если окно обычное, а не диалоговое, и ты вручную перерисовывкой занимаешься, тогда ответ очевиден - ты сам и затираешь этот контрол. А при клике система отрисовывает прямоугольник с контролом сама и все становится снова видно
     
  3. 6opoDuJIo

    6opoDuJIo New Member

    Публикаций:
    0
    Регистрация:
    22 май 2009
    Сообщения:
    105
    и чо делать тогда?
     
  4. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    WS_CLIPCHILDREN?
    OWNERDRAWFIXED?
     
  5. 6opoDuJIo

    6opoDuJIo New Member

    Публикаций:
    0
    Регистрация:
    22 май 2009
    Сообщения:
    105
    ага
    ты указал сообщение.а параметры к ним?
     
  6. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    Если у ListBox`а установлен стиль LBS_OWNERDRAWFIXED или LBS_OWNERDRAWVARIABLE, то при перерисовке каждого элемента он отсылает родительскому окну сообщение WM_DRAWITEM. То есть отрисовкой занимается родительское окно.

    Если у родительского окна установлены стили WS_CLIPCHILDREN и WS_CLIPSIBLINGS, оно не может ничего нарисовать поверх дочерних окон при выводе в свой DC.
     
  7. 6opoDuJIo

    6opoDuJIo New Member

    Публикаций:
    0
    Регистрация:
    22 май 2009
    Сообщения:
    105
    а причом тут главное окно?
    LISTVIEW контрол сам по себе остаётся,но в нём 3 визуально пустые колонки, хотя как я сказал выше, элементы остались и их можно выделить, а стиль листбокса стоит LVS_REPORT+WS_CHILD+WS_VISIBLE+WS_BORDER, т.е. родительское окно не должно заниматся прорисовкой
     
  8. 6opoDuJIo

    6opoDuJIo New Member

    Публикаций:
    0
    Регистрация:
    22 май 2009
    Сообщения:
    105
    ктомуже после применения этого стилля к родительскому окну, то становится невозможно выделить другие item'ы
     
  9. 6opoDuJIo

    6opoDuJIo New Member

    Публикаций:
    0
    Регистрация:
    22 май 2009
    Сообщения:
    105
    только первый стояищий в списке
     
  10. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    Ну не знаю. Добавь в обработчик прорисовки SendMessage(list,WM_PAINT,0,0).