中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: c语言开发鼠标驱动问题 上一主题 | 下一主题
yueluck
初级用户





积分 32
发帖 14
注册 2007-6-14
状态 离线
『楼 主』:  c语言开发鼠标驱动问题

问题在于:1鼠标留下的痕迹不能消除2.鼠标范围.我真的不懂,谢谢好心人.
/* Note:Your choice is C IDE */
#include "stdio.h"
#include"graphics.h"
#include<dos.h>  
#define   ture   1   
#define   false   0   
int   mouse_installed=false;
char wen16K[]={
/* 以下是 '温' 的 16点阵楷体_GB2312 字模,32 byte */
  0x00,0x00,0x00,0xF0,0x27,0x10,0x14,0xD0,
  0x03,0x20,0x82,0x60,0x41,0x80,0x00,0x30,
  0x17,0xD0,0x25,0x50,0x25,0x50,0x45,0xFC,
  0x5F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
char du16K[]={
/* 以下是 '度' 的 16点阵楷体_GB2312 字模,32 byte */
  0x01,0x00,0x00,0x80,0x00,0xF0,0x1F,0x40,
  0x12,0x70,0x17,0xC0,0x12,0x40,0x13,0x80,
  0x10,0xC0,0x27,0x40,0x22,0x40,0x41,0x80,
  0x42,0x60,0x9C,0x3E,0x00,0x00,0x00,0x00,
};
void drawmat(char *mat,int matsize,int x,int y,int color);
int   InitMouse(void);
  int   ShowMouse(void);
  int   HideMouse(void);
  int   GetMouseXY(int   *x,int   *y);
  int   SetMouseXY(int   x,int   y);
  int   GetPressInfo(int   button);
  int   GetReleaseInfo(int   button);
  int   SetXRange(int   min,int   max);
  int   SetYRange(int   min,int   max);
main()
{
  int g=DETECT,m;char *chara,x,y,a=0,b=0,mouse_buttons;
  initgraph(&g,&m,"");setviewport(0,0,639,479,0);
  mouse_buttons=InitMouse();
  if(mouse_installed==false)
  {
  printf("Mouse   NOT   installed!\n");
  printf("Program   finished!\n");
  exit(-1);
  }
  /*ShowMouse();*/
  setwritemode(0);
  ellipse(120,120,0,360,30,20);setcolor(1);
  ellipse(120,120,0,360,29,19);  setfillstyle(1,1);
  fillellipse(120,120,28,18);drawmat(wen16K,16,102,115,15);drawmat(du16K,16,118,115,15);
  setcolor(4);settextstyle(0,0,2);
  sprintf(chara,"%c",24);
  outtextxy(136,115,chara);circle(a,b,3);
  while(!kbhit())
  {
   GetMouseXY(&x,&y);
   if(a!=x&&b!=y){setcolor(0);
   circle(a,b,3);}setcolor(15);
   if(x<0)x=0;
   if(y<0)y=0;
   if(x>639)x=639;
   if(y>479)y=479;
  circle(x,y,3);
  a=x;b=y;
  if(GetPressInfo(0)==1)
  {
   }
  if(GetReleaseInfo(0)==1)
  {
    }
  if(GetPressInfo(mouse_buttons-1)==1)
  {
   }
  if(GetReleaseInfo(mouse_buttons-1)==1)
  {
    }
  gotoxy(40,3);
  printf("Mouse   X:%-d",x);
  gotoxy(40,4);
  printf("Mouse   Y:%-d",y);
  }

}


void drawmat(char *mat,int matsize,int x,int y,int color)
/*依次:字模指针、点阵大小、起始坐标(x,y)、颜色*/
{int i,j,k,n;
n=(matsize-1)/8+1;
for(j=0;j<matsize;j++)
  for(i=0;i<n;i++)
   for(k=0;k<8;k++)
    if(mat[j*n+i]&(0x80>>k))  /*测试为1的位则显示*/
     putpixel(x+i*8+k,y+j,color);
}

int  InitMouse(void)
  {
  union   REGS   r;
  r.x.ax=0;
  int86(0x33,&r,&r);
  if(r.x.ax==0xffff)
  mouse_installed=ture;
  else
  mouse_installed=false;
  return(r.x.bx);
  }
  int   ShowMouse(void)
  {
  union   REGS   r;
  if(mouse_installed==false)
  return   (-1);
  r.x.ax=0x0001;
  int86(0x33,&r,&r);
  return(0);
  }
  int   HideMouse(void)
  {
  union   REGS   r;
  if(mouse_installed==false)
  return   (-1);
  r.x.ax=0x0002;
  int86(0x33,&r,&r);
  return(0);
  }   
  int   GetMouseXY(int   *x,int   *y)   
  {   
  union   REGS   r;   
  if(mouse_installed==false)   
  return   (-1);   
  r.x.ax=0x0003;   
  int86(0x33,&r,&r);   
  *x=r.x.cx;   
  *y=r.x.dx;   
  return(0);   
  }   
  int   SetMouseXY(int   x,int   y)   
  {   
  union   REGS   r;   
  if(mouse_installed==false)   
  return   (-1);   
  r.x.ax=0x0004;   
  r.x.cx=x;   
  r.x.dx=y;   
  int86(0x33,&r,&r);   
  return(0);   
  }   
  int   GetPressInfo(int   button)   
  {   
  union   REGS   r;   
  if(mouse_installed==false)   
  return   (-1);   
  r.x.ax=0x0005;   
  r.x.bx=button;   
  int86(0x33,&r,&r);   
  return(r.x.bx);   
  }   
  int   GetReleaseInfo(int   button)   
  {   
  union   REGS   r;   
  if(mouse_installed==false)   
  return   (-1);   
  r.x.ax=0x0006;   
  r.x.bx=button;   
  int86(0x33,&r,&r);   
  return(r.x.bx);   
  }   
  int   SetXRange(int   min,int   max)   
  {   
  union   REGS   r;   
  if(mouse_installed==false)   
  return   (-1);   
  r.x.ax=0x0007;   
  r.x.cx=min;   
  r.x.dx=max;   
  int86(0x33,&r,&r);   
  return(0);   
  }   
  int   SetYRange(int   min,int   max)   
  {   
  union   REGS   r;   
  if(mouse_installed==false)   
  return   (-1);   
  r.x.ax=0x0008;   
  r.x.cx=min;   
  r.x.dx=max;   
  int86(0x33,&r,&r);   
  return(0);   
  }   


2007-6-14 16:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
nilauh
新手上路





积分 6
发帖 2
注册 2007-5-14
状态 离线
『第 2 楼』:  你应该这么做

判断鼠标位置有改变后
1:在鼠标现在的位置输出保存的图形
2:把鼠标要移动的下一个位置一定范围内的图形保存下来
3:在新位置画鼠标
4:新坐标代替旧坐标
ps:程序初始化就要鼠标现在的位置的图形再画鼠标

2007-6-14 21:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





积分 668
发帖 295
注册 2005-7-26
来自 广东深圳
状态 离线
『第 3 楼』:  

将鼠标关闭显示后,才能调用画图函数,画完后,再来恢复鼠标的显示。

2007-6-14 21:32
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
yueluck
初级用户





积分 32
发帖 14
注册 2007-6-14
状态 离线
『第 4 楼』:  能写给我吗?

我的鼠标是个圆形.我用imagesize,getimage,putimage  但是没效果,而且鼠标只是在左上角很小的范围内活动.
谢谢回复.

2007-6-15 09:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
nilauh
新手上路





积分 6
发帖 2
注册 2007-5-14
状态 离线
『第 5 楼』:  呵呵 你参考一下我的程序有点大

/*main.h*/
#include <dos.h>
#include <bios.h>
#include <malloc.h>
#include <stdlib.h>
#include <stdio.h>
#include <graphics.h>

#define BkColor LIGHTBLUE
#define sysbutton_width 14
#define sysbutton_height 12
#define linewidth 1
#define sysmargin 2
#define sysbutton_Interval 3
#define sysbutton_MIN_LM 4
#define sysbutton_MIN_RM 4
#define sysbutton_MIN_BM 2
#define sysbutton_CLOSE_LM 4
#define sysbutton_CLOSE_RM 3
#define sysbutton_CLOSE_BM 3
#define sysbutton_CLOSE_TM 3
#define syswindowboderWidth 7
#define syswindowboderheight 6
#define syswindowtopboder 4
#define syswindowleftboder 4
#define syswindowrightboder 3
#define syswindowbottomboder 2
#define CapWidth 300
#define CapHeight 15
#define SysMinButtonLM        (sysmargin+sysbutton_width*2+linewidth+sysbutton_Interval)
#define SysCloseButtonLM (sysmargin+sysbutton_width)
#define SysBorderWidth 3
#define SysMenuMargin 5
#define SysMainMenuWidth 36
#define SysMainMenuHeight 14
int WindowHeight= 50;
int WindowWidth=100;
#define initgraph() \
{\
int gdriver=DETECT, gmode;\
unsigned int capsize;\
int i, ht;  \
registerbgidriver(EGAVGA_driver);\
initgraph(&gdriver, &gmode, "");\
setbkcolor(BkColor);\
}
#define midx ((getmaxx()/2))
#define midy ((getmaxy()/2))


#define MouseWidth 13
#define MouseHeight 22

#define draw_mouse(x,y){\
putpixel(x,y,DARKGRAY);\
putpixel(x,y+1,DARKGRAY);\
putpixel(x+1,y+1,DARKGRAY);\
putpixel(x,y+2,DARKGRAY);\
putpixel(x+1,y+2,WHITE);\
putpixel(x+2,y+2,DARKGRAY);\
putpixel(x,y+3,DARKGRAY);\
putpixel(x+1,y+3,WHITE);\
putpixel(x+2,y+3,WHITE);\
putpixel(x+3,y+3,DARKGRAY);\
putpixel(x,y+4,DARKGRAY);\
putpixel(x+1,y+4,WHITE);\
putpixel(x+2,y+4,WHITE);\
putpixel(x+3,y+4,WHITE);\
putpixel(x+4,y+4,DARKGRAY);\
putpixel(x,y+5,DARKGRAY);\
putpixel(x+1,y+5,WHITE);\
putpixel(x+2,y+5,WHITE);\
putpixel(x+3,y+5,WHITE);\
putpixel(x+4,y+5,WHITE);\
putpixel(x+5,y+5,DARKGRAY);\
putpixel(x,y+6,DARKGRAY);\
putpixel(x+1,y+6,WHITE);\
putpixel(x+2,y+6,WHITE);\
putpixel(x+3,y+6,WHITE);\
putpixel(x+4,y+6,WHITE);\
putpixel(x+5,y+6,WHITE);\
putpixel(x+6,y+6,DARKGRAY);\
putpixel(x,y+7,DARKGRAY);\
putpixel(x+1,y+7,WHITE);\
putpixel(x+2,y+7,WHITE);\
putpixel(x+3,y+7,WHITE);\
putpixel(x+4,y+7,WHITE);\
putpixel(x+5,y+7,WHITE);\
putpixel(x+6,y+7,WHITE);\
putpixel(x+7,y+7,DARKGRAY);\
putpixel(x,y+8,DARKGRAY);\
putpixel(x+1,y+8,WHITE);\
putpixel(x+2,y+8,WHITE);\
putpixel(x+3,y+8,WHITE);\
putpixel(x+4,y+8,WHITE);\
putpixel(x+5,y+8,WHITE);\
putpixel(x+6,y+8,WHITE);\
putpixel(x+7,y+8,WHITE);\
putpixel(x+8,y+8,DARKGRAY);\
putpixel(x,y+9,DARKGRAY);\
putpixel(x+1,y+9,WHITE);\
putpixel(x+2,y+9,WHITE);\
putpixel(x+3,y+9,WHITE);\
putpixel(x+4,y+9,WHITE);\
putpixel(x+5,y+9,WHITE);\
putpixel(x+6,y+9,WHITE);\
putpixel(x+7,y+9,WHITE);\
putpixel(x+8,y+9,WHITE);\
putpixel(x+9,y+9,DARKGRAY);\
putpixel(x,y+10,DARKGRAY);\
putpixel(x+1,y+10,WHITE);\
putpixel(x+2,y+10,WHITE);\
putpixel(x+3,y+10,WHITE);\
putpixel(x+4,y+10,WHITE);\
putpixel(x+5,y+10,WHITE);\
putpixel(x+6,y+10,WHITE);\
putpixel(x+7,y+10,WHITE);\
putpixel(x+8,y+10,WHITE);\
putpixel(x+9,y+10,WHITE);\
putpixel(x+10,y+10,DARKGRAY);\
putpixel(x,y+11,DARKGRAY);\
putpixel(x+1,y+11,WHITE);\
putpixel(x+2,y+11,WHITE);\
putpixel(x+3,y+11,WHITE);\
putpixel(x+4,y+11,WHITE);\
putpixel(x+5,y+11,WHITE);\
putpixel(x+6,y+11,WHITE);\
putpixel(x+7,y+11,DARKGRAY);\
putpixel(x+8,y+11,DARKGRAY);\
putpixel(x+9,y+11,DARKGRAY);\
putpixel(x+10,y+11,DARKGRAY);\
putpixel(x+11,y+11,DARKGRAY);\
putpixel(x,y+12,DARKGRAY);\
putpixel(x+1,y+12,WHITE);\
putpixel(x+2,y+12,WHITE);\
putpixel(x+3,y+12,WHITE);\
putpixel(x+4,y+12,DARKGRAY);\
putpixel(x+5,y+12,WHITE);\
putpixel(x+6,y+12,WHITE);\
putpixel(x+7,y+12,DARKGRAY);\
putpixel(x,y+13,DARKGRAY);\
putpixel(x+1,y+13,WHITE);\
putpixel(x+2,y+13,WHITE);\
putpixel(x+3,y+13,DARKGRAY);\
putpixel(x+4,y+13,DARKGRAY);\
putpixel(x+5,y+13,WHITE);\
putpixel(x+6,y+13,WHITE);\
putpixel(x+7,y+13,DARKGRAY);\
putpixel(x,y+14,DARKGRAY);\
putpixel(x+1,y+14,WHITE);\
putpixel(x+2,y+14,DARKGRAY);\
putpixel(x+5,y+14,DARKGRAY);\
putpixel(x+6,y+14,WHITE);\
putpixel(x+7,y+14,WHITE);\
putpixel(x+8,y+14,DARKGRAY);\
putpixel(x,y+15,DARKGRAY);\
putpixel(x+1,y+15,DARKGRAY);\
putpixel(x+5,y+15,DARKGRAY);\
putpixel(x+6,y+15,WHITE);\
putpixel(x+7,y+15,WHITE);\
putpixel(x+8,y+15,DARKGRAY);\
putpixel(x,y+16,DARKGRAY);\
putpixel(x+6,y+16,DARKGRAY);\
putpixel(x+7,y+16,WHITE);\
putpixel(x+8,y+16,WHITE);\
putpixel(x+9,y+16,DARKGRAY);\
putpixel(x+6,y+17,DARKGRAY);\
putpixel(x+7,y+17,WHITE);\
putpixel(x+8,y+17,WHITE);\
putpixel(x+9,y+17,DARKGRAY);\
putpixel(x+7,y+18,DARKGRAY);\
putpixel(x+8,y+18,WHITE);\
putpixel(x+9,y+18,WHITE);\
putpixel(x+10,y+18,DARKGRAY);\
putpixel(x+8,y+19,DARKGRAY);\
putpixel(x+9,y+19,DARKGRAY);\
}


