「C言語 ポインタ完全制覇 第2版」サンプルプログラム X-Draw

このページは、拙著「C言語 ポインタ完全制覇 第2版」のサンプルプログラム「X-Draw」のページです。

概要

X-Drawは、ポインタ完全制覇第2版の「5.2 ケーススタディ2:ドローツールのデータ構造」で扱ったドローツールです。

本の中では、データ構造の検討のみを行い、shape.hというヘッダファイルを作成していますが、このページでは、それを元にした実際に動作するプログラムを配布します。

Windows専用です。画面描画にはGDI(Graphics Device Interface)を使用しています(今時GDI? というのはもっともですが、それを言うなら今時C? でもありますし)。

X-Drawの画面

X-Drawの画面はこんな感じです。

ダウンロードとコンパイル

ソースのダウンロードはこちらから。

xdraw.zip

コンパイラにはgccを使用しています。リンカにld、Windowsのリソースコンパイルのためにwindresが必要なので、私はMinGWを使用しています。

上記のコマンドが揃っていれば、展開したファイルのトップにあるバッチファイルbuild.batを実行することで、コンパイル可能です。実行形式として、xdraw.exeが生成されます。

実行するとコマンドプロンプトが表示されますが、これは、printf()でデバッグライト等入れるのを容易にするためです。不要な場合は、build.batの末尾のオプション「-console」を外してください。

使い方

上部のボタンの機能は以下の通りです。

選択ボタン。このボタンをクリックすると「選択モード」になり、マウスで図形をクリックするか、ドラッグして矩形で囲むことで図形を選択できます。Ctrlキーを押しながらクリックすると、複数選択も可能です。
図形を選択した状態でドラッグすることで、図形を移動できます。
直線描画ボタン。このボタンをクリックすると「直線描画モード」になり、マウスのドラッグで直線を引くことができます。
ポリライン変形ボタン。このボタンをクリックすると「ポリライン変形モード」になります。このモードでは、既存のポリライン(折れ線)の頂点をドラッグすることで頂点の移動、ポリラインの辺をドラッグすることで頂点の追加、頂点で右クリックすることで頂点の削除ができます。
長方形描画ボタン。このボタンをクリックすると「長方形描画モード」になり、マウスのドラッグで長方形を描画できます。
楕円描画ボタン。このボタンをクリックすると「楕円描画モード」になり、マウスのドラッグで楕円を描画できます。
塗りつぶし長方形描画ボタン。このボタンをクリックすると「塗りつぶし長方形描画モード」になり、マウスのドラッグで中を塗りつぶした長方形を描画できます。
塗りつぶし楕円描画ボタン。このボタンをクリックすると「塗りつぶし楕円描画モード」になり、マウスのドラッグで中を塗りつぶした楕円を描画できます。
線色設定ボタン。このボタンをクリックすると、色選択のダイアログが表示されます。

これで色を選択し、「OK」をクリックすることで、以後描画する直線、長方形、楕円の線色を変更できます。
塗りつぶし色設定ボタン。このボタンをクリックすると、色選択のダイアログが表示されます。色を選択し、「OK」をクリックすることで、以後描画する塗りつぶし長方形、塗りつぶし楕円の塗りつぶしの色を変更できます。
削除ボタン。図形を選択後このボタンをクリックすると、選択した図形が削除されます。
グループ化ボタン。図形を選択後このボタンをクリックすると、選択した図形がグループ化されます。
グループ解除ボタン。グループ化された図形を選択後このボタンをクリックすると、グループが解除されます。
前面移動ボタン。図形を選択後このボタンをクリックすると、選択した図形が前面に移動します。
背面移動ボタン。図形を選択後このボタンをクリックすると、選択した図形が背面に移動します。

プログラムについて

このプログラムは、以下のような構成になっています。

DRWとGUIはディレクトリを分けています。

以下がファイル構成です。「プライベートヘッダファイル」「パブリックヘッダファイル」という言葉については、本を参照してください。