日本語 Compaq OpenVMS
日本語画面管理ライブラリ
利用者の手引き


前へ 次へ 目次 索引



SMG$REMOVE_LINE
- Remove a Line from a Virtual Display

Remove a Line from a Virtual Display ルーチンは,SMG$DRAW_LINE または SMG$DRAW_RECTANGLEルーチンを使用して作成したラインを指定された仮想ディスプレイから削除します。

形式

SMG$REMOVE_LINE display-id ,start-row ,start-column ,end-row ,end-column


戻り値

OpenVMS 用法 cond_value
データ型 longword (unsigned)
アクセス write only
受け渡し方 by value



引数

display-id

OpenVMS 用法 identifier
データ型 longword (unsigned)
アクセス read only
受け渡し方 by reference


ラインを削除する仮想ディスプレイを指定します。 display-id 引数は,仮想ディスプレイ識別子を格納した符号なしロングワードのアドレスです。

この引数は SMG$CREATE_VIRTUAL_DISPLAY ルーチンで与えられます。

start-row

OpenVMS 用法 longword_signed
データ型 longword (signed)
アクセス read only
受け渡し方 by reference


ラインの削除を開始する行を指定します。start-row 引数は,行番号を格納した符号付きロングワードのアドレスです。

start-column

OpenVMS 用法 longword_signed
データ型 longword (signed)
アクセス read only
受け渡し方 by reference


ラインの削除を開始するカラムを指定します。 start-column 引数は,カラム番号を格納した符号付きロングワードのアドレスです。

水平線削除の場合で start-column 引数が全角文字の右半分上であった場合,残る左半分の部分は未定義文字になります。垂直線削除の場合で, start-column 引数が全角文字上にあった場合には,それぞれの残る部分は未定義文字になります。

end-row

OpenVMS 用法 longword_signed
データ型 longword (signed)
アクセス read only
受け渡し方 by reference


ラインの削除を終了する行を指定します。end-row 引数は,行番号を格納した符号付きロングワードのアドレスです。

end-column

OpenVMS 用法 longword_signed
データ型 longword (signed)
アクセス read only
受け渡し方 by reference


ラインの削除を終了するカラムを指定します。end-column 引数は,カラム番号を格納した符号付きロングワードのアドレスです。

水平線削除の場合で end-column 引数が全角文字の左半分上であった場合,残る右半分の部分は未定義文字になります。垂直線削除の場合で, end-column 引数が全角文字上にあった場合には,それぞれの残る部分は未定義文字になります。


説明

SMG$REMOVE_LINE ルーチンは,SMG$DRAW_LINE または SMG$DRAW_RECTANGLE ルーチンを使用して作成したラインを,指定された開始行/カラムから指定された終了行/カラムまで削除します。

このルーチンはユーザが指定したラインを消去しますが,ラインの交点にあるライン描画文字は残されます(ライン描画文字は漢字ターミナルのライン描画文字集合です。この文字集合を使用できない場合には,+,-,および | が使用されます)。

DEC漢字文字集合が使用されており,描画されたラインが全角文字に上にあった場合には,その全角文字の残りの部分は未定義文字になります。


戻される状態値

SS$_NORMAL 正常終了。
SMG$_DIALINNOT 斜めのラインは削除できません。
SMG$_INVCOL カラム番号が誤っています。指定されたカラムは仮想ディスプレイの外部です。
SMG$_INVROW 行番号が誤っています。指定された行は仮想ディスプレイの外部です。
SMG$_WRONUMARG 引数の数が誤っています。


SMG$REPAINT_SCREEN
- Repaint Current Pasteboar

Repaint Current Pasteboard ルーチンは,日本語 SMG ルーチンによるもの以外の入出力が実行された後,指定されたペーストボードを描き直します。

形式

SMG$REPAINT_SCREEN pasteboard-id


戻り値

OpenVMS 用法 cond_value
データ型 longword (unsigned)
アクセス write only
受け渡し方 by value



引数

pasteboard-id

OpenVMS 用法 identifier
データ型 longword (unsigned)
アクセス read only
受け渡し方 by reference


リペイントされるペーストボードを指定します。 pasteboard-id 引数は,ペーストボード識別子を格納した符号なしロングワードのアドレスです。


説明

SMG$REPAINT_SCREEN ルーチンは,指定されたペーストボードを描き直します。このルーチンは,外部エージェント(たとえば,ブロードキャスト・メッセージ)がペーストボードを乱したときに使用します。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVPAS_ID pasteboard-id 引数に誤りがあります。
SMG$_WRONUMARG 引数の数が誤っています。


