ぷるぷるの雑記

低レイヤーがんばるぞいなブログ. 記事のご利用は自己責任で.

WinAPIの型まとめ

WinAPI(MSVC)で頻出の型の情報をまとめました. 適宜更新するかもです. Win64環境前提です.

環境

項目 バージョン
WinSDK 10.0.22621.0

呼び出し規則

結局のところすべて__stdcallと同じ意味になるが、識別子を分けることで何のための関数かはっきりさせる.

規則名 defineの内容 説明 定義場所
WINAPI __stdcall minwindef.h
APIENTRY WINAPI minwindef.h
CALLBACK __stdcall minwindef.h

データ型

公式リファレンスにはWinDef.hで宣言されると書かれているものの一部は、本当はminwindef.hに定義されている. WinDef.hの中でminwindef.hをincludeしているので、完全な嘘とも言えない.

型名 typedef元の型 MSVC言語としての型 説明 定義場所
LRESULT LONG_PTR __int64 プログラムがWindowsに返す整数値(Lは無視して良い) minwindef.h
LPARAM LONG_PTR __int64 メッセージパラメーター(Lは無視して良い) minwindef.h
WPARAM LONG_PTR __int64 メッセージパラメーター(Wは無視して良い) minwindef.h
LPVOID void* 任意の型へのポインター(Lは無視して良い) minwindef.h
ATOM WORD unsigned short 文字列と対応する識別子 minwindef.h
BOOL int ブール型 minwindef.h
BYTE unsigned char バイト(8ビット) minwindef.h
COLORREF DWORD unsigned long RGBの色値(32ビット)
DWORD unsigned long 2ワード minwindef.h
WORD unsigned short ワード minwindef.h
HANDLE PVOID void* オブジェクトへのハンドル WinNT.h
LPHANDLE *HANDLE void* HANDLEへのポインター(Lは無視して良い) minwindef.h

ハンドル

一部例外を除いてHANDLE型(任意の型へのポインタ)だが、型を分けることで何のためのハンドルかはっきりさせる.

型名 説明 定義場所
HBITMAP ビットマップへのハンドル windef.h
HBRUSH ブラシへのハンドル windef.h
HCOLORSPACE 色空間へのハンドル windef.h
HCONV
HCONVLIST
HCURSOR カーソルへのハンドル windef.h
HDC バイスコンテキストへのハンドル windef.h
HDDEDATA
HGLRC windef.h
HDESK windef.h
HGLRC windef.h
HENHMETAFILE 拡張メタファイル(画像ファイル)へのハンドル windef.h
HFILE CreateFileではなくOpenFileで開いたファイルへのハンドル. int型 minwindef.h
HFONT windef.h
HGDIOBJ windef.h
HGLOBAL グローバルメモリブロックへのハンドル minwindef.h
HHOOK フックへのハンドル windef.h
HICON windef.h
HINSTANCE インスタンスへのハンドル minwindef.h
HKEY レジストリキーへのハンドル minwindef.h
HLOCAL ローカルメモリブロックへのハンドル minwindef.h
HMENU windef.h
HMETAFILE minwindef.h
HMODULE HINSTANCE型としてtypedefされています. minwindef.h
HMONITOR windef.h
HPALETTE windef.h
HPEN windef.h
HRSRC リソースへのハンドル minwindef.h
HWND ウインドウへのハンドル windef.h

構造体

構造体名の接尾辞にWやAがついているものは、前者はUNICODE対応版、後者は非対応版の定義になる.

型名 説明 定義場所
MSG スレッドに積まれるメッセージ情報に関する構造体 winuser.h
WNDCLASSW ウインドウクラス. UNICODE対応時WNDCLASSと同等 winuser.h
WNDCLASSA ウインドウクラス. UNICODE非対応時WNDCLASSと同等 winuser.h
PAINTSTRUCT BeginPaint()とEndPaint()にウインドウハンドルと共に渡す winuser.h
WINDOWPLACEMENT ウインドウの配置に関する情報 winuser.h
MOUSEINPUT マウスイベントに関する情報 winuser.h
KEYBDINPUT キーボードイベントに関する情報 winuser.h
HARDWAREINPUT キーボードまたはマウス以外の入力デバイスに関する情報 winuser.h
RECT 矩形の情報 windef.h
POINT x,y座標 windef.h
SIZE x,yのサイズ windef.h
DCB シリアル通信デバイスの制御設定 winbase.h
BITMAP ビットマップの型、幅、高さ、色書式、ビット値 wingdi.h
BITMAPCOREHEADER よくわからん wingdi.h
BITMAPFILEHEADER よくわからん wingdi.h

参考

learn.microsoft.com