#define MSMOVE 1;
#define MSLButtonD 2;
#define MSLButtonU 3;
#define MSRButtonD 4;
#define MSRButtonU 5;
#define MSCloseWindow 15;
int exitwindow=0;
int capleft;
int captop;
char *caption="this is my first dosgui";
void *p_wd;
char psize[80];
static  int x,y,z;
int Event[256];
int EventWP=0,EventRP=0;
int mousebusy;
int key;
int test=0;
int HitCaption=0;
void far *mouserect;
int        timer180mscnt=0;
int        mousemovecnt=0;
unsigned shape[]={
        0,0,0,0,0,0,0,0,
        0,0,0,0,0,0,0,0,
        0x0000,
        0x0000,
        0x0000,
        0x0000,
        0x0000,
        0x0000,
        0x1000,
        0x13c0,
        0x3ff0,
        0x7ff8,
        0xfff8,
        0xfff8,
        0x0824,
        0x0822,
        0x1ce2,
        0x0000,
};
       
struct  time t,t_old;
struct mshandler
{
  unsigned char mask;                        /* event mask   */
  unsigned segment, offset;                /* address of event handler*/
}oldHandler;
struct mouse
{
        int a,a_old;
        int b,b_old;
        int sta,sta_old;
};
struct button
{
        int x,y,width,height;
        unsigned char state;
        unsigned char HitBt;
};
struct Rect
{
        int left,right,top,bottom;
};
struct Point
{
        int x,y;
};
struct caption
{
        struct Rect rt;
        struct Rect box1;
        struct Rect box2;
        unsigned char HitBt;
        char text[20];
       
};
struct submenu
{
        struct        Rect        itemrt[5];
        char itemtext[5][20];        /*每个5个选项*/
        int        itemnum;
};
struct menu
{
        struct Rect menurt[2];
        struct submenu sm[2];
        char        menutext[2][10];
        int        menunum;
        unsigned char mouseover[2];
        int        state;
       
}menu1;