#1

C+ 
C This DEC FORTRAN example program demonstrates 
C the use of SMG$REPAINT_SCREEN. 
C- 
 
        IMPLICIT INTEGER (A-Z) 
 
C+ 
C Create the virtual display by calling 
C SMG$CREATE_VIRTUAL_DISPLAY. To create 
C a border, we set BORDER = 1. No border 
C would be BORDER = 0. 
C- 
        INCLUDE '($SMGDEF)' 
        ROWS = 3 
        COLUMNS = 50 
        BORDER = 1 
 
        STATUS = SMG$CREATE_VIRTUAL_DISPLAY 
     1          (ROWS, COLUMNS, DISPLAY1, BORDER) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Create the pasteboard using SMG$CREATE_PASTEBOARD. 
C- 
 
        STATUS = SMG$CREATE_PASTEBOARD (PASTE1) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Put data in the virtual display by calling SMG$PUT_CHARS. 
C- 
 
        STATUS = SMG$PUT_CHARS ( DISPLAY1, 
     1       ' This virtual display has 3 rows and 50 columns.', 1, 1 ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
        STATUS = SMG$PUT_CHARS ( DISPLAY1, 
     1       ' This is a bordered virtual display.', 2, 1 ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
        STATUS = SMG$PUT_CHARS ( DISPLAY1, 
     1       ' SMG$PUT_CHARS puts data in this virtual display.', 3, 1 ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Call SMG$PASTE_VIRTUAL_DISPLAY to paste the virtual display. 
C- 
 
        STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 4, 15 ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Mess up the screen with some FORTRAN output. 
C- 
 
        WRITE (6,*) 'Mess up the screen.' 
        WRITE (6,*) 'More mess.' 
 
C+ 
C Call SMG$REPAINT_SCREEN to repaint the screen. 
C- 
 
        STATUS = SMG$REPAINT_SCREEN ( PASTE1 ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
        END 

SMG$REPAINT_SCREEN ルーチンを呼び出す前にこの FORTRAN プログラムが生成する出力は 図 8-37 に示すとおりです。

図 8-37 SMG$REPAINT_SCREEN ルーチンを呼び出す FORTRAN プログラムが作成する出力


SMG$REPAINT_SCREEN ルーチンを呼び出した後で生成される出力は 図 8-38 に示すとおりです。

図 8-38 SMG$REPAINT_SCREEN ルーチンを呼び出す FORTRAN プログラムが生成する出力



SMG$REPASTE_VIRTUAL_DISPLAY
- Repaste Virtual Display

Repaste Virtual Display ルーチンは,仮想ディスプレイをペーストボードの新しい位置に移動します。ペースト順序も変更されます。

形式

SMG$REPASTE_VIRTUAL_DISPLAY

display-id ,pasteboard-id ,pasteboard-row ,pasteboard-column [,top-display-id]


戻り値

OpenVMS 用法 cond_value
データ型 longword (unsigned)
アクセス write only
受け渡し方 by value



引数

display-id

OpenVMS 用法 identifier
データ型 longword (unsigned)
アクセス read only
受け渡し方 by reference


再ペーストする仮想ディスプレイを指定します。 display-id 引数は,仮想ディスプレイ識別子を格納した符号なしロングワードのアドレスです。

この引数は SMG$CREATE_VIRTUAL_DISPLAY ルーチンによって与えられます。

pasteboard-id

OpenVMS 用法 identifier
データ型 longword (unsigned)
アクセス read only
受け渡し方 by reference


仮想ディスプレイを再ペーストするペーストボードを指定します。 pasteboard-id 引数は,ペーストボード識別子を格納した符号なしロングワードのアドレスです。

この引数は SMG$CREATE_PASTEBOARD ルーチンによって与えられます。

pasteboard-row

OpenVMS 用法 longword_signed
データ型 longword (signed)
アクセス read only
受け渡し方 by reference


指定された仮想ディスプレイの位置を示すペーストボードの行番号を指定します。 pasteboard-row 引数は,ペーストボード行番号を格納した符号付きロングワードのアドレスです。

pasteboard-column

OpenVMS 用法 longword_signed
データ型 longword (signed)
アクセス read only
受け渡し方 by reference


指定された仮想ディスプレイの位置を示すペーストボード・カラム番号を指定します。pasteboard-column 引数は,ペーストボードのカラム番号を格納した符号付きロングワードのアドレスです。

top-display-id

OpenVMS 用法 identifier
データ型 longword (unsigned)
アクセス read only
受け渡し方 by reference


display-id 引数によって指定される仮想ディスプレイがペーストされるときに,その上になる仮想ディスプレイの識別子(省略可能)。 top-display-id 引数は,仮想ディスプレイの識別子を格納した符号なしロングワードのアドレスです。top-display-id 引数によって指定される仮想ディスプレイはすでにペーストされていなければなりません。


説明

SMG$REPASTE_VIRTUAL_DISPLAY ルーチンを使用すれば,仮想ディスプレイをペーストボードの新しい位置に移動できます。このルーチンは SMG$UNPASTE_VIRTUAL_DISPLAY ルーチンと SMG$PASTE_VIRTUAL_DISPLAY ルーチンを呼び出します。このルーチンを実行すると,ペースト順序も変更されます。再ペースト操作が終了するまで,画面は変更されません。

このルーチンを使用すると,仮想ディスプレイはペースト順序の一番上になります。ペースト順序を変更せずに,仮想ディスプレイを移動する場合には, SMG$MOVE_VIRTUAL_DISPLAY ルーチンを使用します。top-display-id 引数は省略可能であり,この引数を指定した場合には,SMG$REPASTE_VIRTUAL_DISPLAY ルーチンは,top-display-id 引数によって指定される仮想ディスプレイの下に,display-id 引数によって指定される仮想ディスプレイをペーストします。この場合,top-display-id 引数によって指定される仮想ディスプレイは,すでにペーストされていなければなりません。


戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_INVPAS_ID pasteboard-id 引数に誤りがあります。
SMG$_WRONUMARG 引数の数が誤っています。


#1

C+ 
C This DEC FORTRAN example program demonstrates the use of 
C SMG$REPASTE_VIRTUAL_DISPLAY and SMG$MOVE_VIRTUAL_DISPLAY. 
C- 
 
        IMPLICIT INTEGER (A-Z) 
 
C+ 
C Include the SMG definitions. In particular, we want SMG$M_BORDER. 
C- 
 
        INCLUDE '($SMGDEF)' 
 
C+ 
C Create a virtual display with a border by calling 
C SMG$CREATE_VIRTUAL_DISPLAY. 
C- 
 
        ROWS = 3 
        COLUMNS = 50 
 
        STATUS = SMG$CREATE_VIRTUAL_DISPLAY 
     1          (ROWS, COLUMNS, DISPLAY1, SMG$M_BORDER) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Call SMG$CREATE_PASTEBOARD to create the pasteboard. 
C- 
 
        STATUS = SMG$CREATE_PASTEBOARD (PASTE1) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Put data in the virtual display using SMG$PUT_CHARS. 
C- 
 
        STATUS = SMG$PUT_CHARS ( DISPLAY1, 
     1       ' This virtual display has 3 rows and 50 columns.', 1, 1 ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
        STATUS = SMG$PUT_CHARS ( DISPLAY1, 
     1       ' This is a bordered virtual display.', 2, 1 ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
        STATUS = SMG$PUT_CHARS ( DISPLAY1, 
     1       ' SMG$PUT_CHARS puts data in this virtual display.', 3, 1 ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Call SMG$PASTE_VIRTUAL_DISPLAY to paste the virtual display. 
C- 
 
        STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 4, 15 ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Move the virtual display by calling SMG$MOVE_VIRTUAL_DISPLAY. 
C- 
 
        STATUS = SMG$MOVE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 10, 5 ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Call SMG$REPASTE_VIRTUAL_DISPLAY to repaste the 
C original virtual display as it was. 
C- 
 
        STATUS = SMG$REPASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 4, 15 ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
        END 
 

SMG$MOVE_VIRTUAL_DISPLAY ルーチンを呼び出す前に,この FORTRAN プログラムが生成する出力は, 図 8-39 に示すとおりです。

図 8-39 SMG$MOVE_VIRTUAL_DISPLAY ルーチンを呼び出す前の出力


SMG$MOVE_VIRTUAL_DISPLAY ルーチンを呼び出した後の出力は, 図 8-40 に示すとおりです。

図 8-40 SMG$MOVE_VIRTUAL_DISPLAY ルーチンを呼び出した後に表示される出力


図 8-41 は,SMG$REPASTE_VIRTUAL_DISPLAY ルーチンを呼び出した後に表示される最終的な出力を示しています。

図 8-41 SMG$REPASTE_VIRTUAL_DISPLAY ルーチンを呼び出した後に表示される出力



前へ 次へ 目次 索引