Кнопки. Положение в диалоге.

Тема в разделе "WASM.BEGINNERS", создана пользователем Voronve, 24 янв 2007.

  1. Voronve

    Voronve New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2006
    Сообщения:
    15
    ......
    .if eax = WM_INITDIALOG
    mov eax,[hWnd]
    invoke GetDlgItem,[hWnd],IDB_EXIT
    mov [hDlgItems],eax
    .......

    .elseif eax = WM_SIZE
    invoke GetClientRect,[hDlgItems],TRect
    mov eax,[TRect.right]
    mov ecx,[TRect.left]
    mov [Pt.x],ecx
    sub eax,ecx
    mov [TRect.right],eax

    mov eax,[TRect.bottom]
    mov ecx,[TRect.top]
    mov [Pt.y],ecx
    sub eax,ecx
    mov [TRect.bottom],eax

    invoke ScreenToClient,[hWnd],Pt
    mov eax,[Pt.x]
    mov [TRect.left],eax

    mov eax,[Pt.y]
    mov [TRect.top],eax
    invoke MoveWindow,[hDlgItems],[TRect.left],[TRect.top],[TRect.right],[TRect.bottom],TRUE
    .......

    Вот такое вот творение ... Ошибся где то ?
     
  2. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.347
    да, вызывать надо не GetClientRect, а GetWindowRect.
     
  3. Voronve

    Voronve New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2006
    Сообщения:
    15
    Поменял вызов - кнопка не ездиет никуда :dntknw: ...
     
  4. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    hDlgItems - статическая переменная?
     
  5. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.347
    Ну так она и не будет ездить. :)
    Ты же спрашивал, как узнать текущие координаты кнопки. После этого надо скорректировать TRect.left и TRect.top.

    Код (Text):
    1. // получаем текущие координаты кнопки
    2. ...
    3. // Кнопка будет в правом нижнем углу.
    4. // Между кнопкой и границей окна промежуток в 7 пикселей
    5. TRect.left = DialogWidth - TRect.right - 7;
    6. TRect.top = DialogHeight - TRect.bottom - 7;
    7.  
    8. MoveWindow(hDlgItems, TRect.left, TRect.top, TRect.right, TRect.bottom, TRUE);
     
  6. Voronve

    Voronve New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2006
    Сообщения:
    15
    rmn
    Точно. Облажался :dntknw:
    Всем спасибо. Ветку можно закрывать ;)