struct window
{
        int left,top,width,height;
        struct Rect wrect;
        struct caption cap;
        struct menu mainmenu;
        int        mouseonmmenu_i;
       
};
#define EventExit() __emit__(0x5D,        /* pop bp */ \
                             0x5F,        /* pop di */ \
                             0x5E,        /* pop si */ \
                             0x1F,        /* pop ds */ \
                             0x07,        /* pop es */ \
                             0x5A,        /* pop dx */ \
                             0x59,        /* pop cx */ \
                             0x5B,        /* pop bx */ \
                             0x58,        /* pop ax */ \
                             0xCB);        /* retf   */

struct mouse ms={0};
struct button sysminbt={0};
struct button sysclosebt={0};
void mouseevhandler();
void interrupt far (*oldInterrupt_1C)();
void interrupt far (*oldInterruptms_1C)();
void interrupt far Timer();
void far mousehandler();
void ClearOldHandler(void);
void mouse_show(void);
void initmouse();
void getmouse(int *x,int *y,int *key);
void constructmouse();

void initpara();
int Windowbdpixel[640*2+1024*2];
int        MouseRelCapX,MouseRelCapY;
void RestoreOldWindowbd(int xa,int xb,struct window wd);
void SaveNewWindowbd(int xa,int xb,struct window wd);
void PutNewWindowbd(int xa,int xb,struct window wd);
unsigned char MouseInPaintCap(int x,int y,int cppleft,int cpptop);
unsigned char MouseInMinButton(int x,int y,int cppleft,int cpptop);
unsigned char MouseInCloseButton(int x,int y,int cppleft,int cpptop);
void drawboder(struct window wd);
void drawpurecap(struct caption cp,char *caption);
void drawminbox(struct Rect btrt,unsigned char state);
void drawclosebox(struct Rect btrt,unsigned char state);
void drawcaption(struct caption cp);
void drawpurebutton(struct Rect btrt,unsigned char state);
void drawclient(int clileft,int clitop,int cliright,int clibottom);
void drawmenu(struct menu mn);
void drawwindow(struct window *wd);
unsigned char MouseInRect(int x,int y,struct Rect rt);
void GetCapRect(struct window *pwd);
void GetCapBox1Rect(struct window *pwd);
void GetCapBox2Rect(struct window *pwd);
void GetMenuRect(struct window *pwd);
void drawwindow(struct window *wd);
void windowparainit(struct window *wd);
void GetMainMenuItemRect(struct menu mn,int item,struct Rect *Menurt);
void DrawMouseonMenu(struct menu mn,int i,unsigned char state);
void DrawMouseDownMenu(struct menu mn,int i);

