>> WINAPI入門トップに戻る

WINAPIとは

まずはWINAPIとは何かを説明します。
WINAPIとはWindows上でウィンドウを表示したり、文字や画像を描画したり、
音楽を再生・録音、動画の再生等を実現するためのインターフェースです。
インターフェースというと分かりにくいかもしれませんが、
関数の集まりだと思ってください。
その関数を使いこなすだけで、Windowアプリケーションが作れるようになります。

Windowアプリケーションを作るには、今までのコンソールアプリケーションの手順とは
ちょっと違う手順で以下のように作ります。

①Visual C++を起動し、新規作成→プロジェクトを選択して下さい。
②「win32プロジェクト」を選択し次へ。
③アプリケーションの種類で「Windowsアプリケーション」にチェック。
④空のプロジェクトを選択し、完了をクリックして下さい。

以上で、Windowアプリケーション作成の準備は完了です。
いつものようにソースファイルを新規で作成し、そこにコードを書いていくだけです。

次にコード部分の説明に入ります。
WINAPIを使うには、windows.hのヘッダファイルを
インクルードする必要があります。
Windowアプリケーションを作るためには大きく分けて以下の三つの処理を書く必要があります。

①ウィンドウの作成
②メッセージループ
③ウィンドウプロシージャの定義

ウィンドウの作成については言うまでもありませんね。
Windowsがないと文字や画像も表示できませんし、
何をするにもまずウィンドウが必要になります。
ウィンドウの作成については以下の手順を踏む必要があります。

①ウィンドウクラスの登録
②ウィンドウの作成

この二つです。
次回の講座で詳しく説明します。

次にメッセージループです。
Windowsの処理というのは、基本的にメッセージをやり取りすることで処理が行われています。
例えば、ボタンを押すとき、ウィンドウを閉じるとき、描画するとき、など色々な処理がありますが、
ほぼ全ての動作についてメッセージが発生しています。
そのメッセージをウィンドウプロシージャというもので制御し、
私達が普段ウィンドウ上で見ていることが実現しているのです。
そのメッセージを受け取って、ウィンドウプロシージャへ渡して処理させてやるのが、
このメッセージループの仕事になります。

最後にウィンドウプロシージャの定義です。
先程も言いましたが、渡されたメッセージを指定した処理に応じて処理し、
正しく動作させるための関数だと思ってください。
実際、見た目もただの関数です。

この三つがWindowアプリケーションを作る上で必要になります。

また、WINAPIには専用の型がいくつかあります。
BYTE型
HRESULT型
LRESULT型
UINT型
など沢山有りますが、これらはただ名前をtypedefで変えられてるだけであって、
元の型はunsigned char型だったり、LONG型だったりします。
ですので、あまり深く考えずに、「この関数はこの名前の型を使うのか」と、
単純に名前だけ覚えていってくれればいいです。
興味がある方は、元は何型なのか調べてみてください。

