Неправильно работает отрисовка окон

Тема в разделе "WASM.BEGINNERS", создана пользователем slavanap, 13 окт 2008.

  1. slavanap

    slavanap Вячеслав

    Публикаций:
    0
    Регистрация:
    10 сен 2008
    Сообщения:
    300
    Адрес:
    Смоленск, Россия
    Здравствуйте.

    Убил весь вечер, но так и не понял почему.
    В приложении - мини прога с исходником.
    Если быстро ресайзить окно, то кнопки в окне перестают отображаться правильно.
    Перемещаю кнопки функцией
    Код (Text):
    1. INVOKE SetWindowPos, Handle, 0, [EDI].left, [EDI].top, [EDI].right, [EDI].bottom, SWP_NOZORDER
    До изменения размера:
    [​IMG]
    И вот что выходит:
    [​IMG]
     
  2. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    Попробуй указать во флагах SWP_SHOWWINDOW.

    ИМХО лучше юзать вместо SetWindowPos MoveWindow. т.к. туда нужно передавать 6 параметров вместо 7 и к тому же последний параметр - repaint flag.
     
  3. slavanap

    slavanap Вячеслав

    Публикаций:
    0
    Регистрация:
    10 сен 2008
    Сообщения:
    300
    Адрес:
    Смоленск, Россия
    murder
    Тот же эффект.

    Понял почему это происходит. При изменении положения кнопок одна кнопка накрывает другую. Вот только почему, когда из-под "накрывшей" кнопки "вылазит" (становится на свое место) "накрытая", на ней не отрисовывается заново тот кусок, который будет накрыт? UpdateWindow не помогает. Перерисовывать каждый элемент целиком после изменения положения - тоже как-то не по-дзенски. А вот как перерисовать ту часть, которая так "испачкалась"? Куда копать?

    P.S. Сложно описал, но думаю, будет понятно.
     
  4. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    Копните DeferWindowPos
     
  5. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    slavanap
    картинок не видать. те непонятно.
    попробовал прогу запустить - ничего не налазит, но пачкает на кнопках. те перерисовку со стиранием по всему окну задавать надо.

    кста, вы уверены, что из приложеного исходника можно собрать приложеную прогу?
     
  6. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    файлов ресурсов нет =(
     
  7. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    Хм... может в стиле родительского окна указать WS_CLIPCHILDREN.
     
  8. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    murder
    нет нет. это перерисовка без стирания (напр. бегинпэйнт - ендпэйнт в вмпэйнт нету).
     
  9. OFFSIDE

    OFFSIDE New Member

    Публикаций:
    0
    Регистрация:
    23 сен 2006
    Сообщения:
    106
    Попробуйте двигать кнопки после ресайза окна. Или передавайте SendMessage WM_ERASEBKGND для всех передвигаемых кнопок после их передвижения.