中国DOS联盟论坛

China DOS Union

-- Unite DOS · Advance DOS · Grow DOS --
Union site: www.cn-dos.net Forum site: www.cn-dos.net/forum
Guest | Log in | Register | Members | Search | China DOS Union
中国DOS联盟论坛
The time now is 2026-10-31 12:51
47,815 topics / 349,930 posts / today 0 new / 48,290 members
DOS开发编程 & 发展交流 (开发室) » Problem with the mouse graphics cursor not displaying under NT/2K/XP.
Printable Version  1,473 / 5
Floor1 帅哥 Posted 2003-07-09 00:00
初级用户 Posts 4 Credits 115
Question for the experts: how can I solve the problem that the 33H mouse graphics cursor does not display under NT/2K/XP?

I have made many DOS graphics-mode application programs based on 33H, most of them using 640*480*16-color mode + graphical mouse control.

These programs run perfectly normally under pure DOS or 95/98/ME, but when run under NT/2K/XP, the mouse cursor never displays. Aside from that, all other functions of the software are normal. Although the mouse cursor cannot be seen, the mouse's actual positioning is normal; the software can detect the current position of the mouse cursor, and can also detect button actions.

I tried calling the 33H showmousecursor and hidemousecursor functions under NT/2K/XP, but both are ineffective.

I also tried writing my own interrupt routine to display the cursor, but because it uses the timer interrupt, it can only display a few dozen times per second, and the flickering is very serious in actual use.

Could the moderator and all the experts please advise how to solve this problem?

Thanks.


Floor2 Wengier Posted 2003-07-09 00:00
系统支持 Posts 10,521 Credits 27,736
The best solution, I guess, would be to contact Microsoft and have them fix this BUG in WinNT/2K/XP.
Floor3 帅哥 Posted 2003-07-09 00:00
初级用户 Posts 4 Credits 115
The following is quoted from Wengier's post on 2003-7-9 9:04:15:
The best solution, I guess, would be to contact Microsoft and have them fix this BUG in WinNT/2K/XP.


Thanks for the reply. Contacting M$ to solve this problem is almost impossible. I searched for a long time and also did not find any relevant M$ documentation explaining changes to interrupt 33H in the DOS virtual machine of a pure 32-bit operating system.

So is there really no complete solution? I don't think this technology should be very difficult. Is there a better mouse cursor interrupt subroutine that can be provided?

Please advise! Thanks again!
Floor4 帅哥 Posted 2003-07-11 00:00
初级用户 Posts 4 Credits 115
Other experts, please help take a look too. It's very urgent.
Floor5 拉菲尔 Posted 2004-05-30 00:00
初级用户 Posts 41 Credits 208
OP should write a mouse display program yourself, using the BGI functions that come with TC
Floor6 boblhh9999 Posted 2004-06-03 00:00
中级用户 Posts 74 Credits 316
Handsome guy:
Why can't the program I wrote display properly?
I want to change the mouse's default icon using a 33h call.
The program is as follows
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);
}

But it does not display properly.
The key issue is how the mouse 16*16 bitmap is arranged in the array; I don't understand that part,
so I have no clue at all. I hope some expert can give me some guidance.

Thanks!!!! Very urgent
[ Contact the Union admin team - 中国DOS联盟 - Standard version ]
Sponsored by ifanr Inc | © 2001–2023