コンソールアプリケーションでは、プログラムにはmain関数が必要でしたが、
Windowアプリケーションでは、WinMain関数を使って記述します。

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd){
~ここに処理を書く~
{

これがWinMain関数になります。
WinMainの前についている、WINAPIはwinapiを呼び出すための規約です。
第一引数は、インスタンスハンドルと言って、このプログラムを識別する為のハンドルです。
第二引数は現在使われていません。
第三引数はコマンドライン引数です。
第四引数はウィンドウの表示状態の指定が入っています。

この中で使うのはインスタンスハンドルぐらいですので、
最初は深く考えずにコピーして使ってもらって構いません。

今回はここまで。
次回はWindowの作成まで説明します。


>> 【ウィンドウの作成】に進む
>> WINAPI入門トップに戻る
●更新履歴
2016/08/16 Java入門ページにページを幾つか追加
2016/04/08 Java入門ページ作成
2016/03/09 メニューレイアウト変更。ブラウザキャッシュのクリアをお願い致します。
2016/03/09 PDOトランザクション、自動コミットモードをオフ追加
2016/03/09 PDO 例外処理 try catch追加
2016/03/09 PDO update文実行追加
2016/03/09 PDO delete文実行追加
2016/03/09 PDO insert文実行追加
2016/03/09 PDO selectでデータを取得、fetchAll、queryメソッド追加
2016/03/09 PDO bindValueとbindParamの違い追加
2016/03/09 PDO prepare プリペアドステートメントの使い方追加
2016/03/04 ソースコードをクリップボードにコピーする機能を追加
2016/03/04 C言語、C++のページのソースコードを一部修正
2014/01/31 C言語関数一覧ページに11ページほど追加
2014/01/31 C言語関数一覧ページに30ページほど追加
2014/01/30 C言語関数一覧ページ作成中
2013/07/01 レイアウト変更に伴いブラウザキャッシュのクリアをお願いします。
2013/07/01 MySQL入門ページ作成
2013/07/01 PHP入門ページにSQLite学習項目追加
2013/06/25 ドメイン変更、レイアウトを一部変更
2013/03/14 レイアウトを一部変更
2012/08/13 C言語よくある課題・宿題ページ開設!
2012/08/13 シューティングゲーム作成第33章追加!
2012/08/11 ドメイン変更&サーバ移設完了
2012/04/21 シューティングゲームプログラミング第2,3章の内容を修正
2012/04/19 シューティングゲームプログラミング第2章の内容を修正
2012/04/03 Googleカスタム検索を設置!
2012/04/03 シューティングゲームプログラミング第32章追加!
2012/04/03 シューティングゲームプログラミング第31章追加!
2012/03/31 サイトをリニューアルしました!
2012/03/25 シューティングゲームプログラミング第30章追加!
2012/03/19 シューティングゲームプログラミング第29章追加!
2012/03/16 シューティングゲームプログラミング第28章追加!
2012/02/27 シューティングゲームプログラミング第27章追加!
2012/02/03 シューティングゲームプログラミング第26章追加!
2012/01/31 シューティングゲームプログラミング第25章追加!
2012/01/20 シューティングゲームプログラミング第23,24章追加!
2012/01/11 シューティングゲームプログラミング第22章追加!
2012/01/05 トップページ、ゲームプログラミング関連のトップページのデザインを変更
2012/01/04 シューティングゲームプログラミング第21章追加!
2012/01/01 シューティングゲームプログラミング第20章追加!
2011/12/25 シューティングゲームプログラミング第19章追加!
2011/12/22 シューティングゲームプログラミング第18章追加!
2011/12/18 シューティングゲームプログラミング第17章追加!
2011/12/17 シューティングゲームプログラミングページOPEN!
2011/11/21 ゲームプログラミングページOPEN!
2011/11/21 サイトデザインを大幅に変更
2011/11/17 TOPページのデザインを変更。相互リンクページに、複数サイト追加。
2011/11/06 WINAPI学習ページ(33~36章)追加
2011/11/05 WINAPI学習ページ(20~32章)追加
2011/10/27 WINAPI学習ページ(14~19章)追加
2011/10/21 WINAPI学習ページ(13章)追加
2011/10/21 サイトマップ、連絡ページ追加
2011/10/17 WINAPI学習ページ(6~11章)追加
2011/10/16 WINAPI学習ページ(1~5章)追加
2011/10/13 全体のレイアウト変更
2011/10/07 PHP学習ページ(8~11章)追加
2011/10/06 PHP学習ページ(1~7章)作成
2011/10/06 JavaScriptリファレンスページ作成
2011/10/05 C言語学習ページ発展編(10~14章)追加
2011/10/04 C言語学習ページ発展編(1~9章)追加。
2011/10/03 HTML/CSSリファレンスのページ追加。(個々の詳細ページは作成中)
2011/09/30 HTML学習ページ(8章)追加
2011/09/29 JavaScript学習ページ(12~17章)追加
2011/09/28 JavaScript学習ページ(1~11章)追加
2011/09/27 HTML学習ページ(4~7章)追加
2011/09/26 C言語学習ページ(27章)追加、C++学習ページ(17章)、HTML学習ページ(1~3章)追加
2011/09/25 C言語学習ページ(23~26章)を追加
2011/09/24 C++学習ページ(9~16章)追加
2011/09/23 C++学習ページ(3~8章)追加
2011/09/22 C言語の学習ページ(22章)とC++学習ページ(1~2章)追加
2011/09/21 C言語の学習ページ(15章~21章)を追加
2011/09/20 C言語の学習ページ(10章~14章)を追加
2011/09/19 サイト作成(随時更新予定)