Closed amber8706 closed 4 years ago
http://wiki.kolibrios.org/wiki/SysFn08/ru:
ebx = [координата по оси x]65536 + [размер по оси x] ecx = [координата по оси y]65536 + [размер по оси y]
Всё таки, там должен быть размер, а не координаты правого нижнего угла.
Та же ошибка DrawWindow. Если я вызову:
DrawWindow(50, 50, 40, 40,...)
То она рисует окно, размерами 40х40 в позиции 50х50.
Прошу прощения. На GitHub уже исправили.
Функция DrawButton, объявлена как:
procedure DrawButton(Left, Top, Right, Bottom: LongInt; BackColor, Style, ID: LongWord); stdcall;
т.е. ей по логике, нужно передавать координаты левой верхней точки и правой нижней через параметры: Left, Top, Right, Bottom. Однако, в примере используются одни и те-же координаты для кнопок, расположенных в РАЗНЫХ местах:
DrawButton(10, 20, 50, 30, COLOR_RED, 0, RED_BUTTON); DrawButton(70, 20, 50, 30, COLOR_GREEN, 0, GREEN_BUTTON);
Тут наглядно видно, что правый нижний угол имеет одинаковую координату для разных кнопок: (50, 30). НО кнопки отображаются в абсолютно разных местах. По всей видимости, здесь опечатка. Параметры Right, Bottom - должны называться: Width, Height.