/*main.c*/
#include "main.h"


struct window dlgwindow;
int main()
{      

initgraph();
initpara();
  
dlgwindow.left=midx-150;
dlgwindow.top=midy-200;
dlgwindow.width=200;
dlgwindow.height=200;
  drawwindow(&dlgwindow);
  initmouse();
  

       
        while(!exitwindow)
        {
               
                switch (Event[EventRP])
                {
                case 0:
                       
                        break;
                case 1:/*MSMOVE*/
                        {
                                if (mousebusy==0)
                                {
                       
                        }
                        break;
                       
                        }
                case 2:/*MSLButtonD*/
                        {
                       
                        EventRP++;
                        break;       
                        }
                case 3:/*MSLButtonU*/
                        {
                       
                        EventRP++;
                        break;               
                        }
                case 4:
                        {
                               
                        }
                if (EventRP==256) EventRP=0;
                }
        }
       
       
        constructmouse();
        closegraph();
         
          return 0;
         
  
  
     }
void ClearOldHandler(void)
{
struct REGPACK regp={0};
        regp.r_ax=0x14;
        intr(0x33,&regp);
        oldHandler.mask    = regp.r_cx;                /* save the old event handler*/
  oldHandler.offset  = regp.r_dx;
  oldHandler.segment = regp.r_es;
       
}
void mouseevhandler()
{
}
void far mousehandler()
{
        int i,j,k,l;
       
        mousebusy=1;
        i=_AX;
        j=_BX;
        k=_CX;
        l=_DX;
       
          ms.a=k;
          ms.b=l;
          mousebusy=0;

}
void interrupt far Timer()
{
       
  union REGS regs;       
char *mouseloc;
gettime(&t);
   if ((t.ti_hour!=t_old.ti_hour)||(t.ti_min!=t_old.ti_min)||(t.ti_sec!=t_old.ti_sec))
           {
        char tm[40];
               
          
           setfillstyle(SOLID_FILL,BkColor);
        bar(300,350,450,380);
        sprintf(tm,"currtime is %2d:%02d:%02d.%02d",t.ti_hour, t.ti_min, t.ti_sec);
        tm[strlen(tm)-1]='\0';
        setcolor(WHITE);
           moveto(250,350);
        outtext(tm);
        t_old.ti_hour=t.ti_hour;
        t_old.ti_min=t.ti_min;
        t_old.ti_sec=t.ti_sec;
      
        }
  
       
                         
  getmouse(&ms.a,&ms.b,&ms.sta);
  {
         
  

if(ms.a<0) ms.a=0; /*保证鼠标左边不出界*/
if(ms.b<0) ms.b=0; /*保证上面不出界*/
if(ms.a>getmaxx()-MouseWidth-1) ms.a=getmaxx()-MouseWidth-1; /*保证右边不出界*/
if(ms.b>getmaxy()-MouseHeight-1) ms.b=getmaxy()-MouseHeight-1; /*保证下边不出界*/
       
if (ms.a!=ms.a_old||ms.b!=ms.b_old){/*mouse move*/
         /*当鼠标移动时*/
                 int i,j,b_bmin,b_bclose,b_onmenu;
                         char *mouseloc;
       
         
sprintf(mouseloc,"x:%d  y:%d",ms.a,ms.b);
                        setfillstyle(SOLID_FILL,BkColor);
                        bar(10,350,120,380);
                        moveto(10,350);
                          outtext(mouseloc);
         
                         j=dlgwindow.mainmenu.menunum;
                        sprintf(mouseloc,"x:%d  y:%d",ms.a,ms.b);
                        setfillstyle(SOLID_FILL,BkColor);
                        bar(10,350,120,380);
                        moveto(10,350);
                        setcolor(WHITE);
                          outtext(mouseloc);
                        putimage(ms.a_old,ms.b_old,mouserect,COPY_PUT); /*在a_old,b_old输出图形,用来擦掉原来的鼠标*/
                        b_bmin=MouseInRect(ms.a_old,ms.b_old,dlgwindow.cap.box1);
                       
                        b_bclose=MouseInRect(ms.a_old,ms.b_old,dlgwindow.cap.box2);
                        if (HitCaption==0&&dlgwindow.mainmenu.state==0)
                                {
                                       
                        for (i=0;i<j;i++)
                        {
                                if (MouseInRect(ms.a_old,ms.b_old,dlgwindow.mainmenu.menurt[i]))
                                {
                                       
                                        if (dlgwindow.mainmenu.mouseover[i]==0)
                                                {
                                        DrawMouseonMenu(dlgwindow.mainmenu,i,1);
                                        dlgwindow.mainmenu.mouseover[i]=1;
                                       
                                        }
                                        dlgwindow.mouseonmmenu_i=i+1;
                                }
                                else
                                if (dlgwindow.mainmenu.mouseover[i]==1)
                                {
                                        DrawMouseonMenu(dlgwindow.mainmenu,i,0);
                                        dlgwindow.mainmenu.mouseover[i]=0;
                                        dlgwindow.mouseonmmenu_i=0;
                                }
                        }
                }
                        if (sysminbt.HitBt==1)
                        {
                                drawminbox(dlgwindow.cap.box1,b_bmin);
                        }
                        if (sysclosebt.HitBt==1)
                        {
                                drawclosebox(dlgwindow.cap.box2,b_bclose);
                        }
                        if (HitCaption==1)
                        {
                        RestoreOldWindowbd(ms.a_old,ms.b_old,dlgwindow);
                        SaveNewWindowbd(ms.a,ms.b,dlgwindow);
                        PutNewWindowbd(ms.a,ms.b,dlgwindow);
                         }


                        getimage(ms.a,ms.b,ms.a+MouseWidth,ms.b+MouseHeight,mouserect); /*这条语句是将目前鼠标所在位置的图形存贮到mouserect里面试着看着有无这条语句的区别*/

                        draw_mouse(ms.a,ms.b);


                         ms.a_old=ms.a;ms.b_old=ms.b;
                       
         
                       
}

if (ms.sta!=ms.sta_old)
        {
                switch (ms.sta_old)
                {
                        case 0:
                                {
                                        switch (ms.sta)
                                        {
                                        case 1:/*leftmousedown*/
                                                {
                                                        struct Rect rt;int i;
                                                        Event[EventWP++]=MSLButtonD;
                                                       
                        rt=dlgwindow.cap.rt;
                        rt.right=rt.right-sysbutton_width*2-4;
                        if (MouseInRect(ms.a,ms.b,dlgwindow.cap.box1)==1)
                        {
                        drawminbox(dlgwindow.cap.box1,1);
                        sysminbt.HitBt=1;
                        }
                       
                        else if (MouseInRect(ms.a,ms.b,dlgwindow.cap.box2)==1)
                        {
                        drawclosebox(dlgwindow.cap.box2,1);
                        sysclosebt.HitBt=1;
                        }
                       
                       
                        if (MouseInRect(ms.a,ms.b,rt)==1)
                        {
                               
                        /*drawwindow(&dlgwindow);*/
                        HitCaption=1;
                        MouseRelCapX=ms.a-dlgwindow.left;
                        MouseRelCapY=ms.b-dlgwindow.top;
                        putimage(ms.a_old,ms.b_old,mouserect,COPY_PUT); /*在a_old,b_old输出图形,用来擦掉原来的鼠标*/
                       
                        p_wd=malloc(imagesize(dlgwindow.left, dlgwindow.top, dlgwindow.left+dlgwindow.width, dlgwindow.top+ dlgwindow.height));
                         getimage(dlgwindow.left, dlgwindow.top, dlgwindow.left+dlgwindow.width, dlgwindow.top+ dlgwindow.height,p_wd);
                        
                        SaveNewWindowbd(ms.a,ms.b,dlgwindow);
                        }
                        if (dlgwindow.mouseonmmenu_i!=0)
                                {
                                        putimage(ms.a_old,ms.b_old,mouserect,COPY_PUT); /*在a_old,b_old输出图形,用来擦掉原来的鼠标*/
                                        DrawMouseDownMenu(dlgwindow.mainmenu,dlgwindow.mouseonmmenu_i-1);
                                        getimage(ms.a,ms.b,ms.a+MouseWidth,ms.b+MouseHeight,mouserect); /*这条语句是将目前鼠标所在位置的图形存贮到mouserect里面试着看着有无这条语句的区别*/
                                        dlgwindow.mainmenu.state=1;/*mouse down*/
                                }
                        else
                       
                       
                        draw_mouse(ms.a,ms.b);
                                                       
                                                        break;}
                                        case 2:
                                                {Event[EventWP++]=MSRButtonD;break;}
                                        }
                                }
                        case 1:/*leftmouseup*/
                                {
                                       
                                        if (ms.sta==0)
                                        {Event[EventWP++]=MSLButtonU;
                                                putimage(ms.a_old,ms.b_old,mouserect,COPY_PUT); /*在a_old,b_old输出图形,用来擦掉原来的鼠标*/
                        
                        if (MouseInRect(ms.a,ms.b,dlgwindow.cap.box1)==1)
                        {
                        if (sysminbt.HitBt==1)
                                drawminbox(dlgwindow.cap.box1,0);
                       
                        }


                        else if (MouseInRect(ms.a,ms.b,dlgwindow.cap.box2)==1)
                        {
                        if (sysclosebt.HitBt==1)
                                {       
                                drawclosebox(dlgwindow.cap.box2,0);
                       
                                exitwindow=1;
                                }
                        }
                       
                        if (HitCaption==1)
                        {
                        HitCaption=0;
                       
                        /*putimage(ms.a_old,ms.b_old,mouserect,COPY_PUT); */
                        /*在a_old,b_old输出图形,用来擦掉原来的鼠标*/
                        
                         /*putimage(dlgwindow.left, dlgwindow.top,p_wd,COPY_PUT);*/
                         setfillstyle(SOLID_FILL,BkColor);
                         bar(dlgwindow.left, dlgwindow.top, dlgwindow.left+dlgwindow.width,dlgwindow.top+dlgwindow.height);
                         dlgwindow.left=ms.a-MouseRelCapX;
                         dlgwindow.top=ms.b-MouseRelCapY;
                         /*drawwindow(&dlgwindow);*/
                         GetCapRect(&dlgwindow);
                  GetCapBox1Rect(&dlgwindow);
                        GetCapBox2Rect(&dlgwindow);
                        GetMenuRect(&dlgwindow);
                         putimage(ms.a-MouseRelCapX,ms.b-MouseRelCapY,p_wd,COPY_PUT);
                        
                        
                         free(p_wd);
                        
                        }
                        getimage(ms.a,ms.b,ms.a+MouseWidth,ms.b+MouseHeight,mouserect); /*第一次将图形(一个空矩形)存入到内存中,内存中存入的是一个空矩形*/
                        draw_mouse(ms.a,ms.b);
                        sysminbt.HitBt=0;
                        sysclosebt.HitBt=0;
                }
                                        break;
                                }
                        case 2:
                                {
                                        if (ms.sta==0)
                                        Event[EventWP++]=MSRButtonU;
                                        break;       
                                }
                }
         ms.sta_old=ms.sta;
         if (EventWP==255) EventWP=0;
         Event[EventWP+1]=0;
        }
}
(*oldInterrupt_1C)();
}
void mouse_show(void)
{
struct REGPACK regp={0},regp1={0};
  union REGS inreg, outreg;
    struct SREGS s;
   


regp.r_ax=0x00;   
        intr(0x33,&regp);  
        /*
        inreg.x.ax = 0x9;
    inreg.x.bx = 0;
    inreg.x.cx = 11;
    inreg.x.dx = (unsigned)shape;
    segread(&s);
   s.es = s.ds;
    int86x(0x33,&inreg,&outreg,&s);
    */
        regp.r_ax=01;
        intr(0x33,&regp);
       
         
   
       

/*
         regp.r_es = FP_SEG(mousehandler);;
  regp.r_dx = FP_OFF(mousehandler);;
regp.r_cx = 0x1;
regp.r_ax = 0x14;
  intr(0x33,&regp);
  
        /*
        regp.r_ax=0x1c;
        regp.r_bx=4;
        intr(0x33,&regp);
       
        regp.r_ax=0x7;
        regp.r_cx=1;
        regp.r_dx=640;
        intr(0x33,&regp);
        regp.r_ax=0x8;
        regp.r_cx=1;
        regp.r_dx=480;
        intr(0x33,&regp);
       
        regp.r_ax=0x1d;
        regp.r_bx=0;
        intr(0x33,&regp);*/
}
void initmouse()
{
        ClearOldHandler();
        oldInterrupt_1C = getvect(0x1C);
        setvect(0x1C, Timer);
       
        mouse_show();
        mouserect=farmalloc(imagesize(ms.a,ms.b,ms.a+MouseWidth,ms.b+MouseHeight)); /*返回矩形的大小*/
        getimage(ms.a,ms.b,ms.a+MouseWidth,ms.b+MouseHeight,mouserect); /*第一次将图形(一个空矩形)存入到内存中,内存中存入的是一个空矩形*/
       
}
void getmouse(int *x,int *y,int *key)
{
union REGS inregs,outregs;
int keysta;
inregs.x.ax=3; /*获取鼠标位置和状态也可以用3*/
int86(0x33,&inregs,&outregs); /*中断调用*/
*x=outregs.x.cx; /*cx寄存器中存的是横坐标*/
*y=outregs.x.dx; /*dx寄存器中存的是列坐标*/

*key=outregs.x.bx; /*bx寄存器是按键状态*/
}
void constructmouse()
{
       
        farfree(mouserect);
        if(oldHandler.mask)                        /* restore old event handler*/
                    {
                    struct SREGS sregs={0};
        union REGS regs={0};
        regs.x.ax=0x14;
        regs.x.dx=oldHandler.offset;
        regs.x.cx=0xFF;
        sregs.es=oldHandler.segment;
        int86x(0x33,&regs,&regs,&sregs);       
                   }
        setvect(0x1C, Timer);
}

