Почему элементы окна(Edit, Status Window) не resize'ятся вместе с окном?

Тема в разделе "WASM.WIN32", создана пользователем Asterix, 10 дек 2004.

  1. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Subj.

    Может я какие флаги в диалоговом шаблоне не выставил?

    [​IMG] _787138277__Dlg.rar
     
  2. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    помоему, им нужно WM_SIZE явно посылать. щас посмотрю...
     
  3. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    свою прогу я не нашел, а в чужих разбираться сложнее, но в примерах к masmy есть такой вариант:


    Код (Text):
    1.     .elseif uMsg == WM_SIZE
    2.         invoke MoveWindow,hStatus,0,0,0,0,TRUE


    в ernie.asm, но повторить с диалогом у меня пока не вышло - то ли склероз, то ли маразм, то ли оба сразу :)
     
  4. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia


    врядли это поможет - это же notify. Только явные вызовы SetWindowPos и ручками пересчитывать координаты вложенных контролов. Да - делать это надо из обработчика WM_SIZE для окна-контейнера.
     
  5. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    вот я идиот! написал wParam == WM_SIZE и колдую, а нихрена не выходит :)

    вот со статусбаром, а за эдиты - не разбирался...

    [​IMG] _1982540668__resize.zip
     
  6. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Вобщем как я и предполагал, всё нужно руками..

    Для WM_SIZE будет тогда так:
    Код (Text):
    1. DlgProc proc hWnd, uMsg, wParam, lParam
    2.   mov eax, uMsg
    3.    WM_CASE eax, <INITDIALOG, SIZE, COMMAND, CLOSE>
    4. @r0:
    5.    xor eax, eax
    6.    jmp @r
    7. @INITDIALOG:
    8.    jmp @r1
    9. @SIZE:
    10.    invoke MoveWindow, $invoke(GetDlgItem, hWnd, IDC_MSCTLS_STATUSBAR1),0,0,0,0,TRUE
    11.    jmp @r1
    12. ..........
     
  7. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Кстати, а в чем фишка? Мы передаём в MoveWindow нулевые параметры, и только последним параметром идет TRUE чтоб послать WM_PAINT главному окну. Это как-то должно делаться автоматом стилями окна/контролов в диалоговом шаблоне без дополнительного кода, но вот как?
     
  8. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    да я вот упражняюсь сейчас в абед - пока безрез., но нужно заметить, что народ наклепал шаблонов и успокоился - я всегда думал, что за маразм - центрировать окно самому, когда есть DS_CENTER - а так ведь практически во всех примерах масма сделано!
     
  9. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    на тебе еще для прикола ;)



    пс: ты лучше GetDlgItem один раз сделай снаружи - ведь хэндл контрола не меняется - на один вызов меньше будет каждый раз.

    [​IMG] _457132955__resize.zip
     
  10. pas

    pas New Member

    Публикаций:
    0
    Регистрация:
    18 апр 2003
    Сообщения:
    330
    Адрес:
    Russia
    ИМХО.

    В обработку сообщения о изменении размеров диалогового окна необходимо внести отправку сообщения всем контролам (элементам управления) пропорции и положение в окне которых должно изменяться. В сообщении должны присутствовать новые координаты и размер элементов управления. Это происходит потому, что винда считает, что при изменении размеров основного окна, положение и размер дочерних окон определяется пользователем, как было сказано выше.
     
  11. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    Возникла проблема, с тем что не изменяються размеры окна... Существует два ListView'а(на TabStrip'е) Изменяю размеры первого пропорционально размерам окна, а второго мне надо изменять и размеры и позицию...

    Изменяю позицию относительно первого и размеры, но позиция изменяеться, размер нет!

    Функция заканчиваеться успешно... :dntknw:

    Видно где то ошибка или с параметрами или с флажками.

    [​IMG] 153692361__Unicorn.rar
     
  12. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    Проблему нашел, забыл изменять размер самого ТАВ*а...

    Из за этого все функции размеры увеличивали скорее всего но я этого не видел... так как



    нада меньше готовиться к Новому Году(то есть пить) и всё будет ок. :)))))