C言語でグラフィックス 目次へ 
 前へ 【3】グラフィックス・ウィンドウでの入力 次へ 

 コマンドプロンプト(DOS窓)からプログラムを実行すると、このウィンドウとは別にグラフィックス用のウィンドウ(GWウィンドウと表す)が開く。ここでは、GWウィンドウで入力する方法を学習する。

(1)キーボードによる入力(GWinput関数、GWketbrd関数)

◆サンプルプログラム 〔gr311.c〕
 入力用のダイアログを開き、キーボードから文字列を入力して、その文字列を描画する。

#include <GrWin.h>

int main(void)
{
    int     width = 640, height = 400;
    char    *pt = "入力した文字列(31文字以内)を描画します。";
    char    indata[32];    /* 入力データ用 */ 

    GWopen(0);
    GWsize(-5, &width, &height);
    GWsize(-3, NULL, NULL);
    GWvport(0.0, 0.0, (float)width / (float)height, 1.0);
    GWindow(0.0, 0.0, (float)width - 1.0, (float)height - 1.0);
    /* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= */
    GWclear(-1);
    GWputtxt(20.0, 380.0, pt);          /* 文字列描画 */
    GWinput("文字列入力", indata, 32);   /* 文字列入力(ダイアログ) */
    GWputtxt(20.0, 300.0, indata);      /* 文字列描画 */
    /* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= */
    GWquit();
    return 0;
}
int GWinput(char *タイトル, char *入力データ, int 文字列長);
ダイアログを表示して文字列を入力する。
・タイトルは、ダイアログのタイトルバーに表示する文字列を指定する。
・入力データは、入力した文字列を格納する領域を指定する。
・文字列長は、用意した文字列の領域の大きさを指定する。

※ 入力用のダイアログで31文字を超えて文字列を入力すると表示されない。


↓↓↓


◆サンプルプログラム 〔gr312.c〕
 入力用のダイアログから入力された文字列が配列にどのように格納されているかを確認する。確認は、配列に格納されている文字コードを16進数で表示する。

#include <GrWin.h>
#include <stdio.h>

int main(void)
{
    int     width = 640, height = 400;
    char    *pt = "入力した文字列(31文字以内)を描画します。";
    char    indata[32];
    int     n;    /* 確認用 */

    GWopen(0);
    GWsize(-5, &width, &height);
    GWsize(-3, NULL, NULL);
    GWvport(0.0, 0.0, (float)width / (float)height, 1.0);
    GWindow(0.0, 0.0, (float)width - 1.0, (float)height - 1.0);
    /* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= */
    GWclear(-1);
    GWputtxt(20.0, 380.0, pt);
    GWinput("文字列入力", indata, 32);
    GWputtxt(20.0, 300.0, indata);

    for(n = 0; n < 32; ++n)
        printf("%X ",indata[n]);    /* 確認用 */
    /* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= */
    GWquit();
    return 0;
}

 文字コードはコマンドプロンプト(DOS窓)に表示される。

C:\work>gr312 (←「abcdef」と入力した場合)
61 62 63 64 65 66 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
C:\work>gr312 (←「1234567890123456789012345678901」と入力した場合)
31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37
38 39 30 31 0
C:\work>gr312 (←「12345678901234567890123456789012」と入力した場合)
0 2 0 0 12 70 41 0 FFFFFFD9 46 41 0 0 0 0 0 FFFFFFD8 70 41 0 0 FFFFFFE0 FFFFFFFD
7F FFFFFF88 FFFFFFBD 41 0 1 0 0 0
C:\work>

 実行結果のように、文字列の末尾にはナル文字('\0')が格納される。用意した配列の領域を超えて文字列を入力するとでたらめな値が格納される。


 前へ 次へ 
 Copyright © 2005 Hiroshi Masuda 

 

 

inserted by FC2 system