void initpara()
{
        int i;
        for (i=0;i<256;i++)
        {
                Event[i]=0;
        }
       

}

void RestoreOldWindowbd(int xa,int xb,struct window wd)
{
        int i=0,j=0;
        int newwdleft=xa-MouseRelCapX;
        int newwdtop=xb-MouseRelCapY;
        for(i=0;i<wd.width;i++)
               
                putpixel(newwdleft+i,newwdtop,Windowbdpixel[j++]);
        for(i=0;i<wd.height;i++)
                putpixel(newwdleft+wd.width,newwdtop+i,Windowbdpixel[j++]);
        for(i=0;i<wd.width;i++)
                putpixel(newwdleft+wd.width-i,newwdtop+wd.height,Windowbdpixel[j++]);
        for(i=0;i<wd.height;i++)
                putpixel(newwdleft,newwdtop+wd.height-i,Windowbdpixel[j++]);
}
void SaveNewWindowbd(int xa,int xb,struct window wd)
{
        int i,j=0;
        int newwdleft=xa-MouseRelCapX;
        int newwdtop=xb-MouseRelCapY;
        for(i=0;i<wd.width;i++)
               
                Windowbdpixel[j++]=getpixel(newwdleft+i,newwdtop);
        for(i=0;i<wd.height;i++)
                Windowbdpixel[j++]=getpixel(newwdleft+wd.width,newwdtop+i);
        for(i=0;i<wd.width;i++)
                Windowbdpixel[j++]=getpixel(newwdleft+wd.width-i,newwdtop+wd.height);
        for(i=0;i<wd.height;i++)
                Windowbdpixel[j++]=getpixel(newwdleft,newwdtop+wd.height-i);
}      
void PutNewWindowbd(int xa,int xb,struct window wd)
{      
        int i;
        int newwdleft=xa-MouseRelCapX;
        int newwdtop=xb-MouseRelCapY;
        setcolor(DARKGRAY);
        /*
        for(i=0;i<wd.width;i++)
                putpixel(newwdleft+i,newwdtop,DARKGRAY);
        for(i=0;i<wd.height;i++)
                putpixel(newwdleft+wd.width,newwdtop+i,DARKGRAY);
        for(i=0;i<wd.width;i++)
                putpixel(newwdleft+wd.width-i,newwdtop+wd.height,DARKGRAY);
        for(i=0;i<wd.height;i++)
                putpixel(newwdleft,newwdtop+wd.height-i,DARKGRAY);
                */
        rectangle(newwdleft,newwdtop,newwdleft+wd.width,newwdtop+wd.height);
}      
        


