Проблема с перерисовыванием кнопки

Тема в разделе "WASM.BEGINNERS", создана пользователем monrus, 17 июл 2005.

  1. monrus

    monrus New Member

    Публикаций:
    0
    Регистрация:
    10 ноя 2004
    Сообщения:
    6
    Почему-то при нажатии на кнопку пропадают правый и нижний края бордюра кнопки.

    Где ошибка? Помогите разобраться!

    Как сделать, чтобы на ней был фокус. Знаю, что ч/з SetFocus. А где и как передавать - без понятия.

    [​IMG] 1610372119__Button.zip
     
  2. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine


    Ага:
    Код (Text):
    1. INVOKE OffsetRect, ADDR [esi].rcItem, 1, 1


    После этого RECT вылезает за пределы окна кнопки. Предлагаю сократить ширину и высоту RECT на один пиксель в самом начале процедуры.





    Добавить кнопке стиль WS_TABSTOP. Или вызывать SetFocus в обработчике WM_INITDIALOG и возвращать ноль из обработчика.
     
  3. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    monrus

    Почему-то ... пропадают ... края бордюра

    Ты так написал, можно изменить код так
    Код (Text):
    1. ...
    2. DrawItem PROC hWnd: HWND, lParam: LPARAM
    3. ...
    4.   INVOKE FillRect, [esi].hdc, ...
    5.  
    6.   dec [esi].rcItem.right    ;; ++
    7.   dec [esi].rcItem.bottom   ;; ++
    8.  
    9.   INVOKE RoundRect, [esi].hdc, ...
    10.  
    11.   .IF [esi].itemState & ODS_SELECTED
    12.  
    13. ...
    и рамка не будет пропадать, только это не выход. Почитай справку по WM_DRAWITEM и DRAWITEMSTRUCT, обрати внимание на DRAWITEMSTRUCT.itemAction и DRAWITEMSTRUCT.itemState.



    Как сделать, чтобы на ней был фокус.

    Afaik единственный элемент управления диалога всегда имеет фокус.



    PS замени код обработчика нажатия на кнопку с
    Код (Text):
    1. call ExitProcess
    на
    Код (Text):
    1. invoke EndDialog, hWnd, 0


    Между прочим ExitProcess имеет параметр, а ты не передаешь его.
     
  4. monrus

    monrus New Member

    Публикаций:
    0
    Регистрация:
    10 ноя 2004
    Сообщения:
    6
    Спасибо. А не могли бы вы показать на примере. А-то я с ItemAction и itemstate не могу разобраться.