Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2011, 20:33   #1
lisenok-92
 
Регистрация: 26.04.2011
Сообщений: 5
Печаль Поясните листинг модуля

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream.h>
#include <graphics.h>
const
MB_NONE = 0,
MB_LEFT = 1,
MB_RIGHT = 2,
MB_LAR = 3,
MB_MIDDLE= 4;
struct tPoint{
int x;
int y;
};
struct tMouseState{
tPoint loc;
int but;
};
extern "C" void ResetMouse();
extern "C" void ShowMouse();
extern "C" void HideMouse();
extern "C" struct tMouseState GetMouseState( void);
extern "C" void MoveMouseCursor( int x, int y);
extern "C" void SetMouseVert( int max, int min);
extern "C" void SetMouseHorz( int max, int min);
void ResetMouse()
{
asm{
xor ax, ax
int 33h
}
}
void ShowMouse()
{
asm{
mov ax, 1
int 33h
}
}
void HideMouse()
{
asm{
mov ax, 2
int 33h
}
}
struct tMouseState GetMouseState( void)
{
struct REGPACK reg;
struct tMouseState state;
reg.r_ax=3;
intr(0x33, &reg);
state.loc.x=reg.r_cx;
state.loc.y=reg.r_dx;
state.but=reg.r_bx;
return(state);
}
void MoveMouseCursor( int x, int y)
{
asm{
mov ax, 4
mov cx, x
mov dx, y
int 33h
}
}
void SetMouseVert( int max, int min)
{
asm{
mov ax, 8
mov cx, min
mov dx, max
int 33h
}
}
void SetMouseHorz( int max, int min)
{
asm{
mov ax, 7
mov cx, min
mov dx, max
int 33h
}
}
lisenok-92 вне форума Ответить с цитированием
Старый 26.04.2011, 22:20   #2
j2ko
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 25
По умолчанию

Код:
#include <stdio.h>
 #include <conio.h>
 #include <stdlib.h>
 #include <iostream.h>
 #include <graphics.h>
 const
 MB_NONE = 0,
 MB_LEFT = 1,
 MB_RIGHT = 2,
 MB_LAR = 3,
 MB_MIDDLE= 4;
 struct tPoint{
 int x;
 int y;
 };
 struct tMouseState{
 tPoint loc;
 int but;
 };
 extern "C" void ResetMouse();
 extern "C" void ShowMouse();
 extern "C" void HideMouse();
 extern "C" struct tMouseState GetMouseState( void);
 extern "C" void MoveMouseCursor( int x, int y);
 extern "C" void SetMouseVert( int max, int min);
 extern "C" void SetMouseHorz( int max, int min);
 void ResetMouse()
 {
 asm{
 xor ax, ax    // онуляем регистр ax 
 int 33h        // визиваем 33 преривание (предназначение которого управление  
                  // мишью)
                 // как параметр приривание берьот ax , в даном случае ето будет 0
                 // што означает сброс настроек миши
 }
 }
 void ShowMouse()
 {
 asm{
 mov ax, 1   // для того штоб миш била видимой 
 int 33h       // установим ax в 1 и виполним преривание
 }
 }
 void HideMouse()
 {
 asm{
 mov ax, 2   // для того штоб зделать миш (тоесть курсор) невидимой
 int 33h      // передаем  2 и виполним приривение
 }
 }
 struct tMouseState GetMouseState( void)
 {
 struct REGPACK reg;             // REGPACK  ето структура регистров
                                       
                                        
 struct tMouseState state;
 reg.r_ax=3;                        // установим ax в 3 
 intr(0x33, &reg);                // ета функция делает следуйщее
                                        //устанавляем регистри в значение структури reg
                                        // виполняет преривание (у нас 33) потом 
                                       // копирует новие значение регистров после  
                                       // виполнение преривание назад в reg 
                                       
 state.loc.x=reg.r_cx;         // преривание 33 с параметром 3 
 state.loc.y=reg.r_dx;         // устанавлевает текущие координати 
 state.but=reg.r_bx;           // состояние кнопок в регистри cx,dx,bx
 return(state);                  // ми их копируем в структуру tMouseState 
                                     // и возвращаем ее из функции
 }
 void MoveMouseCursor( int x, int y)
 {
 asm{
 mov ax, 4                      // параметр 4 для преривание устанавлевает 
 mov cx, x                     // координати миши
 mov dx, y                     // х оно берьот из регистра сх
 int 33h                        // у из dx 
 }
 }
 void SetMouseVert( int max, int min)
 {
 asm{
 mov ax, 8               // параметр 8 для 33 преривание 
 mov cx, min            // устанавливает минимальние и максимально возможние 
 mov dx, max           // значение координат по вертикали, ограничеваеса
 int 33h                  // движение курсора по вертикали в пределе етих значений
 }
 }
 void SetMouseHorz( int max, int min)
 {
 asm{
 mov ax, 7             // аналогично предвидущей функци 
 mov cx, min          // только ограничеваетса горизонтальное передвижение
 mov dx, max
 int 33h
 }
 }
j2ko вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Cамый краткий листинг - самый подробный листинг. katia2011 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 13.04.2011 19:10
вставить листинг в делфи sssnake13 Помощь студентам 1 04.03.2010 14:50
посмотрите листинг mutobor Помощь студентам 1 11.05.2009 18:32
Dev C++ и асамблерный листинг ANTI Общие вопросы C/C++ 1 17.03.2008 00:14