unsigned char MouseInRect(int x,int y,struct Rect rt)
{
        if (x>rt.left
        &&x<rt.right
        &&y>rt.top
        &&y<rt.bottom)
        return 1;
        else return 0;
}
void GetCapRect(struct window *pwd)
{
        pwd->cap.rt.left=pwd->left+syswindowleftboder;
        pwd->cap.rt.right=pwd->left+pwd->width-syswindowrightboder;
        pwd->cap.rt.top=pwd->top+syswindowtopboder;
        pwd->cap.rt.bottom=pwd->top+syswindowtopboder+CapHeight;
}
void GetCapBox1Rect(struct window *pwd)
{
        pwd->cap.box1.left=pwd->cap.rt.right-sysmargin-sysbutton_width*2-sysbutton_Interval;
        pwd->cap.box1.right=pwd->cap.rt.right-sysmargin-sysbutton_width-sysbutton_Interval;
        pwd->cap.box1.top=pwd->cap.rt.top+sysmargin;
        pwd->cap.box1.bottom=pwd->cap.rt.top+sysmargin+sysbutton_height;
}
void GetCapBox2Rect(struct window *pwd)
{
        pwd->cap.box2.left=pwd->cap.rt.right-sysmargin-sysbutton_width;
        pwd->cap.box2.right=pwd->cap.rt.right-sysmargin;
        pwd->cap.box2.top=pwd->cap.rt.top+sysmargin;
        pwd->cap.box2.bottom=pwd->cap.rt.top+sysmargin+sysbutton_height;
}
void GetMenuRect(struct window *pwd)
{
        int i,j,m,k,left;
        j=sizeof(pwd->mainmenu.sm)/sizeof(pwd->mainmenu.sm[0]);
       
        pwd->mainmenu.menunum=j;
        pwd->mainmenu.menurt[0].left=pwd->cap.rt.left;
        for (i=0;i<j-1;i++)
        {
        pwd->mainmenu.menurt[i].right=pwd->mainmenu.menurt[i].left+strlen(pwd->mainmenu.menutext[i])*8+8;
        pwd->mainmenu.menurt[i+1].left=pwd->mainmenu.menurt[i].right+1;
        m=sizeof(pwd->mainmenu.sm[i].itemrt)/sizeof(pwd->mainmenu.sm[i].itemrt[0]);
        for (k=0;k<m;k++)
                {
                        int a,b;char *s;
                a=pwd->mainmenu.sm[i].itemrt[k].left=pwd->mainmenu.menurt[i].left+3;
                b=pwd->mainmenu.sm[i].itemrt[k].right=pwd->mainmenu.menurt[i].right+3+50;
               
                }
        }
        pwd->mainmenu.menurt[i].right=pwd->mainmenu.menurt[i].left+strlen(pwd->mainmenu.menutext[i])*8+8;
        for (i=0;i<j;i++)
        {
        pwd->mainmenu.menurt[i].top=pwd->cap.rt.bottom+2;
        pwd->mainmenu.menurt[i].bottom=pwd->cap.rt.bottom+2+SysMainMenuHeight;
        m=sizeof(pwd->mainmenu.sm[i].itemrt)/sizeof(pwd->mainmenu.sm[i].itemrt[0]);
        for (k=0;k<m;k++)
                {
                pwd->mainmenu.sm[i].itemrt[k].top=pwd->mainmenu.menurt[i].bottom+3+k*SysMainMenuHeight;
                pwd->mainmenu.sm[i].itemrt[k].bottom=pwd->mainmenu.menurt[i].right+3+(k+1)*SysMainMenuHeight;
                }
        }
}


