本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[MSC]98版 _setwritemode 関数の障害

文書番号: 402044

最終更新日: 1999/08/19


この資料は以下の製品について記述したものです。


この記事は、以前は次の ID で公開されていました: JP402044

概要

この資料は、NEC PC-98 シリーズ用の MS-DOS 用 グラフィックライブラリの
_setwritemode 関数による不正な描画について以下の資料で紹介された内容をまとめ、 説明したものです。


402043 : [MSC] _setwritemode(_GXOR) の時、円の描画が不正
402050 : [MSC] _setwritemode の GXOR で線の描画が正しく行われないことがある。
402053 : [MSC] 同じ座標で斜線の再描画を行うと斜線が残る問題

詳細

  1. C 6.0 において変更直後の描画では論理描画モードがに完全には有効ではあり ません。
  2. C/C++ 7.0A を除く各バージョンにおいて、デフォルト(_setwritemode 関数 実行前)および _setwritemode(_GPSET) の設定を行うと、直線の描画の際、 他の論理描画モードによる線とパターンが異なるため、正しい論理描画が行わ れない場合があります。
  3. 上記の各製品において _setwritemode(_GXOR) の設定を行うと _ellipse( _GBORDER,...) にて描画された円の四隅が欠けます。円周を 大きくすると、欠ける位置が変わり、欠ける場所も増えます。

再現プログラム

  #include <stdio.h>
  #include <conio.h>
  #include <graph.h>
  void main( void )
  {
      unsigned short i=0,j=0;
      char *mod[5] = {"default","GOR","GPRESET","GPSET","GXOR"};
      char mnum[5] = {0,0,2,3,4};
      _setvideomode( _98RESS16COLOR );
          _settextposition( 1, i*14 );
          _outtext( mod[i] );
          _moveto( j   ,  50 );
          _lineto( j+50, 101 );
          _lineto( j+100,152 );
          _ellipse( _GBORDER, j, 170, j+100, 270);
      for( i=1; i<5; i++ ){
          j = i*112;
          _setwritemode( mnum[i] );
          _settextposition( 1,i*14 );
          _outtext( mod[i] );
          _moveto( j   ,  50 );
          _lineto( j+ 50,101 );
          _lineto( j+100,152 );
          _ellipse( _GBORDER, j, 170, j+100, 270);
      }
      getch();
      _setvideomode( _DEFAULTMODE );
  }

原因

MS-DOS 用グラフィックライブラリ _setwritemode 関数の障害です。

詳細

  • Visual C++ は、米国 Microsoft Corporation の商標です。

Keywords: C6 C7 KBBUG VC10 VC15 KB402044
Technology: kbAudDeveloper kbCCompPDS600DOS kbCCompSearch kbvc150 kbVCsearch kbZNotKeyword3 kbZNotKeyword8

inserted by FC2 system