中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-05 14:43
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 鼠标图形光标在NT/2K/XP下不显示的问题。 查看 1,240 回复 5
楼 主 鼠标图形光标在NT/2K/XP下不显示的问题。 发表于 2003-07-09 00:00 ·  中国 福建 厦门 电信
初级用户
积分 115
发帖 4
注册 2003-07-05 00:00
23年会员
UID 6432
性别 男
状态 离线
请教高手如何解决33H鼠标图形光标在NT/2K/XP下不显示的问题。

我做了很多基于33H的DOS图形方式应用软件,大部分是640*480*16色模式+图形鼠标控制。

这些软件在纯DOS或者95/98/ME中运行都非常正常,但在NT/2K/XP下运行,鼠标光标始终不能显示,但除此之外软件其他功能是正常的。虽然看不见鼠标光标,但鼠标的实际定位是正常的,软件中可以检测到鼠标光标当前的位置,也能检测到按键动作。

我试过在NT/2K/XP下,调用33H的showmousecursor和hidemousecursor功能,都是无效的。

试过自行编写光标显示的中断程序,但因为使用的是时间中断,每秒只能显示几十次,实际应用中频闪的现象很严重。

请教版主和众高手如何解决此问题?

谢谢。


2 发表于 2003-07-09 00:00 ·  美国 肯塔基州 费耶特县 列克星敦 Charter_Communications
系统支持
★★★★★★
“新DOS时代”站长
积分 27,736
发帖 10,521
注册 2002-10-09 12:00
23年会员
UID 9
状态 离线
最好的解决办法嘛,,应该是跟Microsoft公司联系一下,让它们修正WinNT/2K/XP中的这个BUG了。
Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

3 发表于 2003-07-09 00:00 ·  中国 福建 厦门 电信
初级用户
积分 115
发帖 4
注册 2003-07-05 00:00
23年会员
UID 6432
性别 男
状态 离线
以下是引用Wengier在2003-7-9 9:04:15的发言:
最好的解决办法嘛,,应该是跟Microsoft公司联系一下,让它们修正WinNT/2K/XP中的这个BUG了。


谢谢回复。联系M$解决这个问题几乎是不可能的事。我查了很久,也没有发现M$有相关文档说明关于33H中断在纯32位操作系统的DOS虚拟机中的变化啊。

那么是否没有彻底解决的办法了?我想这个技术应该不是很难的,是否有更好的鼠标光标中断子程序可以提供?

请赐教!再次感谢!


4 发表于 2003-07-11 00:00 ·  中国 福建 漳州 电信
初级用户
积分 115
发帖 4
注册 2003-07-05 00:00
23年会员
UID 6432
性别 男
状态 离线
其他高手也帮忙看一下吧。很急啊。
5 发表于 2004-05-30 00:00 ·  中国 河南 洛阳 联通
初级用户
积分 208
发帖 41
注册 2004-03-25 00:00
22年会员
UID 21059
性别 男
状态 离线
楼主自己编写鼠标显示程序吧,用TC 自带的 BGI 函数
6 发表于 2004-06-03 00:00 ·  中国 辽宁 丹东 联通
中级用户
★★
积分 316
发帖 74
注册 2004-03-04 00:00
22年会员
UID 19167
性别 男
状态 离线
帅哥:
我写的程序,为何无法显示
我想改变鼠标的默认图标,利用33h的调用。
程序如下
struct shape
{
unsigned char shape;
char hotx;
char hoty;
};

struct shape ARROW={
{

0x3fff,0x1fff,0x0fff,0x07ff,
0x03ff,0x01ff,0x00ff,0x007f,
0x003f,0x00ff,0x01ff,0x10ff,
0x30ff,0xf87f,0xf87f,0xfc3f,
0x0000,0x7c00,0x6000,0x7000,
0x7800,0x7c00,0x7e00,0x7f00,
0x7f80,0x7e00,0x7c00,0x4600,
0x0600,0x0300,0x0300,0x0180
},
0,0,
};

void mouse_shape(struct shape sp)
{
struct SREGS sr;
union REGS r;
union REGPACK re;

r.w.ax=0x00;
int386(0x33,&r,&r);
r.w.ax=0x09;
r.w.bx=sp.hotx;
r.w.cx=sp.hoty;
r.x.edx=FP_OFF(&sp.shape);
segread(&sr);
sr.es=FP_SEG(&sp.shape);
int386x(0x33,&r,&r,&sr);
r.w.ax=0x01;
int386(0x33,&r,&r);
}

但显示不正常,
关键是鼠标的16*16的位图是如何在数组中排列,这一点我不懂,
所以毫无头绪,希望那为大侠给予指点。

谢谢!!!!急急急
论坛跳转: