2011-01-10 9 views
1

OpenWatcom(16ビットDOSアプリケーションを対象とするWindowsホスティングコンパイラ)で組み込みDOS開発を行っています。ターゲットハードウェアは24x16文字のスクリーン(CGAをある程度エミュレートしている)を持っています。私はWindows 7マシンのCMD.EXEウィンドウをスクロールバーなしで固定の24x16に留まろうとしています。Windows 7のコマンドウィンドウで埋め込みDOSアプリケーションをテストする際の画面サイズを小さくする

ウィンドウのプロパティとMODE CON: COLS=24 LINES=16の両方を使って私が望む画面サイズにしましたが、アプリケーションがINT10 BIOSコールを使用して画面をクリアするとすぐにモードが80x24に戻ります。

ここで私は、画面をクリアするために使用しているものです:

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, &regs, &regs); 
} 

任意のアイデア?私はまだ80x24(または80x25)でテストを行うことができますが、24x16モードのように完全に動作するわけではありません。私が知っている

答えて

1

、呼び出しシステムは、()(下記参照)エレガントではありませんが、これは実用的なpossiblityです:

#ifdef deployed 
int86(0x10, &regs, &regs); 
#endif 
#ifndef deployed 
system("MODE CON: COLS=24 LINES=16"); // includes a clear-screen 
#endif 

あなたがシステムを(使用したくない場合)、あなたは変更するconsoleHandleを使用することができますあなたの呼び出しの後で0x10の割り込みの後にconsole-windowを返します。ここでBUFFERSIZEとウィンドウ・寸法を変更するための機能である:

http://msdn.microsoft.com/en-us/library/ms687089%28VS.85%29.aspx