イントロダクション


ウィンドウズのプログラムは面倒です。入門書を読み始めて 途中で挫折した人も多いのではないでしょうか。 多分、訳のわからんデータ型がてんこ盛りで出てくる、 変数の名前付けにもなにやら難しい規則がある、 第一、画面に文字列を表示するのもどうやったらいいのかわからん などなどで挫折したのではないでしょうか。 ここでは、猫でもわかる式に、SDKによる ウィンドウズのプログラムの書き方を解説します。 一応、コンパイラはVC++4.2を使っていますが SDKがインストールされていれば、何であっても 書き方は同じです。

まずは、コンパイラの設定ですが C言語編第57章を 参照して下さい。 そして、何もいわずに下のソースを打ち込んで下さい。 打ち終わったら、適当な名前を付けて保存して下さい。 この時ファイル名は「*.c」でも「*.cpp」でもかまいません。 次に、このファイルをプロジェクトに挿入して、 ビルドスイッチを押してプログラムを 完成して下さい。

// sample01.cpp #include <windows.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); char szClassNme[] = "ウィンドウクラス・ネーム"; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst, LPSTR lpszCmdLine, int nCmdShow) { HWND hWnd; MSG msg; WNDCLASS myProg; if (!hPreInst) { myProg.style =CS_HREDRAW | CS_VREDRAW; myProg.lpfnWndProc =WndProc; myProg.cbClsExtra =0; myProg.cbWndExtra =0; myProg.hInstance =hInstance; myProg.hIcon =NULL; myProg.hCursor =LoadCursor(NULL, IDC_ARROW); myProg.hbrBackground =GetStockObject(WHITE_BRUSH); myProg.lpszMenuName =NULL; myProg.lpszClassName =szClassNme; if (!RegisterClass(&myProg)) return FALSE; } hWnd = CreateWindow(szClassNme, "猫でもわかるプログラミング", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return (msg.wParam); } LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_DESTROY: PostQuitMessage(0); break; default: return(DefWindowProc(hWnd, msg, wParam, lParam)); } return (0L); }

げっ、いきなりこんな訳のわからんプログラムが出てくるようじゃ、 この先読み進む気がしないな・・・

これから、必要なところを少しずつ解説していきます。 今は、全くわからなくて結構です。

16ビット版SDK でプログラムを作るには、このほかに「モジュール定義 ファイル」というのが必要です。

NAME EXAMPLE DESCRIPTION '粂井康孝制作プログラム' EXETYPE WINDOWS CODE PRELOAD MOVEABLE DISCARDABLE STUB 'WINSTUB.EXE' DATA PRELOAD MOVEABLE MULTIPLE HEAPSIZE 2048 STACKSIZE 4608

DESCRIPTIONやHEAPSIZE STACKSIZEの項目は任意の 文字列や数値です。ヒープや、スタックサイズは 上の値程度にしておいて下さい。 このファイルを「*.def」という名前で保存して プロジェクトに参加させておいて下さい。

また、16ビット版ではWinMain関数を

int PASCAL WinMain(....)

に変更して下さい。メモリモデルは何でもいいです。

はい、SDKプログラムの雰囲気がわかれば良いでしょう。 次回より、少しずつ解説をします。決して全部を理解しようと してはいけません。必ず挫折します。必要なところのみを 理解しましょう。今回作ったプログラムを雛形として保存しておくと 新しいプログラムを作るときに便利です。どんなプログラムでも 今回示したプログラムとほとんど同じです。


[SDK Index] [総合Index] [Next Chapter]

Update Mar/15/1997 By Y.Kumei
当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。