void drawboder(struct window wd)
{
setcolor(LIGHTGRAY);
line(wd.left,wd.top+wd.height,wd.left,wd.top);
line(wd.left+1,wd.top,wd.left+wd.width,wd.top);

setcolor(DARKGRAY);
line(wd.left+wd.width,wd.top+1,wd.left+wd.width,wd.top+wd.height);
setcolor(WHITE);
line(wd.left+1,wd.top+wd.height,wd.left+1,wd.top+1);
line(wd.left+2,wd.top+1,wd.left+wd.width-1,wd.top+1);

setcolor(LIGHTGRAY);
rectangle(wd.left+2,wd.top+2,wd.left+wd.width-1,wd.top+wd.height);
rectangle(wd.left+3,wd.top+3,wd.left+wd.width-2,wd.top+wd.height-1);
setcolor(DARKGRAY);
line(wd.left+1,wd.top+wd.height,wd.left+wd.width-1,wd.top+wd.height);


}
void drawpurecap(struct caption cp,char *caption)
{


setfillstyle(SOLID_FILL,BLUE);
bar(cp.rt.left, cp.rt.top, cp.rt.right,cp.rt.bottom);
  setcolor(WHITE);
  moveto(cp.rt.left+sysmargin*2,cp.rt.top+sysmargin*2);
  outtext(caption);

}

void drawminbox(struct Rect btrt,unsigned char state)
{
int px=0,py=0;
sysminbt.state=state;
drawpurebutton(btrt,state);

  
  
if (state==1) {px=1;py=1;}
  setfillstyle(SOLID_FILL,DARKGRAY);
  bar(px+sysbutton_MIN_LM+btrt.left,
  py-sysbutton_MIN_BM+btrt.bottom,
  px-sysbutton_MIN_RM+btrt.right,
  py-sysbutton_MIN_BM+btrt.bottom);

}
void drawclosebox(struct Rect btrt,unsigned char state)
{
       
int px=0,py=0;
sysclosebt.state=state;
drawpurebutton(btrt,state);

  if (state==1) {px=1;py=1;}
  setcolor(DARKGRAY);
  line(px+sysbutton_CLOSE_LM+btrt.left,
  py+sysbutton_CLOSE_TM+btrt.top,
  px-sysbutton_CLOSE_RM+btrt.right,
  py-sysbutton_CLOSE_TM+btrt.bottom);
  line(px-sysbutton_CLOSE_RM+btrt.right,
  py+sysbutton_CLOSE_TM+btrt.top,
  px+sysbutton_CLOSE_LM+btrt.left,
  py-sysbutton_CLOSE_TM+btrt.bottom);
  
}
void drawpurebutton(struct Rect btrt,unsigned char state)
{
        if (state==0) setcolor(WHITE);
else setcolor(DARKGRAY);
  line(btrt.left,btrt.bottom,btrt.left,btrt.top);
  line(btrt.left,btrt.top,btrt.right,btrt.top);

if (state==1)
setcolor(WHITE);
else setcolor(DARKGRAY);
  line(btrt.right,btrt.top+1,btrt.right,btrt.bottom);

  line(btrt.right,btrt.bottom,btrt.left,btrt.bottom);

  setfillstyle(SOLID_FILL,LIGHTGRAY);
  bar(btrt.left+1,btrt.top+1,btrt.right-1,btrt.bottom-1);
}
void drawcaption(struct caption cp)
{



drawpurecap(cp,cp.text);

drawminbox(cp.box1,0);
drawclosebox(cp.box2,0);


}
void drawclient(int clileft,int clitop,int cliright,int clibottom)
{
}

