China DOS Union

-- Unite DOS · Advance DOS · Grow DOS --

Union site: www.cn-dos.net Forum site: www.cn-dos.net/forum
DOS stands for freedom, openness and progress. Let us work hard, learn from the openness and GNU spirit of FreeDOS and Linux, and together build and grow a free GNU GPL world!

中国DOS联盟论坛
The time now is 2026-07-05 13:37
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » Problem with the mouse graphics cursor not displaying under NT/2K/XP. View 1,238 Replies 5
Original Poster Posted 2003-07-09 00:00 ·  中国 福建 厦门 电信
初级用户
Credits 115
Posts 4
Joined 2003-07-05 00:00
23-year member
UID 6432
Gender Male
Status Offline
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.


Floor 2 Posted 2003-07-09 00:00 ·  美国 肯塔基州 费耶特县 列克星敦 Charter_Communications
系统支持
★★★★★★
“新DOS时代”站长
Credits 27,736
Posts 10,521
Joined 2002-10-09 12:00
23-year member
UID 9
Status Offline
The best solution, I guess, would be to contact Microsoft and have them fix this BUG in WinNT/2K/XP.
Wengier - 新DOS时代

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

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

Floor 3 Posted 2003-07-09 00:00 ·  中国 福建 厦门 电信
初级用户
Credits 115
Posts 4
Joined 2003-07-05 00:00
23-year member
UID 6432
Gender Male
Status Offline
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!
Floor 4 Posted 2003-07-11 00:00 ·  中国 福建 漳州 电信
初级用户
Credits 115
Posts 4
Joined 2003-07-05 00:00
23-year member
UID 6432
Gender Male
Status Offline
Other experts, please help take a look too. It's very urgent.
Floor 5 Posted 2004-05-30 00:00 ·  中国 河南 洛阳 联通
初级用户
Credits 208
Posts 41
Joined 2004-03-25 00:00
22-year member
UID 21059
Gender Male
Status Offline
OP should write a mouse display program yourself, using the BGI functions that come with TC
Floor 6 Posted 2004-06-03 00:00 ·  中国 辽宁 丹东 联通
中级用户
★★
Credits 316
Posts 74
Joined 2004-03-04 00:00
22-year member
UID 19167
Gender Male
Status Offline
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
Forum Jump: