モジュール 1 初めての Windows プログラム
このモジュールでは、最小限の Windows デスクトップ プログラムを記述します。 空白のウィンドウを作成して表示する必要があります。 この最初のプログラムには約 50 行のコードが含まれており、空白行やコメントはカウントされません。 それは私たちの出発点になります。後で、グラフィックス、テキスト、ユーザー入力、その他の機能を追加します。
Visual Studio で従来の Windows デスクトップ アプリケーションを作成する方法の詳細については、「チュートリアル: 従来の Windows デスクトップ アプリケーションを作成する (C++)」をチェック。
プログラムの完全なコードを次に示します。
#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow)
{
// Register the window class.
const wchar_t CLASS_NAME[] = L"Sample Window Class";
WNDCLASS wc = { };
wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.lpszClassName = CLASS_NAME;
RegisterClass(&wc);
// Create the window.
HWND hwnd = CreateWindowEx(
0, // Optional window styles.
CLASS_NAME, // Window class
L"Learn to Program Windows", // Window text
WS_OVERLAPPEDWINDOW, // Window style
// Size and position
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, // Parent window
NULL, // Menu
hInstance, // Instance handle
NULL // Additional application data
);
if (hwnd == NULL)
{
return 0;
}
ShowWindow(hwnd, nCmdShow);
// Run the message loop.
MSG msg = { };
while (GetMessage(&msg, NULL, 0, 0) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
// All painting occurs here, between BeginPaint and EndPaint.
FillRect(hdc, &ps.rcPaint, (HBRUSH) (COLOR_WINDOW+1));
EndPaint(hwnd, &ps);
}
return 0;
}
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
Visual Studio プロジェクト全体は、Windows Hello World Sample からダウンロードできます。
このコードの機能の概要を簡単に説明すると便利な場合があります。 以降のトピックでは、コードについて詳しく説明します。
-
wWinMain は、プログラムのエントリ ポイントです。 プログラムが起動すると、アプリケーション ウィンドウの動作に関する情報が登録されます。 最も重要な項目の 1 つは、この例でという名前
WindowProc
の関数のアドレスです。 この関数は、ウィンドウの動作 (外観、ユーザーとの対話方法など) を定義します。 - 次に、プログラムはウィンドウを作成し、ウィンドウを一意に識別するハンドルを受け取ります。
- ウィンドウが正常に作成されると、プログラムは while ループに入ります。 プログラムは、ユーザーがウィンドウを閉じてアプリケーションを終了するまで、このループに残ります。
プログラムは関数を明示的に呼び出 WindowProc
さないことに注意してください。ただし、これはほとんどのアプリケーション ロジックが定義されている場所であると述べています。 Windows は、一連のメッセージを渡すことによって、プログラムと通信 します。
while ループ内のコードによって、このプロセスが駆動されます。 プログラムが DispatchMessage 関数を呼び出すたびに、Windows はメッセージごとに 1 回、WindowProc 関数を間接的に呼び出します。
このセクションの内容
関連トピック