EternalWindows
基礎 / Windowsプログラミング

C言語を通じてプログラミングを学習した方は、おそらくある一つの疑問や不満を持っているのではないかと思われます。 それは、C言語によるプログラミングというものが黒いウインドウ(コンソール)に文字を出力するだけで、 画像の表示といったような高度な操作が全くできないではないかというものです。 確かに一般的なC言語の書籍では、画像の表示方法などを掲載することはないと思われますが、 それは書籍の内容を汎用的なものにしたいという意図であり、 決してC言語で画像を表示できないということを意味するわけではありません。 画像の表示方法というのはWindowsと他のOS間で異なるため、 このようなOS依存の技術を掲載するのではなく、 どのようなOSでも必要となる事項(文法や標準関数)を掲載することを主旨しているわけです。 しかし、私たちはWindowsというOSで動作するアプリケーションの開発を目的としていますから、 そのような汎用的な事項を理解するだけに留まってはいけません。 Windows固有の技術というものを理解し、これまでのコンソールプログラミングからWidowsプログラミングへシフト しなければならないのです。

一般にWindows上のアプリケーションは、コンソールアプリケーションとWindowsアプリケーションの2種類に分けることができます。 前者は先に述べたような黒いウインドウを表示するようなアプリケーションのことで、 多くの方はC言語によるプログラミングというものを コンソールアプリケーションを通じて学習していると思われます。

上図のような黒いウインドウはコンソールと呼ばれ、 プログラムはprintfやscanfといった標準関数を介すことにより、 コンソールへ文字の入出力を行いました。 このような環境はCUI(Character User Interface)と呼ばれ、 簡単に文字を出力できる利点を活かし、現在でも使われ続けています。 しかし、一般にユーザーが期待するのはWindowsアプリケーションであり、 以下のような独自のウインドウを表示するアプリケーションを操作します。

このような環境はGUI(Graphical User Interface)と呼ばれ、 ユーザーは表示されているメニューやボタンから、 そのアプリケーションがサポートする機能をマウス等で操作します。 これから私たちが作成していくアプリケーションも、 上記のようなWindowsアプリケーションとなります。

コンソールアプリケーションとWindowsアプリケーションの差異は、見た目だけに限らずプログラムの内容にも顕著に現れます。 たとえば、Windowsアプリケーションではprintfやscanfといった標準関数は、基本的に呼び出すことはありません。 これは、標準関数がコンソールへの命令を送る関数であるため、 コンソールを作成しないWindowsアプリケーションにとっては、意味をもたないからです。 Windowsアプリケーションが呼び出すのは、Windows APIと呼ばれる関数群であり、 これらの関数はWindowsというOSへ命令を送ることを可能としています。 この結果、Windowsアプリケーションはコンソールという枠に捉われることなく、 ウインドウの作成や画像の表示などを自由に行うことができるのです。

これまでの話からすると、Windowsアプリケーションを開発するには 従来のコンソールアプリケーションの知識が役に立たないのではないかと 思われるかもしれませんが、そのようなことは全くありません。 本サイトが対象としているのはC言語によるWidowsプログラミングですから、 コンソールアプリケーションを通じて取得したC言語の文法(if文やfor文、構造体)は、 Widowsプログラミングでも毎回のように用いることになります。 大きな違いは、WidowsプログラミングではWindows APIを呼び出すということと、 開発環境の設定をWindowsアプリケーションに対応させなければならないという2点です。 この2つ目の点については専用のページにて説明されているので、 詳しくはそちらを参照してください。 次節からは、実際にC言語によるWidowsプログラミングを体験していきます。


戻る