我正在使用OpenWatcom(用于定位16位DOS应用程序的Windows托管编译器)进行一些嵌入式DOS开发。目标硬件有一个24x16字符的屏幕(据说可以在某种程度上模拟CGA),我正试图让我的Windows 7机器上的CMD.EXE窗口保持固定的24x16,没有任何滚动条。
我已经使用了窗口属性和MODE CON: COLS=24 LINES=16
来获取我想要的屏幕尺寸,但是只要我的应用程序使用INT10 BIOS调用来清除屏幕,模式就会跳回到80x24。 / p>
以下是我用来清除屏幕的内容:
void cls(void)
{
// Clear screen and reset cursor position to (0,0)
union REGS regs;
regs.w.cx = 0; // Upper left
regs.w.dx = 0x1018; // Lower right (of 16x24)
regs.h.bh = 7; // Blank lines attribute (white text on black)
regs.w.ax = 0x0600; // 06 = scroll up, AL=00 to clear
int86( 0x10, ®s, ®s );
}
有什么想法吗?我仍然可以在80x24(或80x25)下进行测试,但它并不完全像24x16模式。
答案 0 :(得分:1)
我知道,调用system()并不优雅(见下文),但这是一个实用的可能性:
#ifdef deployed
int86( 0x10, ®s, ®s );
#endif
#ifndef deployed
system("MODE CON: COLS=24 LINES=16"); // includes a clear-screen
#endif
如果您不想使用system(),可以在调用中断0x10后使用consoleHandle更改控制台窗口。以下是更改buffersize和Window-dimensions的函数:
http://msdn.microsoft.com/en-us/library/ms687089%28VS.85%29.aspx