- 最小のWINDOWSプログラミング -




まずはじめに…
私は素人でありここに書いてある事が全て正しいとは限りません。
参考書を読んだり、サイトやMSDNを調べたりしながら製作しています。
私のプログラミングのもっとーは書いて、動かして覚えるです。(^^;
ものすごーく初歩的なことからやっていきますので全く分からない初心者の方でもある程度出切るようになると思います
ここを見てVC++でWindowsプログラムをやってみようと思う物好きな方は一緒に勉強していきましょう。(^^;


1回目は最小のWindowsプログラミングです。

CやC++言語がmain関数が1つ必要なように VC++でWindowsプログラムを組むためには WinMain関数が1つ必要です。
ここからWindowsプログラムが始まります。
WinMain関数は最初の初期化処理を行う関数です。
WinMain関数を使用する為にはwindows.hをインクルードする必要があります。



□ MSDNよりWinMainの引用 □

 int WINAPI WinMain(
   HINSTANCE hInstance,
   HINSTANCE hPrevInstance,
   LPSTR lpCmdLine,
   int nCmdShow
 );

  ・hInstanceはアプリケーションのインスタンスハンドル
  ・hPrevInstanceはアプリケーションの前のインスタンスのハンドル
  ・lpCmdLineはコマンドラインが格納された、NULL で終わる文字列へのポインタ
  ・nCmdShowはウィンドウをどのように表示するかの指定
  ・戻り値は関数が WM_QUIT メッセージを受け取って終了したときは、
   メッセージの wParam パラメータが持つ終了コード


hInstanceは起動プログラムの名前のような物です。

hPrevInstanceは詳しくは分かりませんが、同一アプリの多重起動のチェック等に関係するようです。
MSDNによると常にNULLになるようです。

lpCmdLineは説明する自信が無いので割愛します。(--

nCmdShowはウインドウの表示設定で、以下のパラメータを設定します。

・SW_HIDE
・SW_MINIMIZE
・SW_RESTORE
・SW_SHOW
・SW_SHOWMAXIMIZED
・SW_SHOWMINIMIZED
・SW_SHOWMINNOACTIVE
・SW_SHOWNA
・SW_SHOWNOACTIVATE
・SW_SHOWNORMAL

詳細はMSDN等で調べてみてください。






≪ Win32 Application 空プロジェクトから作成 ≫



 ■新規作成でプロジェクトにWin32 Applicationを選び、空のプロジェクトを作成

      

      






 ■メニューの新規作成より「ファイル」→「C/C++ソースファイル」を選びmainファイルを作成

      

      ※プロジェクトへの追加をチェック
      ※ファイル名は何でもOK





 ■mainファイルにコードを追加

#include "windows.h"

int WINAPI WinMain(
  HINSTANCE hInstance,
  HINSTANCE hPrevInstance,
  LPSTR lpCmdLine,
  int nCmdShow
)
{
return 0;
}

戻り値0を返す事でWinMain関数を実行後プログラムを終了しています





 ■コンパイルすれば完成

   完成ですがWinMain関数を実行して終了するだけのプログラムなので
   何も表示されず終了してしまいます。
   これでは起動しているかどうかわからないのでプログラム起動後メッセージボックスを
   表示するようにしてみます。






 ■WinMain関数にメッセージボックスを表示するコードを追加

#include "windows.h"

int WINAPI WinMain(
  HINSTANCE hInstance,
  HINSTANCE hPrevInstance,
  LPSTR lpCmdLine,
  int nCmdShow
)
{
MessageBox(NULL,"Hello!","あいさつ",MB_ICONASTERISK);
return 0;
}

戻り値0を返す事でWinMain関数を実行後プログラムを終了しています。





 ■再びコンパイル

      

    実行するとメッセージボックスが表示され閉じるとプログラムが終了します。




このプログラムにはウインドウがありません。
ウインドウ表示する為にはコードを追加してやる必要があります。
それは次回でやりたいと思います。
次回からとてつもない量のソースが出るかもしれません。(^^;
余り長いとやる気なくすので出切るだけ短くするように頑張ってみます...