Основные функции и стили ScrollBar.
WM_VSCROLL WM_HSCROLL За прорисовку ответственна программа пользователя. Основные функции: 1. Установка ранга линеек SetScrollRange Ранг линейки прокрутки – это диапазон изменения значений переменной, связанный с положением движка данных элементов управления. [Rmin;Rmax] – ранг линейки. Значение R – 32-разрядное число. Rmin<Rmax для правильной работы линейки. Операнды: 1. ID окна. 2. ID типа 3. Rmin 4. Rmax Возвращает 1. Код ошибки 2. Установка положения движка линейки SetScrollPos. Позволяет установить движок в произвольную позицию в пределах ранга линейки. Операнды: 1. Дескриптор окна (hWnd) 2. ID типа 3. Позиция 4. Резервный параметр (True) 3. Получение позиции движка GetScrollPos Основные функции и стили линеек скроллинга. Окна или дочерние окна могут быть оснащены отдельными элементами вертикального или горизонтального скроллинга. Наличие у окна этих элементов устанавливается с помощью стилей: WSUSCROLL - вертикальный скроллинг. WSHSCROLL - горизонтальный скроллинг. Сообщения создаваемые длинными элементами управления называются: WSJJSCROLL WSJJSCROLL Следует отметить, что при изменении положения движка на линейке изменяется лишь внутренняя переменная линейки прокрутки, но не изображение окна. За скроллинг и прорисовку окна ответственна пользовательская программа получающая сообщение от линейки прокрутки. Основные функции линейки прокрутки: 1. Установка ранга линеек. Выполняется с помощью функции: SetScrollRange. Ранг линейки прокрутки - это диапазон изменения значений переменной связанной с положением движка данных элементов управлении. Ранг линейки - [Rmin, Rmax], при этом значение R задаётся 32-х разрядным числом. Значение Rmin может принимать любые значения, однако для правильной работы линейки: Rmin< Rmax. В качестве операндов функции установки рангов указывается:
1. 1. Идентификатор окна: hWnd Call SetScrollRange. 1. 2. Идентификатор типа элемента: SBVERT. 1. 3. Значение Rmin: 0. 1. 4. Значение Rmax: 100. 1. 5. Функция возрастает: код ошибки. 2. Функция установки положения движка линеек SetScrollPos. Позволяет установить движок в произвольную позицию в пределах установленного ранга линейки. Операнды: Идентификатор окна. Идентификатор типа. Позиция: 20. Резервный параметр TRUE (-1). Пример: TRUE 20 SBVERT hWnd CallScollPos. Перемещение движка линейки прокрутки выполняется с помощью данной функции. Команды получения движка линейки 00 SBVERT hWnd CallScrollPos. Функция возвращает позицию линейки прокрутки. Сообщения от линейки скроллинга. Данные сообщения сопровождаются 4-мя параметрами: Дескриптор окна. Сообщения от линейки прокрутки, (const Windows) предназначенная для идентификации одного из нескольких событий возникающих на линейке. Старший параметр, который содержит в младшем полуслове тип сообщения (назначение аналогичное предыдущему параметру), а в старшем дополнительный параметр. Младший параметр: резерв. Программа обработки сообщений от линеек скроллинга как правило организуется в виде конструкции множественного выбора. В качестве ключа и который используется младшее полуслово младшего параметра. Типы событий вертикальной линейки прокрутки. SBBOTTOM - достижение крайнего нижнего положения линейки прокрутки. SBTOP - достижение движком крайнего верхнего положения SBLINEDOWN - событие одинокого нажатия на клавишу "вниз". В данной секции необходимо инкрементировать значение связанное с позицией движка. SBLINEUP - выполняется декремент значения (аналогично верхнему, но при нажатии "вверх"). SBPAGEDOWN - страница. События возникают при нажатии мышкой на поле может управлять движком и клавишей "вниз". Событие аналогично событию LINEDOWN, но для увеличения переменной линейки,
назначение больше 1. SBPEGEUP - событие нажатия мышкой на поле может управлять движком и кнопкой "вверх". SBTHUMBPOSITION - события позиционирования движка (Движок отпускается мышью). В этом случае в старшем полуслове, старшего параметра передаётся новое положение движка. Если это положение не будет установлено с помощью функции Windows, движок вернётся на прежнее место. SBTHUMBTRACK - данное событие вытекает при перемещении движка без его отпускания манипулятора мыши. Событие вызывается аналогично событию WHMOUSEMOVE. При этом каждый раз в старшем полуслове старшего параметра передаётся позиция движка, однако в этом случае изменять позицию движка с помощью функции, как правило не требуется. События горизонтальной линейки. Во многом повторяют события вертикальной линейки, кроме 4-х событий: SBLINELIFT - (аналог LINEUP). SBLINERIGHT - (аналог LINEDOWN). SBPAGELEFT - (аналог PEGEUP). SBPAGERIGHT - (анлог PAGEDOWN). Основы программирования на ассемблере: арифметические и логические действия. 4. Команды инкремента и декремента Предназначены для быстрого увелечения/уменьшения на единицу регистровых операндов. · Inc BX = add BX,1 · Dec BX = sub BX,1 Разрядность операции определяется типом операнда, который может быть 8,16,32-разрядный. 5. Команды сложения и вычитания Add позволяет выполнить сложение регистровых и других операндов. ADD DL,AH ADD DL,10 Оба операнда двухадресных команд должны иметь одинаковую разрядность. Аналогично операция вычитания SUB. 6. Умножение и деление. В ядре процессора Intel MUL перемножает 8,16-биотвые операнды, создавая при этом 16,32-разрядные произведения. Для данной инструкции требуется указать только один операнд второй операнд должен находится в аккумуляторе. Старшая часть произведения будет размещаться в регистре D, а младшая в регистре A. Пример: 5*8 MOV AL,5 MOV BH,8 MUL BH MUL – беззнаковая команда. IMUL – знаковая. В этом случае знаковый разряд операндов в процедуре умножения не участвует, а служит лишь для вычисления знака результата. DIV – беззнаковое деление. Выполняет деление 16-разрядного на 8-разрядный операнды. В результате частное записывается в регистр AL, а остаток в регистр AH. Делитель всегда регистр DL, делимое – AX.
Пример: 51/10 MOV AX,51 MOV DL,10 DIV DL ;AL = 5, AH = 1. IDIV - знаковое деление. 7. Логические операции Выполняются над операндами побитно. Логические операции выполняет процессор. AND, OR, XOR Основы программирования на ассемблере: получение кодов нажатых клавиш и вывод их на экран. Для 21-го прерывания регистр AH содержит номер подфункции, например единица – вызов функции чтения кода нажатой клавиши. О значении регистра AH должен позаботится программист. Код нажатой клавиши будет передан системой в AL. L1: MOV AH,1 INT 21H MOV DL,AL MOV AH,2 INT 21H CMP AL,13H JNZ L1 Для того чтобы распечатать введённый код на дисплее используют функцию №2. Код вводимого символа должен располагаться в регистре DL. CMP AL,13H; команда выполняет вычитание однако в его результате меняются только флаги.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|