Почему-то при нажатии на кнопку пропадают правый и нижний края бордюра кнопки. Где ошибка? Помогите разобраться! Как сделать, чтобы на ней был фокус. Знаю, что ч/з SetFocus. А где и как передавать - без понятия. 1610372119__Button.zip
Ага: Код (Text): INVOKE OffsetRect, ADDR [esi].rcItem, 1, 1 После этого RECT вылезает за пределы окна кнопки. Предлагаю сократить ширину и высоту RECT на один пиксель в самом начале процедуры. Добавить кнопке стиль WS_TABSTOP. Или вызывать SetFocus в обработчике WM_INITDIALOG и возвращать ноль из обработчика.
monrus Почему-то ... пропадают ... края бордюра Ты так написал, можно изменить код так Код (Text): ... DrawItem PROC hWnd: HWND, lParam: LPARAM ... INVOKE FillRect, [esi].hdc, ... dec [esi].rcItem.right ;; ++ dec [esi].rcItem.bottom ;; ++ INVOKE RoundRect, [esi].hdc, ... .IF [esi].itemState & ODS_SELECTED ... и рамка не будет пропадать, только это не выход. Почитай справку по WM_DRAWITEM и DRAWITEMSTRUCT, обрати внимание на DRAWITEMSTRUCT.itemAction и DRAWITEMSTRUCT.itemState. Как сделать, чтобы на ней был фокус. Afaik единственный элемент управления диалога всегда имеет фокус. PS замени код обработчика нажатия на кнопку с Код (Text): call ExitProcess на Код (Text): invoke EndDialog, hWnd, 0 Между прочим ExitProcess имеет параметр, а ты не передаешь его.