smart_slims
سه شنبه 01 شهریور 1384, 03:52 صبح
1- من در حال یادگیری زبان ++C هستم و مفهوم ( آبجکت های صنعتی )و (اتوماسیون صنعتی)
در ++C برای من غیر مفهومه
اگه یک توضیحی بدین ممنون می شوم
2- می خواستم ببینم کسی یک Source برای ++C سراغ نداره که بشه باهاش وضعیت موس را
فهمید یا تغییر داد؟
با تشکر از همه دوستان
sasan_vm
سه شنبه 01 شهریور 1384, 08:21 صبح
سلام
این کد برای حالت گرافیک طراحی شده.
// File : MOUSE.HPP
// Type : Header file for class PointingDevice
// By : sasan vm
#ifndef MOUSE_HPP
#define MOUSE_HPP
#include "dos.h"
class PointingDevice
{
private:
struct mdata {
int MouseFlag;
int MouseButton;
int MouseX;
int MouseY;
int MouseMinX;
int MouseMaxX;
int MouseMinY;
int MouseMaxY;
} MouseParams;
int MouseObjectReady;
void Init(void);
public:
PointingDevice(int X=0, int Y=0);
~PointingDevice();
int Detect(int);
mdata * Data(void);
void Show(void);
void Hide(void);
void Pos(int, int);
void Info(void);
void HLimit(int, int);
void VLimit(int, int);
union REGS regs;
};
#endif
// FILE : MOUSE.CPP
// Type : Member function for class PointingDevice
// By : sasan vm
#include "MOUSE.HPP"
const int YES= 1;
const int NO= 0;
const int FAIL= 0;
const int VGA_12H= 1; // VGA 640x480x16
const int EGA_10H= 2; // EGA 640x350x16
const int EGA_EH= 3; // EGA 640x200x16
const int MCGA_11H= 4; // MCGA 640x480x2
const int CGA_6H= 5; // CGA 640x200x2
const int HERC= 6; // Hercules 720x348x2
const int MOUSE= 0x33; // Dos interrupt number for mouse driver
//################################################## #########################
PointingDevice::PointingDevice(int X, int Y)
{
MouseParams.MouseFlag = 0;
MouseParams.MouseButton = 0;
MouseParams.MouseX = X;
MouseParams.MouseY = Y;
MouseParams.MouseMinX = 0;
MouseParams.MouseMaxX = 0;
MouseParams.MouseMinY = 0;
MouseParams.MouseMaxY = 0;
MouseObjectReady = YES;
}
//################################################## #########################
PointingDevice::~PointingDevice()
{
MouseObjectReady= NO;
}
//################################################## #########################
int PointingDevice::Detect(int GraphicsMode)
{
Init();
if (MouseParams.MouseFlag == 0) return FAIL; // if no mouse
switch (GraphicsMode)
{
case VGA_12H:
MouseParams.MouseMinX= 0;
MouseParams.MouseMaxX= 639;
MouseParams.MouseMinY= 0;
MouseParams.MouseMaxY= 479;
break;
case EGA_10H:
MouseParams.MouseMinX= 0;
MouseParams.MouseMaxX= 639;
MouseParams.MouseMinY= 0;
MouseParams.MouseMaxY= 349;
break;
case EGA_EH:
MouseParams.MouseMinX= 0;
MouseParams.MouseMaxX= 639;
MouseParams.MouseMinY= 0;
MouseParams.MouseMaxY= 199;
break;
case MCGA_11H:
MouseParams.MouseMinX= 0;
MouseParams.MouseMaxX= 639;
MouseParams.MouseMinY= 0;
MouseParams.MouseMaxY= 479;
break;
case CGA_6H:
MouseParams.MouseMinX= 0;
MouseParams.MouseMaxX= 639;
MouseParams.MouseMinY= 0;
MouseParams.MouseMaxY= 199;
break;
case HERC:
MouseParams.MouseMinX= 0;
MouseParams.MouseMaxX= 719;
MouseParams.MouseMinY= 0;
MouseParams.MouseMaxY= 347;
break;
default:
return FAIL;
}
HLimit(MouseParams.MouseMinX, MouseParams.MouseMaxX);
VLimit(MouseParams.MouseMinY, MouseParams.MouseMaxY);
Pos(MouseParams.MouseX, MouseParams.MouseY);
return YES;
}
//################################################## #########################
void PointingDevice::Init(void)
{
regs.x.ax= 0;
int86(MOUSE, ®s, ®s);
MouseParams.MouseFlag= regs.x.ax;
return;
}
//################################################## #########################
// Return a pointer to the mouse's runtime data struct
PointingDevice::mdata * PointingDevice::Data(void)
{
return &MouseParams;
}
//################################################## #########################
void PointingDevice::Show(void)
{
regs.x.ax= 1;
int86(MOUSE, ®s, ®s);
return;
}
//################################################## #########################
void PointingDevice::Hide(void)
{
regs.x.ax= 2;
int86(MOUSE, ®s, ®s);
return;
}
//################################################## #########################
void PointingDevice::Info(void)
{
regs.x.ax= 3;
int86(MOUSE, ®s, ®s);
MouseParams.MouseButton=regs.x.bx;
MouseParams.MouseX=regs.x.cx;
MouseParams.MouseY=regs.x.dx;
return;
}
//################################################## #########################
void PointingDevice::Pos(int Xpos, int Ypos)
{
MouseParams.MouseX= Xpos;
MouseParams.MouseY= Ypos;
regs.x.ax= 4;
regs.x.cx= MouseParams.MouseX;
regs.x.dx= MouseParams.MouseY;
int86(MOUSE, ®s, ®s);
return;
}
//################################################## #########################
void PointingDevice::HLimit(int Left, int Right)
{
MouseParams.MouseMinX= Left;
MouseParams.MouseMaxX= Right;
regs.x.ax= 7;
regs.x.cx= MouseParams.MouseMinX;
regs.x.dx= MouseParams.MouseMaxX;
int86(MOUSE, ®s, ®s);
return;
}
//################################################## #########################
void PointingDevice::VLimit(int Top, int Bottom)
{
MouseParams.MouseMinY= Top;
MouseParams.MouseMaxY= Bottom;
regs.x.ax= 8;
regs.x.cx= MouseParams.MouseMinY;
regs.x.dx= MouseParams.MouseMaxY;
int86(MOUSE, ®s, ®s);
return;
}
//################################################## #########################
aidinwashere
شنبه 26 شهریور 1384, 01:43 صبح
مشکلت حل شد؟
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.