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 |