当前位置:  技术问答>linux和unix

请问:如何在DOS下用C或汇编定义鼠标的形状?

    来源: 互联网  发布时间:2014-11-04

    本文导语:  | #define CURSOR_ARROW    0 #define CURSOR_TEXT 1 #define CURSOR_CROSS    2 #define CURSOR_WAIT     3 #define CURSOR_SIZENWSE 4 #define CURSOR_SIZENS 5 #define CURSOR_SIZENESW 6 #define CURSOR_SIZEWE 7 #define CURSOR_HAND 8 #define CURSOR_FIRST CURSOR_A...


|
#define CURSOR_ARROW    0
#define CURSOR_TEXT 1
#define CURSOR_CROSS    2
#define CURSOR_WAIT     3
#define CURSOR_SIZENWSE 4
#define CURSOR_SIZENS 5
#define CURSOR_SIZENESW 6
#define CURSOR_SIZEWE 7
#define CURSOR_HAND 8

#define CURSOR_FIRST CURSOR_ARROW
#define CURSOR_LAST CURSOR_HAND
int  SetCursor(int shape),GetCursor(); //return last shape
//--------------------------------------------------------------------
int SetCursor(int shape)
{
union REGS r; struct SREGS sr;
static POINT HotSpot[CURSOR_LAST+1]={POINT(0,0),POINT(7,8),POINT(7,7),
POINT(8,8),POINT(8,8),POINT(8,8),POINT(8,8),POINT(8,8),POINT(6,0)};
static WORD Shape[CURSOR_LAST+1][32] = { //AND, XOR
{  // arrow
0x3fff,0x1fff,0x0fff,0x07ff, 0x03ff,0x01ff,0x00ff,0x007f,
0x003f,0x001f,0x01ff,0x10ff, 0x30ff,0xf87f,0xf87f,0xfc7f,
0x0000,0x4000,0x6000,0x7000, 0x7800,0x7c00,0x7e00,0x7f00,
0x7f80,0x7c00,0x6c00,0x4600, 0x0600,0x0300,0x0300,0x0000
},{ // text (ibeam)
0xffff,0xffff,0xffff,0xffff, 0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff, 0xffff,0xffff,0xffff,0xffff,
0x0770,0x0080,0x0080,0x0080, 0x0080,0x0080,0x0080,0x0080,
0x0080,0x0080,0x0080,0x0080, 0x0080,0x0080,0x0080,0x0770
},{ // cross
0xffff,0xffff,0xffff,0xffff, 0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff, 0xffff,0xffff,0xffff,0xffff,
0x0080,0x0080,0x0080,0x0080, 0x0080,0x0080,0x0080,0xffff,
0x0080,0x0080,0x0080,0x0080, 0x0080,0x0080,0x0080,0x0080
},{ // wait
0xe007,0xe007,0xe007,0xf00f, 0xf00f,0xf00f,0xf81f,0xfc3f,
0xfc3f,0xf81f,0xf00f,0xf00f, 0xf00f,0xe007,0xe007,0xe007,
0x0000,0x07e0,0x0000,0x07e0, 0x07e0,0x0340,0x0080,0x0100,
0x0080,0x0100,0x02c0,0x0560, 0x02a0,0x0000,0x07e0,0x0000
},{ //size north west to south east
0xffff,0x807f,0x80ff,0x81ff, 0x83ff,0x81ff,0x88ff,0x9c7d,
0xbe39,0xff11,0xff81,0xffc1, 0xff81,0xff01,0xfe01,0xffff,
0x0000,0x7f80,0x4100,0x4200, 0x4400,0x4a00,0x5500,0x6282,
0x4146,0x00aa,0x0052,0x0022, 0x0042,0x0082,0x01fe,0x0000
},{ // size north to south
0xfeff,0xfc7f,0xf83f,0xf01f, 0xe00f,0xfc7f,0xfc7f,0xfc7f,
0xfc7f,0xfc7f,0xfc7f,0xe00f, 0xf01f,0xf83f,0xfc7f,0xfeff,
0x0100,0x0280,0x0440,0x0820, 0x1ef0,0x0280,0x0280,0x0280,
0x0280,0x0280,0x0280,0x1ef0, 0x0820,0x0440,0x0280,0x0100
},{ // size north east to south west
0xffff,0xfe01,0xff01,0xff81, 0xffc1,0xff81,0xff11,0xbe39,
0x9c7d,0x88ff,0x81ff,0x83ff, 0x81ff,0x80ff,0x807f,0xffff,
0x0000,0x01fe,0x0082,0x0042, 0x0022,0x0052,0x00aa,0x4146,
0x6282,0x5500,0x4a00,0x4400, 0x4200,0x4100,0x7f80,0x0000
},{ // size west to east
0xffff,0xffff,0xffff,0xf7ef, 0xe7e7,0xc7e3,0x8001,0x0000,
0x8001,0xc7e3,0xe7e7,0xf7ef, 0xffff,0xffff,0xffff,0xffff,
0x0000,0x0000,0x0000,0x0810, 0x1818,0x2814,0x4ff2,0x8001,
0x4ff2,0x2814,0x1818,0x0810, 0x0000,0x0000,0x0000,0x0000
},{ // hand
0xfdff,0xf8ff,0xf8ff,0xf8ff, 0xf87f,0xf81f,0xf807,0x8803,
0x8003,0xc003,0xe003,0xe003, 0xf003,0xf807,0xfc07,0xf803,
0x0000,0x0200,0x0200,0x0200, 0x0200,0x0280,0x02a0,0x03e8,
0x33f8,0x1bf8,0x0bf8,0x0ff8, 0x07f8,0x03f0,0x01f0,0x0000
}
};
r.x.ax=0x0009;
r.x.bx=HotSpot[shape].x;
r.x.cx=HotSpot[shape].y;
r.x.dx=FP_OFF(Shape[shape]);
sr.es=FP_SEG(Shape[shape]);
int86x(0x33,&r,&r,&sr);
MouseOff(); MouseOn(); //redraw mouse cursor
int old=_CursorShape_; _CursorShape_ = shape;
return old;
}

    
 
 