void drawmenu(struct menu mn)
{
int i,item=2;
struct Rect txtrt;
char *s;

txtrt.top=mn.menurt[0].top+SysMainMenuHeight/2-3;
for (i=0;i<item;i++)
{
txtrt.left=mn.menurt[i].left+4;

  moveto(txtrt.left,txtrt.top);
          
  outtext(mn.menutext[i]);
}
}

void drawwindow(struct window *pwd)
{
  struct window wd;       
  windowparainit(pwd);
  GetCapRect(pwd);
  
  GetCapBox1Rect(pwd);
GetCapBox2Rect(pwd);
GetMenuRect(pwd);
  wd=*pwd;
  setfillstyle(SOLID_FILL,LIGHTGRAY);
  bar(wd.left,wd.top,wd.left+wd.width,wd.top+wd.height);
  
drawboder(wd);
  drawcaption(wd.cap);
  drawmenu(wd.mainmenu);
  
  
}
void windowparainit(struct window *wd)
{
int i,j;
strcpy(wd->mainmenu.menutext[0],"File");
strcpy(wd->mainmenu.sm[0].itemtext[0],"Open");
strcpy(wd->mainmenu.sm[0].itemtext[1],"Exittttttt");
strcpy(wd->mainmenu.menutext[1],"Search");
wd->mainmenu.menutext[1][9]='\0';
strcpy(wd->mainmenu.sm[1].itemtext[0],"Find");
strcpy(wd->mainmenu.sm[1].itemtext[1],"FindNext");
strcpy(wd->cap.text,"my first dosgui");
wd->cap.HitBt=0;

}
void DrawMouseonMenu(struct menu mn,int i,unsigned char state)
{
        if (state==1)
        setcolor(WHITE);
        else
        setcolor(LIGHTGRAY);
        line(mn.menurt[i].left,mn.menurt[i].bottom-1,mn.menurt[i].left,mn.menurt[i].top);
        line(mn.menurt[i].left,mn.menurt[i].top,mn.menurt[i].right-1,mn.menurt[i].top);
        if (state==1)
        setcolor(DARKGRAY);
        else
        setcolor(LIGHTGRAY);
        line(mn.menurt[i].right,mn.menurt[i].top,mn.menurt[i].right,mn.menurt[i].bottom);
        line(mn.menurt[i].right,mn.menurt[i].bottom,mn.menurt[i].left,mn.menurt[i].bottom);
       
}
void DrawMouseDownMenu(struct menu mn,int i)
{
        struct Rect txtrt;
        int        k,j;
        char *s;
        j=sizeof(mn.sm[i].itemrt)/sizeof(mn.sm[i].itemrt[0]);
        setcolor(DARKGRAY);
        line(mn.menurt[i].left,mn.menurt[i].bottom-1,mn.menurt[i].left,mn.menurt[i].top);
        line(mn.menurt[i].left,mn.menurt[i].top,mn.menurt[i].right-1,mn.menurt[i].top);
        setcolor(WHITE);
        line(mn.menurt[i].right,mn.menurt[i].top,mn.menurt[i].right,mn.menurt[i].bottom);
        line(mn.menurt[i].right,mn.menurt[i].bottom,mn.menurt[i].left,mn.menurt[i].bottom);
        setfillstyle(SOLID_FILL,LIGHTGRAY);
        bar(mn.menurt[i].left+1,mn.menurt[i].top+1,mn.menurt[i].right-1,mn.menurt[i].bottom-1);
        txtrt.left=mn.menurt[i].left+4;
        txtrt.top=mn.menurt[0].top+SysMainMenuHeight/2-3;
  moveto(txtrt.left+1,txtrt.top+1);
  setcolor(DARKGRAY);
  outtext(mn.menutext[i]);
  
  setcolor(WHITE);
  line(mn.menurt[i].left+1,mn.menurt[i].bottom+2+50,mn.menurt[i].left+1,mn.menurt[i].bottom+2);
        line(mn.menurt[i].left+1,mn.menurt[i].bottom+2,mn.menurt[i].right+1+50,mn.menurt[i].bottom+2);
        setcolor(DARKGRAY);
  line(mn.menurt[i].right+1+50,mn.menurt[i].bottom+2,mn.menurt[i].right+1+50,mn.menurt[i].bottom+2+50);
        line(mn.menurt[i].right+1+50,mn.menurt[i].bottom+2+50,mn.menurt[i].left+1,mn.menurt[i].bottom+2+50);
        setfillstyle(SOLID_FILL,LIGHTGRAY);
        bar(mn.menurt[i].left+2,mn.menurt[i].bottom+3,mn.menurt[i].right+1+49,mn.menurt[i].bottom+2+49);
        setcolor(DARKGRAY);
        for (k=0;k<2;k++)
        {
        moveto(mn.sm[i].itemrt[k].left+2,mn.sm[i].itemrt[k].top+2);
        outtext(mn.sm[i].itemtext[k]);
        }
}

   此帖被 +2 点积分    点击查看详情   
评分人:【 yueluck 分数: +2  时间:2007-6-20 09:07


2007-6-15 18:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yueluck
初级用户





积分 32
发帖 14
注册 2007-6-14
状态 离线
『第 6 楼』:  非常感谢

你的程序很好.谢谢你.good luck

2007-6-18 14:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yueluck
初级用户





积分 32
发帖 14
注册 2007-6-14
状态 离线
『第 7 楼』:  非常感谢

你的程序很好.谢谢你.good luck

2007-6-18 14:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qq43142691
中级用户





积分 327
发帖 152
注册 2007-5-4
状态 离线
『第 8 楼』:  

超人~~~~~~编程。。。。。。

2007-9-25 19:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fqljwdyq
新手上路





积分 14
发帖 7
注册 2006-2-18
来自 江苏
状态 离线
『第 9 楼』:  

你可以到这个网址,去下载NEO开发包,里面有鼠标的全程源程序,你可以参考一下,这个开发包很好

2007-10-11 19:15
查看资料  发短消息 网志   编辑帖子  回复  引用回复
fqljwdyq
新手上路





积分 14
发帖 7
注册 2006-2-18
来自 江苏
状态 离线
『第 10 楼』:  

刚才没把网址写上http://free.ys168.com?dongkai

2007-10-11 19:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: