Board logo

标题: 鼠标图形光标在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的位图是如何在数组中排列,这一点我不懂,
所以毫无头绪,希望那为大侠给予指点。

    谢谢!!!!急急急