コントロール指標の指定

ダイアログ・コントロール指標の特定の型 (整数,論理,文字,またはサブルーチン) に 1 つの可能性しかない場合,引数並び中でコントロール指標名を指定する必要はありません。たとえば,スタティックテキスト・コントロールの IDC_TEXT_CELSIUS 値は,次のどちらの文でも設定することができます。

	retlog = DLGSETCHAR (dlg, IDC_TEXT_CELSIUS, "New Celsius Title",  &
	&			DLG_TITLE)
	retlog = DLGSET (dlg, IDC_TEXT_CELSIUS, "New Celsius Title")

スタティックテキスト・コントロールには文字指標が 1 つしかないので,コントロール指標 DLG_TITLE は不要です。総称関数 DLGSET は,引数の型,この例では CHARACTER に基づいて,変更するコントロール指標を選択します。

指標の個々の型について,総称関数 DLGSET か,その型の具体的な DLGSET 関数,すなわち DLGSETINTDLGSETLOG,または DLGSETCHAR を使用することができます。

たとえば,スタティックテキスト・コントロール IDC_TEXT_CELSIUS を無効にするには,DLGSET または DLGSETLOG を使って,その論理値を .FALSE. に設定します。

	retlog = DLGSETLOG (dlg, IDC_TEXT_CELSIUS, .FALSE., DLG_ENABLE)
	retlog = DLGSET (dlg, IDC_TEXT_CELSIUS, .FALSE., DLG_ENABLE)

どちらの場合でも,スタティックテキスト・コントロールに論理コントロール指標は 1 つしかないので,コントロール指標 DLG_ENABLE を省略することができます。

特定のコントロール指標値は,DLGGET 関数の DLGGETDLGGETINTDLGGETLOG,および DLGGETCHAR を使って問い合わせることができます。次に例を示します。

	INTEGER current_val
	LOGICAL are_you_enabled
	retlog = DLGGET (dlg, IDC_SCROLLBAR_TEMPERATURE, current_val,	&
	&		DLG_RANGEMAX)
	retlog = DLGGET (dlg, IDC_SCROLLBAR_TEMPERATURE, are_you_enabled,	&
	&		DLG_ENABLE)

このコードは,スクロールバーの最大範囲と有効状態を返します。問い合わせる値を格納するために宣言した引数 (上の例では current_valare_you_enabled) は,取得する値と同じ型でなくてはなりません。DLGGETINTDLGGETCHAR などの具体的な DLGGET 関数を使用する場合,取得するコントロール指標値は適切な型でなくてはなりません。たとえば,DLGGETCHAR を使って整数値や論理値を取得することはできません。型の組み合わせが間違っていた場合,DLGGET 関数は .FALSE. を返します。外部コールバック・ルーチンの名前を問い合わせることはできません。

一般論として,総称関数の DLGSETDLGGET を使う方が,型固有の関数を使うよりも便利です。設定または取得する値の型に合った関数を使うという配慮が不要になるからです。DLGSETDLGGET は,渡された引数の型に基づいて,正しい操作を自動的に行います。