第57章 Windowsプログラミングへの布石


さて、この章まででずいぶんいろいろなことをやってきました。 今回は、ちょっと今までとは毛色を変えて「Windowsプログラミングへの 布石」という偉そうな題名でちょっとだけWindowsプログラミングの 解説をします。実際にウィンドウを作るには準備不足なので メッセージ・ボックスを単独で作ってみます。 処理系にSDKがインストールされている必要があります。 ここでは、VC++4.2で解説します。従ってできあがるプログラムは 32ビットでWindows3.1では動きません。

まず、メニューバーのファイル(F)、新規作成(N)...を選択します。 そして、プロジェクトワークスペースをクリックします。 そうすると、新規ワークスペースプロジェクトのダイアログ・ボックスが 出てきます。タイプは、Applicationを選択します。 プロジェクトワークスペース名(N)に適当な名前を付けます。 あとは、作成ボタンを押せば準備完了です。

次に、メニューバーからファイル(F)、新規作成(N)を選択し、 「テキストファイル」をクリックします。

ここまで、できたら次のように入力して下さい。

#include <windows.h> int WINAPI WinMain( HANDLE hInstance , HANDLE hPrevInstance , LPSTR lpCmdLine , int nCmdShow ) { MessageBox(NULL, (LPCSTR)"メッセージ・ボックスのテストです。", (LPCSTR)"猫でもわかるプログラミング", MB_OK); return 0; }

入力したら、ファイル(F)、名前を付けて保存(A)で保存して下さい。 次に、このソースファイルをプロジェクトに挿入します。 これは、メニューバーの挿入(I)、プロジェクトにファイルを追加(I)で 行います。 次に、ビルドボタンを押せばプログラムが完成します。 できたプログラムを実行するには、ビルド(B)、実行(X)とやって下さい。

少し、このプログラムについて解説します。 WindowsのプログラムではWinMain関数を使います。 この関数の前についているWINAPIとか、引数の型名らしい HANDLEなどについては今は、無視して下さい。 MessageBox関数については、ヘルプに

int MessageBox( HWND hWnd, // handle of owner window LPCTSTR lpText, // address of text in message box LPCTSTR lpCaption, // address of title of message box UINT uType // style of message box );

と書いてあります。最初の引数はオーナー・ウィンドウの ハンドルですがウィンドウを作っていないのでNULLです。 2番目の引数はメッセージボックスに書きこまれる テキストのアドレスです。要するにダブルクォーテーションで 囲まれた文字列です。3番目はタイトルです。 4番目は、メッセージボックスについている ボタンの種類を指定します。MB_OKなら「OK」ボタンが つきます。MB_OKCANCELなら「OK」と「CANCEL」ボタンが付きます。 この関数の戻り値によりどのボタンが押されたかを知ることができます。 IDOKなら「OK」ボタン、IDCANCELなら「CANCEL」ボタンという具合です。

プログラムを実行すると左のようなメッセージボックスが 現れます。OKボタンを押すと終了します。 ただこれだけのプログラムですが立派な32ビット ウィンドウズ・プログラムです。

細かいことは、あとからゆっくりするとして この程度なら何となくプログラムが書けそうですね。 メッセージ・ボックスだけを使ってもう少し 複雑なこともできます。

#include <windows.h> #include <time.h> #include <stdio.h> int WINAPI WinMain( HANDLE hInstance , HANDLE hPrevInstance , LPSTR lpCmdLine , int nCmdShow ) { int hr, mn, sec, ret; char str[256]; char *str_org = "ただいま%3d時%3d分%3d秒です"; struct tm *mytime; time_t long_time; while(1) { time(&long_time); mytime = localtime(&long_time); hr = mytime->tm_hour; mn = mytime->tm_min; sec = mytime->tm_sec; sprintf(str, str_org, hr, mn, sec); ret = MessageBox(NULL, (LPCSTR)str, (LPCSTR)"猫でもわかるプログラミング", MB_OKCANCEL); if (ret == IDCANCEL) break; } return 0; }

現在時刻の取得はC言語編第55章などでやっているので もうわかりますね。メッセージボックスに「OK」と「CANCEL」の2つの ボタンを表示して「OK」ボタンを押すと新しい時刻を表示します。 「CANCEL」ボタンを押すと終了します。 ソースファイルを眺めているとsprintf関数の使い方は何となくわかりますね。 printfから類推できますね。

キャンセルボタンを付けると右上のバッテンマークの色が濃くなって このボタンを押すことが出きるようになりました。キャンセル ボタンを押す代わりにこのバッテンマークをクリックしても 同じ動作をします。

さて、今回はWindowsプログラミングのほんのさわりを やってみました。これでわかったことは、

訳のわからんデータ型がやたら出てくる

ことですね。それとやたら長い名前の関数とか 変な名前の変数とかが出てきます。 Windowsのプログラムをやりたい人は、今のうちに 英文タイプの練習をしておきましょう。


[Index][総合Index] [Previous Chapter] [Next Chapter]

Update Mar/07/1997 By Y.Kumei
当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。