您可能感兴趣的文章:

  • 请问有没有用AT&T汇编语法讲汇编语言的书?
  • 请问一下,汇编器as是否就是gas?
  • 请问各位大虾,如何在linux环境下学习汇编?
  • 请问linux源代码中的汇编是什么格式的
  • 请问汇编器和编译器各自完成那些功能啊?
  • 请问有能反汇编elf格式的程序吗?
  • 请问Linux2.6版本里用什么汇编语言??钱不多了,谢谢大家了!!!
  • 请问载linux下如何调试汇编程序,有没有像debug的程序。
  • 新手请问一句linux汇编语句
  • 请问linux中的arch/i386/kernel/head.S的汇编语言是用什么编译的
  • 在linux上学习汇编,请问用什么工具,哪有参考资料?
  • c/c++ iis7站长之家
  • 请问哪里能得到at&t的汇编说明书?比如各个语句的功能说明 。
  • 请问一下下面的汇编代码是哪种风格的?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问可以用宏定义定义一个二维数组吗?
  • 请问:定义文件里需不需要用#include 将对应的头文件包含进来啊?
  • 请问如何在JavaBean中定义request对象
  • 请问LINUX 下 _int64类型是怎么定义的啊
  • 请问再java中怎样定义动态数组?
  • 请问怎样自定义resin的出错页?
  • 请问JAVA如何定义常量实行多个JAVA程序共用?
  • 请问:buttonsign定义为一个JButton,那么,buttonsign.addActionListener(this)是什么意思??
  • 请问在g.setColor(Color.white)里面可以自定义颜色吗?
  • 请问linux下如何方便的找到数据类型的定义?
  • 各位好,请问,need_resched()函数的定义在那里?我怎么没找
  • 请问大侠们,IPPROTO_ICMP的宏定义在哪儿??
  • 请问linux下FILE结构在哪里有定义,
  • 请问谁知道网络各种故障的详细定义.
  • 请问自己定义的对象如何使用Hashtable存取?
  • 请问:从哪个header文件中看struct tty_driver的定义
  • 请问:能够在网页文件中自己定义出现在地址栏中的url吗?
  • 初学者请问“存储管理”中一个宏定义
  • 请问set_gpio_ctrl这个宏在哪里定义的?
  • 请问一个宏定义的意思
  • 请问:我知道路由器的telnet密码,但忘记了enable 密码,请问如何是好?
  • 请问那里有SYBASE的jbdb 2.0下载;jspsmartupload可以直接将文件上传到数据库,请问如何使用
  • 请问最新的reahat9.0是基于什么核心的?2.4?2.6?请问那里能下载?
  • 请问:请问哪里有关于linux基本操作命令讲解的资料下载,最好是幻灯片格式的.
  • 请问,我试图用#admintool&图形工具命令来安装sun workshop5.0,为什么进入的却是用户管理界面?请问具体该如何在solaris下安装应用软件
  • 请问在Redhat 9里,我从登录就是图形介面,请问如何在图形介面内进入命令行方式呢,谢谢
  • 请问玩过SOLARIS的高手门,在不正常关机后,就不能启动到windows公用桌面了,只能在命令提示模式下了,请问怎么解决这个问题啊?急~!~!
  • 请问:我在redhat下装了bochs-2.2.1-1.rpm,.装了后,想设置一下,但找不到bochsrc.fda.bxrc,请问这个文件在哪个曰录下啊。
  • 请问:在配置Qt时,很多文档都说在.profile,.login里加东西,但是我好像没有发现有这两个文件上,请问这些文件在哪个目录下啊
  • 请问:在GCC里的C程序里的变量的声明是不是只能在前面,而且相同类型的变量的声明只能放在一起?如果不是,请问怎么样可以解决这个问题.
  • 请问各位大虾,小弟今天开始学jsp了,这学期我们有java课,所以已经下载了jdk(好象是1.2),请问我的98环境怎么配置jsp环境呀?我的jdk可以运行.java程序,别的我就不知道了....谢谢!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3