Win32 API チュートリアル
Win32 APIを使い始める
サーチ…
備考
WinAPI(Win32とも呼ばれ、Microsoft Windows APIとも呼ばれます)は、Windowsの機能にアクセスできるようにMicrosoftによってC言語で書かれたアプリケーションプログラミングインターフェイスです。 WinAPIの主なコンポーネントは次のとおりです。
- WinBase:カーネル関数、CreateFile、CreateProcessなど
- WinUser:GUI関数、CreateWindow、RegisterClassなど
- WinGDI:グラフィック関数、楕円、SelectObjectなど
- 共通コントロール:標準コントロール、リストビュー、スライダなど
関連項目:
- MSDNのWindows APIインデックス
バージョン
APIのバージョンは、オペレーティングシステムのバージョンに関連付けられています。 MSDNのドキュメントでは、API内の各関数のサポートされる最小オペレーティングシステムを指定しています。
こんにちは世界
Microsoft Windowsアプリケーションは、通常、コンソールアプリケーションまたはウィンドウアプリケーション(サービスやプラグインなどの他のタイプがあります)として記述されます。プログラマーの違いは、プログラマーが提供するアプリケーション・ソースのメイン・エントリー・ポイントのインターフェースの違いです。
CまたはC ++アプリケーションが起動すると、実行可能ローダによって使用される実行可能エントリポイントは、コンパイラによって提供されるランタイムです。実行可能なローダは、実行可能ファイルを読み込み、必要なイメージに修正を加えた後、CまたはC ++プログラムの場合はコンパイラが提供する実行時の実行可能エントリポイントを呼び出します。
ローダによって呼び出される実行可能なエントリポイントは、アプリケーションプログラマによって提供されるメインエントリポイントではなく、コンパイラおよび実行可能ファイルを生成するリンカによって提供されるランタイムである。ランタイムは、アプリケーションの環境を設定した後、プログラマーが提供するメインエントリーポイントを呼び出します。
Windowsコンソールアプリケーションには、プログラマによって提供されるメインエントリポイント用に、いくつかのわずかに異なるインターフェイスが存在する場合があります。これらの違いは、メインエントリポイントが従来のint main (int argc, char *argv[])
か、Windows固有のバージョンのint _tmain(int argc, _TCHAR* argv[])
あるかどうかです。アプリケーションパラメータ内の文字。 Visual Studioを使用してWindows Win32コンソールアプリケーションプロジェクトを生成すると、生成されるソースはWindows固有のバージョンになります。
Windowsウィンドウ(GUI)アプリケーションは、プログラマによって提供されるメインエントリポイントのための異なるインタフェースを有する。ランタイムはGUI環境を設定し、アプリケーションパラメータとともに追加情報を提供するため、プログラマが提供するこのメインエントリポイントはより複雑なインターフェイスを備えています。
この例では、Windowsウィンドウ(GUI)メインエントリポイントインターフェイスについて説明します。このトピックを調べるには、次のものが必要です。
- コンパイラを備えたIDE(Visual Studioが望ましい)
- C知識
IDEを使用して空のWin32ウィンドウ(GUIではなくコンソール)プロジェクトを作成します。リンカが正しいランタイムにリンクするためには、ウィンドウアプリケーション(コンソールアプリケーションではない)に対してプロジェクト設定を設定する必要があります。 main.c
ファイルを作成してプロジェクトに追加し、次のコードを入力します。
#include <windows.h>
int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow)
{
return MessageBox(NULL, "hello, world", "caption", 0);
}
これは私たちのWin32「Hello、world」プログラムです。最初のステップは、Windowsヘッダーファイルを含めることです。 Windowsのすべてのメインヘッダーはwindows.h
ですが、他にもあります。
WinMain
は、コンソールアプリケーションで使用される標準のint main()
とは異なります。インターフェイスで使用されるパラメータが増えました。さらに重要なことに、ウィンドウアプリケーションのメインエントリポイントには、標準のC / C ++とは異なる呼び出し規約が使用されています。
修飾子APIENTRY
は、呼び出し規約を示します。これは、引数がスタック†にプッシュされる順序です。デフォルトでは、呼び出し規約は__cdecl
指定された標準C規約です。しかし、マイクロソフトは、 __stdcall
修飾子によって示されるWindows API関数に対して、PASCALの規約とは異なる種類の呼び出し規約を使用しています。 APIENTRY
は、 windows.h
含まれるヘッダーファイルの1つの__stdcall
定義済みの名前です( __stdcall
とは何かを参照)。
WinMain
の次の引数は次のとおりです。
- hInst:インスタンスハンドル
- hInstPrev:前のインスタンスハンドル。もう使用されません。
- cmdline:コマンドライン引数( WinMain(またはwWinMain)引数を通常のmainに渡すを参照)
- cmdshow:ウィンドウを表示するかどうかを示します。
これらの議論はまだ使われていません。
WinMain()
内部では、 MessageBox()
呼び出しが行われ、メッセージとメッセージボックスを持つ単純なダイアログが表示されます。最初の引数は、所有者ウィンドウへのハンドルです。まだ独自のウィンドウがないのでNULL
渡してください。 2番目の引数は本文です。 3番目の引数はキャプションで、4番目の引数にはフラグが含まれています。 0を渡すと、デフォルトのメッセージボックスが表示されます。以下の図は、メッセージボックスのダイアログを解説しています。
良いリンク:
† 32ビットシステムのみ。他のアーキテクチャは異なる呼び出し規約を持っています。