● サンプルプログラム
winctrl
winctrl フォルダにあるプログラムは、コンソールアプリケーションでグラフィックを描画する(サンプルプログラムのための)サブルーチンです。Sample4 と Sample6 で使用します。
このプログラム自体は fixed X を使用しません。

- 関数StartWindow を呼び出すと、ウインドウと描画用のスレッドを生成します。その後、メインスレッドはウインドウのメッセージ処理を行い続け、ウインドウを閉じるとリソースの解放を行い、処理を呼び出し元に返します。
- 描画用スレッドは関数subthreadproc を通して、関数StartWindow 呼び出し時に指定したコールバック関数を呼び出します。コールバック関数内には計算処理、描画処理を記述します。
- メインスレッドは、ウインドウが終了するとイベントオブジェクトをシグナル状態にし、描画用スレッドが終了するのを待ちます。また、描画用スレッドは、コールバック関数から戻ると終了します。
コールバック関数は、イベントがシグナル状態になったら処理を停止し、関数を終了させてください。また、シグナル状態にならない内に描画が完了したら、そのままコールバック関数を終了させてください。
- コールバックからウインドウを終了させる場合は、ウインドウに WM_DESTROY をポストしてから、コールバック関数を終了させてください。
引数等の細かな点は、winctrl フォルダ内にある winctrl.h と winctrl.c 、Sample4 やSample6 の実演プログラムを参照してください。
描画関数
描画には専用の関数を使用します。この関数は winctrl.c にあります。
- 関数wc_ChangePen
指定色でペンオブジェクトを作成し、描画先に関連付けます(CreatePen 、SelectObject 、DeleteObject)。
- 関数wc_SetPixel
指定位置に指定色の点を描画します(SetPixel)。
- 関数wc_MoveTo
指定位置に描画のカレントポジションを移動します(MoveToEx)。
- 関数wc_LineTo
描画のカレントポジションから指定位置まで、現在のペンオブジェクトで線を引きます(LineTo)。
- 関数wc_CopyPat
指定位置のイメージをコピーします(StretchBlt)。拡大・収縮機能があり、座標に負符号を付けるとイメージが反転します。