Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> мышь в msDos 
:(
    Опции темы
lasalexx
Дата 21.6.2005, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 19.7.2004
Где: Tbilisi

Репутация: нет
Всего: 1



как можно сделать так что б мышь в Dos реагировала не на нажатие кнопки а на её отпускание?
PM MAIL WWW ICQ MSN   Вверх
chaos
Дата 21.6.2005, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



смотри команды прерывания 0х33 а именно 0х06
вот сдесь еще почитай(только мало)
http://www.hardline.ru/selfteachers/Info/P...%206/Index9.htm

Это сообщение отредактировал(а) chaos - 21.6.2005, 10:54
PM WWW   Вверх
lasalexx
Дата 21.6.2005, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 19.7.2004
Где: Tbilisi

Репутация: нет
Всего: 1



merci beaucoup
PM MAIL WWW ICQ MSN   Вверх
lasalexx
Дата 22.6.2005, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 19.7.2004
Где: Tbilisi

Репутация: нет
Всего: 1



всё сделал, занес в регистр _AX=6, мышь реагирует на отпускание, но теперь её вообще не видно на экране. нельзя ли совместить эти два эфекта?
PM MAIL WWW ICQ MSN   Вверх
chaos
Дата 23.6.2005, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



ты в каком режиме это делаешь: текстовом или графическом?

вот пример работы в текстовом режиме
Код

#include <stdio.h>
#include <conio.h>
#include <bios.h>

#define ESC 0x011b

typedef struct { int x, y, count;} M_INFO;

void ShowMouse()
{
  asm {mov ax, 1h}
  asm {int 33h}
}

void HideMouse()
{
  asm {mov ax, 2h}
  asm {int 33h}
}

//nCmd = 5, 6
//nButtonId = 0, 1, 3(left, right, middle)
M_INFO GetDownInfoMouse(int nCmd, int nButtonId)
{
  int x = 0, y = 0, c = 0;

  asm {mov ax, nCmd}
  asm {int 33h}

  asm {mov c, bx}
  asm {mov x, cx}
  asm {mov y, dx}

  M_INFO rez;
  rez.count = c;
  rez.x = x;
  rez.y = y;

  return rez;
}


int main()
{
  M_INFO inf;

  clrscr();
  ShowMouse();

  while (bioskey(1) != ESC)
  {
    inf = GetDownInfoMouse(5, 0);
    gotoxy(1,1);
    printf("Left button (press): X = %-4d  Y = %-4d  COUNT = %-4d", inf.x, inf.y, inf.count);

    inf = GetDownInfoMouse(6, 0);
    gotoxy(1,3);
    printf("Left button (unpress): X = %-4d  Y = %-4d  COUNT = %-4d", inf.x, inf.y, inf.count);
  }

  HideMouse();
}


че не понятно спрашивай
PM WWW   Вверх
lasalexx
Дата 23.6.2005, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 19.7.2004
Где: Tbilisi

Репутация: нет
Всего: 1



а в графическом?
PM MAIL WWW ICQ MSN   Вверх
chaos
Дата 24.6.2005, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



смотря в каком графическом. Если через стандартный vgaega.bgi то все тоже самое, а если нет то по моему возникают проблемы с отображением аппаратного курсора, если я не ошибаюсь то тогда придется свой курсор рисовать
PM WWW   Вверх
lasalexx
Дата 29.6.2005, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 19.7.2004
Где: Tbilisi

Репутация: нет
Всего: 1



я конечно очень извиняюсь но мне опять нужна ваша помощь. завтра нужно сдавать программу а я все никак не могу запрограмировать правую кнопку мыши.
вот есть такой код:

Код

do
{
_AX=1;
geninterrupt(0X33);
_AX=5;
geninterrupt(0X33);
i=_CX;
j=_DX;
_AX=6;
geninterrupt(0X33);
x=_CX;
y=_DX;
b=_BL;
gotoxy(1,1);
if((b==1)&&((x-i)||(y-j))){...}
}
while(!kbhit());


какое значение должно возвратить _BL что б программа реагиравала на нажатие правой кнопки?

и ещё. если кто знает где есть информация о прерываниях клавиатуры, дайте ссылку.
заранее благодарен.
PM MAIL WWW ICQ MSN   Вверх
chaos
Дата 29.6.2005, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



на сколько я помню правая кнопка это 2ой бит, а вообще добавь вывод на экран переменной b и эксперементируй!!!
PM WWW   Вверх
chaos
Дата 29.6.2005, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



и еще. чето я не доконца понимаю это условие
if((b==1)&&((x-i)||(y-j))){...}
те x и y это у тя координаты курсора при отпускании кнопки i и j при нажатии и вот что ты под этим
(x-i)||(y-j) подразумевал мне не понятно
PM WWW   Вверх
lasalexx
Дата 29.6.2005, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 19.7.2004
Где: Tbilisi

Репутация: нет
Всего: 1



(x-i)||(y-j)
означает что мышку передвинули в нажатом положении, а с _BL я эксперементировал но так ни кчему не прищёл. левая реагирует на _BL==1, а правая ни на что не реагирует, а нельзя ли в код добавить прирывания клавиатуры?
если кто знает где можно почитать об этом, напишите пожалуста?
PM MAIL WWW ICQ MSN   Вверх
chaos
Дата 2.7.2005, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



вот так попробуй(это твой пример маленько измененный)
Код

do
{
_AX=1;
geninterrupt(0X33);
_AX=5;
[b]_BX=0;//0 -  left button, 1 - right buton[/b]
geninterrupt(0X33);
i=_CX;
j=_DX;
_AX=6;
[b]_BX=0;//0 -  left button, 1 - right buton[/b]
geninterrupt(0X33);
x=_CX;
y=_DX;
b=_BL;
gotoxy(1,1);
if((b==1)&&((x-i)||(y-j))){...}
}
while(!kbhit());



кстати b=_BL;(_BX) это кол-во отпусканий или нажатий выбранной кнопки
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0688 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.