прорисовка LISTVIEW

Discussion in 'WASM.WIN32' started by 6opoDuJIo, Jul 16, 2009.

  1. 6opoDuJIo

    6opoDuJIo New Member

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

    wasm_test wasm test user

    Blog Posts:
    0
    Joined:
    Nov 24, 2006
    Messages:
    5,582
    Ну если окно обычное, а не диалоговое, и ты вручную перерисовывкой занимаешься, тогда ответ очевиден - ты сам и затираешь этот контрол. А при клике система отрисовывает прямоугольник с контролом сама и все становится снова видно
     
  3. 6opoDuJIo

    6opoDuJIo New Member

    Blog Posts:
    0
    Joined:
    May 22, 2009
    Messages:
    105
    и чо делать тогда?
     
  4. murder

    murder Member

    Blog Posts:
    0
    Joined:
    Jun 3, 2007
    Messages:
    628
    WS_CLIPCHILDREN?
    OWNERDRAWFIXED?
     
  5. 6opoDuJIo

    6opoDuJIo New Member

    Blog Posts:
    0
    Joined:
    May 22, 2009
    Messages:
    105
    ага
    ты указал сообщение.а параметры к ним?
     
  6. murder

    murder Member

    Blog Posts:
    0
    Joined:
    Jun 3, 2007
    Messages:
    628
    Если у ListBox`а установлен стиль LBS_OWNERDRAWFIXED или LBS_OWNERDRAWVARIABLE, то при перерисовке каждого элемента он отсылает родительскому окну сообщение WM_DRAWITEM. То есть отрисовкой занимается родительское окно.

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

    6opoDuJIo New Member

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

    6opoDuJIo New Member

    Blog Posts:
    0
    Joined:
    May 22, 2009
    Messages:
    105
    ктомуже после применения этого стилля к родительскому окну, то становится невозможно выделить другие item'ы
     
  9. 6opoDuJIo

    6opoDuJIo New Member

    Blog Posts:
    0
    Joined:
    May 22, 2009
    Messages:
    105
    только первый стояищий в списке
     
  10. murder

    murder Member

    Blog Posts:
    0
    Joined:
    Jun 3, 2007
    Messages:
    628
    Ну не знаю. Добавь в обработчик прорисовки SendMessage(list,WM_PAINT,0,0).