ウィンドウ・プロパティの参照

SETWINDOWCONFIGGETWINDOWCONFIG は,現在の仮想ウィンドウ・プロパティの設定と取得を行います。SETWINDOWCONFIG が設定する仮想ウィンドウ・プロパティは,その装置のテキストとグラフィックスの最大値を含んでいます。SETWSIZEQQ ルーチンは,通常は仮想ウィンドウよりも小さい可視ウィンドウのプロパティを設定します。

仮想ウィンドウ (SETWINDOWCONFIG) の大きさが可視ウィンドウ (SETWSIZEQQ) の大きさよりも大きい場合,仮想ウィンドウ中のすべてのテキストとグラフィックスを表示することができるように,スクロールバーが自動的に提供されます。

これらの仮想ウィンドウ・プロパティは,DFLIB.MOD に定義されている windowconfig 構造型に格納されています。これは次のパラメタを含んでいます。

	TYPE windowconfig
	  INTEGER(2) numxpixels			! Number of pixels on x-axis.
	  INTEGER(2) numypixels			! Number of pixels on y-axis.
	  INTEGER(2) numtextcols		! Number of text columns available.
	  INTEGER(2) numtextrows		! Number of scrollable text lines available.
	  INTEGER(2) numcolors			! Number of color indexes.
	  INTEGER(4) fontsize			! Size of default font. Set to
						! QWIN$EXTENDFONT when using multibyte
						! characters, in which case
						! extendfontsize sets the font size.
	  CHARACTER(80) title			! Window title, where title is a C string.
	  INTEGER(2) bitsperpixel		! Number of bits per pixel. This value
						! is calculated by the system and is an
						! output-only parameter.
						! The next three parameters support multibyte
						! character sets (such as Japanese)
	  CHARACTER(32) extendfontname		! Any non-proportionally spaced font
						! available on the system.
	  INTEGER(4) extendfontsize		! Takes same values as fontsize, but
						! used for multiple-byte character sets
						! when fontsize set to QWIN$EXTENDFONT.
	  INTEGER(4) extendfontattributes	! Font attributes such as bold and
						! italic for multibyte character sets.
	END TYPE windowconfig

SETWINDOWCONFIG を使って windowconfig 中の変数を -1 に設定すると,他に指定された欄値に基づいて,そのシステムで最も高い解像度が設定されます。ウィンドウの大きさに影響を与えるパラメタ (x および y ピクセルの数,行と列の数,およびフォントの大きさ) を指定すると,ウィンドウの実際の大きさを設定することができます。SETWINDOWCONFIG を呼び出さなかった場合,ウィンドウは最適な基本解像度と,8x16 のフォントの大きさを使用します。色の数は,使用しているビデオ・ドライバに依存します。次の例では,xy のピクセル数が指定されており,ウィンドウの行と列の数はシステムによって計算されます。

	USE DFLIB
	TYPE (windowconfig) wc
	LOGICAL status
	! Set the x & y pixels to 800X600 and font size to 8x12.
	wc%numxpixels  = 800			! pixels on x-axis, window width
	wc%numypixels  = 600			! pixels on y-axis, window height
	wc%numtextcols = -1			! -1 requests system default/calculation
	wc%numtextrows = -1
	wc%numcolors   = -1
	wc%title       = " "C
	wc%fontsize    = #0008000C		! Request 8x12 pixel fonts
	status         = SETWINDOWCONFIG(wc)

この例の説明:

要求されたフォントの大きさは,最も近い利用可能なフォントの大きさに一致させられます。一致した大きさが要求したものと異なる場合,一致した大きさがテキスト行数とテキスト列数を決定するのに使われます。

水平,垂直のスクロールバーが要求する大きさのため,スクロールバーが必要な (仮想ウィンドウの大きさが可視ウィンドウの大きさを超える) 場合,アプリケーション情報を表示するために必要な行数と列数よりも 1, 2 行大きい行数と列数を設定する必要があるかもしれません。

要求された構成を設定することができない場合,SETWINDOWCONFIG.FALSE. を返し,要求された構成に最も近い正常に動作するパラメタを計算します。SETWINDOWCONFIG をもう一度呼び出すと,これらの値を設定することができます。

	IF(.NOT.status) status = SETWINDOWCONFIG(wc)

例としては,QuickWin サンプルの Cleanwin を参照してください。

SETWINDOWCONFIG を使ったグラフィックス・モードの設定についての詳細は,「グラフィックス・モードの設定」を参照してください。

SETWINDOWCONFIG のようなルーチンは,現在フォーカスがあるウィンドウで動作します。複数のウィンドウを開くことができます。しかし,その中のどのウィンドウがフォーカスを得るのかを決定する必要があります。単一フレーム・ウィンドウと 1 個以上の子ウィンドウがあります。ウィンドウが開かれた直後,このウィンドウとの I/O の後,FOCUSQQ を使う時,このウィンドウにフォーカスがあります。ウィンドウ内でマウスをクリックすると,そのウィンドウにフォーカスが移ります。

たとえば,装置番号 10 と結合したウィンドウの特性を設定するには,OPEN 文,この後に続いて宣言されるこの装置に対する READ または WRITE 文,または FOCUSQQ のいずれかでフォーカスを取る必要があります。OPEN 文を使った例を次に示します。

	open(unit=10, file='user')
	result = setwindowconfig(wc)

装置 10 を開いた後,この装置に対して READ または WRITE 文でフォーカスを得ることができます。次に例を示します。

	write(10,*) "Hello, this is unit 10"

または,FOCUSQQ を使います。

	result = focusqq(10)
	result = setwindowconfig(wc)

ウィンドウのフォーカスを得ることに関する詳細は,「ウィンドウにフォーカスを与え,ウィンドウを活動状態にする方法」を参照してください。