PDA

View Full Version : 2 سوال راجع به C



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, &regs, &regs);

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, &regs, &regs);

return;

}

//################################################## #########################

void PointingDevice::Hide(void)

{

regs.x.ax= 2;

int86(MOUSE, &regs, &regs);

return;

}

//################################################## #########################

void PointingDevice::Info(void)

{

regs.x.ax= 3;

int86(MOUSE, &regs, &regs);

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, &regs, &regs);

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, &regs, &regs);

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, &regs, &regs);

return;

}

//################################################## #########################

aidinwashere
شنبه 26 شهریور 1384, 01:43 صبح
مشکلت حل شد؟