mainじゃなくてWinMainなんやね!
仕事で.NET2.0を使ってるんですが、
もうちょと詳しくウィンドウアプリケーションを知っておこうと
C言語にてwindowを作ってみる。
もちろんコンパイラはMinGWのgccコンパイラです。
過去の日記でインストールした時にwinapi関連のライブラリも
インストールできているのでそのまま使います。
で…ネットを検索しまくって
こんなヘッダーをインクルードして。
#include <windows.h>
こんな関数がエントリーポイントになっていると知る。
int WINAPI WinMain (HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR szCmdLine,
int iCmdShow);
そして、意味不明な大文字の型が…
WINAPI 良くわかりません。とりあえずおまじないと思って書いておく
HINSTANCE:void*をtypedefしたやつやった。
「インスタンスハンドル」やねんて
PSTR:strっていうぐらいやから文字列の型「wchar*」or「char*」をtypedefしたもの
UNICODEを使えるか使えないかで場合分けしてある
んで各引数の説明
HINSTANCE hInstance
:実行したプログラムを識別するためのもの
HINSTANCE hPrevInstance
:すんごい昔に多重起動を確認するために使われていた今はNULLしか入ってこない
PSTR szCmdLine
:コマンドラインで実行した時の引数、今までも同じものあったからこれは大丈夫かな
int iCmdShow
:ウィンドウの初期表示方法です ウィンドウを生成する時に使うそうな…
以下のコードを書いて簡単に呼び出してみた
メッセージボックスが表示されておしまい。
-------
#include <windows.h>
int WINAPI WinMain (HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR szCmdLine,
int iCmdShow)
{
MessageBox (NULL, TEXT("text"), TEXT("caption"), MB_OK);
return 0;
}
-------
TEXT()はマクロでUNICODE対応の場合は文字列の先頭に「L」を付ける
例TEXT("text")
⇒UNICODE対応 ⇒ L"text"
⇒UNICODE非対応 ⇒ "text"
まだウィンドウは作成できず…
0 件のコメント:
コメントを投稿