まずは、コンパイラの設定ですが 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 でプログラムを作るには、このほかに「モジュール定義 ファイル」というのが必要です。
DESCRIPTIONやHEAPSIZE STACKSIZEの項目は任意の 文字列や数値です。ヒープや、スタックサイズは 上の値程度にしておいて下さい。 このファイルを「*.def」という名前で保存して プロジェクトに参加させておいて下さい。NAME EXAMPLE DESCRIPTION '粂井康孝制作プログラム' EXETYPE WINDOWS CODE PRELOAD MOVEABLE DISCARDABLE STUB 'WINSTUB.EXE' DATA PRELOAD MOVEABLE MULTIPLE HEAPSIZE 2048 STACKSIZE 4608
また、16ビット版ではWinMain関数を
に変更して下さい。メモリモデルは何でもいいです。int PASCAL WinMain(....)
はい、SDKプログラムの雰囲気がわかれば良いでしょう。
次回より、少しずつ解説をします。決して全部を理解しようと
してはいけません。必ず挫折します。必要なところのみを
理解しましょう。今回作ったプログラムを雛形として保存しておくと
新しいプログラムを作るときに便利です。どんなプログラムでも
今回示したプログラムとほとんど同じです。
Update Mar/15/1997 By Y.Kumei