标题: 鼠标图形光标在NT/2K/XP下不显示的问题。
[打印本页]
作者: 帅哥
时间: 2003-7-9 00:00
标题: 鼠标图形光标在NT/2K/XP下不显示的问题。
请教高手如何解决33H鼠标图形光标在NT/2K/XP下不显示的问题。
我做了很多基于33H的DOS图形方式应用软件,大部分是640*480*16色模式+图形鼠标控制。
这些软件在纯DOS或者95/98/ME中运行都非常正常,但在NT/2K/XP下运行,鼠标光标始终不能显示,但除此之外软件其他功能是正常的。虽然看不见鼠标光标,但鼠标的实际定位是正常的,软件中可以检测到鼠标光标当前的位置,也能检测到按键动作。
我试过在NT/2K/XP下,调用33H的showmousecursor和hidemousecursor功能,都是无效的。
试过自行编写光标显示的中断程序,但因为使用的是时间中断,每秒只能显示几十次,实际应用中频闪的现象很严重。
请教版主和众高手如何解决此问题?
谢谢。
[此贴子已经被作者于2003-7-9 1:05:44编辑过]
作者: Wengier
时间: 2003-7-9 00:00
最好的解决办法嘛,,应该是跟Microsoft公司联系一下,让它们修正WinNT/2K/XP中的这个BUG了。
作者: 帅哥
时间: 2003-7-9 00:00
Quote: |
以下是引用Wengier在2003-7-9 9:04:15的发言:
最好的解决办法嘛,,应该是跟Microsoft公司联系一下,让它们修正WinNT/2K/XP中的这个BUG了。 |
|
谢谢回复。联系M$解决这个问题几乎是不可能的事。我查了很久,也没有发现M$有相关文档说明关于33H中断在纯32位操作系统的DOS虚拟机中的变化啊。
那么是否没有彻底解决的办法了?我想这个技术应该不是很难的,是否有更好的鼠标光标中断子程序可以提供?
请赐教!再次感谢!
作者: 帅哥
时间: 2003-7-11 00:00
其他高手也帮忙看一下吧。很急啊。
作者: 拉菲尔
时间: 2004-5-30 00:00
楼主自己编写鼠标显示程序吧,用TC 自带的 BGI 函数
作者: boblhh9999
时间: 2004-6-3 00:00
帅哥:
我写的程序,为何无法显示
我想改变鼠标的默认图标,利用33h的调用。
程序如下
struct shape
{
unsigned char shape[32];
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的位图是如何在数组中排列,这一点我不懂,
所以毫无头绪,希望那为大侠给予指点。
谢谢!!!!急急急