API Function

MessageBox()

int MessageBox(HWND hWnd , LPCTSTR lpText , LPCTSTR lpCaption , UINT uType);

メッセージボックスを表示します

hWnd - オーナーウィンドウを指定します。NULLの場合はオーナーウィンドウを持ちません
lpText - メッセージボックスに表示するメインの文字列を指定します
lpCaption - タイトルバーに表示される文字列を指定します
uType - メッセージボックスの内容をフラグで指定します

戻り値 - メッセージボックスの押されたボタンを整数値で返します

定数表
定数 解説
ボタン
MB_ABORTRETRYIGNORE [ 中止 ]、[ 再試行 ]、[ 無視 ] プッシュボタンを表示します
MB_OK [OK] プッシュボタンを表示します。デフォルトです
MB_OKCANCEL [OK]、[ キャンセル ] プッシュボタンを表示します
MB_RETRYCANCEL [ 再試行 ]、[ キャンセル ] プッシュボタンを表示します
MB_YESNO [ はい ]、[ いいえ ] プッシュボタンを表示します
MB_YESNOCANCEL [ はい ]、[ いいえ ]、[ キャンセル ] プッシュボタンを表示します
アイコン
MB_ICONEXCLAMATION
MB_ICONWARNING
感嘆符アイコンを表示します
MB_ICONINFORMATION
MB_ICONASTERISK
吹き出しの中に小文字の「 i 」があるアイコンを表示します
MB_ICONQUESTION 疑問符のアイコンを表示します
MB_ICONSTOP
MB_ICONERROR
MB_ICONHAND
停止
デフォルトプッシュ
MB_DEFBUTTON1 最初のボタンをデフォルトプッシュボタンにします
デフォルトです
MB_DEFBUTTON2 2 番目のボタンをデフォルトプッシュボタンにします
MB_DEFBUTTON3 3 番目のボタンをデフォルトプッシュボタンにします
MB_DEFBUTTON4 4 番目のボタンをデフォルトプッシュボタンにします
動作
MB_APPLMODAL ユーザーは、メッセージボックスに応答しなければ
hWnd パラメータで指定されたウィンドウで作業を継続することはできません
ほかのアプリケーションのウィンドウに移動して作業することはできます
デフォルトです
MB_SYSTEMMODAL メッセージボックスが
WS_EX_TOPMOST スタイルを持つ以外はMB_APPLMODAL と同じです
ユーザーがすぐに気付く必要があるような重大なエラーを通知するために使用します
MB_TASKMODAL hWnd パラメータが NULL のときに
現在のタスクに属するすべてのトップレベルウィンドウが無効になることを除いて
MB_APPLMODAL と同じです
呼び出し側のアプリケーション (またはライブラリ) が
有効なウィンドウのハンドルを持っておらず
かつ、ほかのアプリケーションを中断せずに
現在のアプリケーションのほかのウィンドウへの入力を禁止したいときに使用します
その他
MB_DEFAULT_DESKTOP_ONLY 現在入力を受け取るデスクトップは
デフォルトのデスクトップでなければなりません
それ以外の場合には、関数が失敗します
デフォルトのデスクトップは、ユーザーがログオンした後で
アプリケーションが動作するデスクトップです
MB_HELP [ヘルプ]プッシュボタンを追加します
ユーザーがヘルプボタンを選択したり F1 キーを押したりすると
ヘルプイベントが生成されます
MB_RIGHT テキストを右寄せします
MB_RTLREADING 右から左へテキストを表示します
ヘブライ語やアラビア語をサポートしているシステムで有効です
MB_SETFOREGROUND メッセージボックスをフォアグラウンドウィンドウにします
Windows システムは、内部で SetForegroundWindow 関数を呼び出します
MB_TOPMOST メッセージボックスを最前面ウィンドウ (WS_EX_TOPMOST) で作成します
MB_SERVICE_NOTIFICATION Windows NT 専用です
呼び出し側がユーザーにイベントを通知するサービスのときに指定します
ユーザーがログオンしていないときも
現在のアクティブなデスクトップにメッセージボックスを表示します
このフラグをセットするときは
hWnd パラメータに NULL を指定してください
MB_SERVICE_NOTIFICATION_NT3X Windows NT 専用です
この値は、Windows NT バージョン 3.51 で
MB_SERVICE_NOTIFICATION として定義された値と同じです
戻り値
IDABORT [中止]ボタンが選択されました
IDCANCEL [キャンセル]ボタンが選択されました
IDIGNORE [無視]ボタンが選択されました
IDNO [いいえ]ボタンが選択されました
IDOK [OK]ボタンが選択されました
IDRETRY [再試行]ボタンが選択されました
IDYES [はい]ボタンが選択されました

wsprintf()

int wsprintf(LPTSTR lpOut , LPCTSTR lpFmt , ...);

指定された引数を書式制御文字列にしたがってフォーマットし、バッファに格納します

lpOut - バッファへのポインタを指定します
lpFmt - NULL で終わる書式制御文字列へのポインタを指定します
... - 0 個以上の引数を指定します

戻り値 - 成功すると格納された文字数、失敗すると文字列の長さよりも小さな値

lstrcpy()

LPTSTR lstrcpy(LPTSTR lpString1, LPCTSTR lpString2);

文字列をコピーします

lpString1 - lpString2 をコピーするバッファへのポインタを指定します
lpString2 - lpString1 にコピーする文字列へのポインタを指定します

戻り値 - バッファへのポインタ、失敗すれば NULL

lstrcpyn

LPTSTR lstrcpyn(
LPTSTR lpString1 , LPCTSTR lpString2,
int iMaxLength
);
指定文字数だけ、文字列をコピーします

lpString1 - lpString2 をコピーするバッファへのポインタを指定します
lpString2 - lpString1 にコピーする文字列へのポインタを指定します
iMaxLength - コピーする NULL を含めた文字数を指定します

戻り値 - バッファへのポインタ、失敗すれば NULL

int lstrlen(LPCTSTR lpString)

文字列の文字数を返します

lpString - 調べる文字列へのポインタを指定します

戻り値 - 文字数を返します

lstrcat()

LPTSTR lstrcat(LPTSTR lpString1, LPCTSTR lpString2);

文字列を別の文字列に結合します

lpString1 - lpString2 を結合する文字列へのポインタ
lpString2 - lpString1 に結合させる文字列へのポインタを指定します

戻り値 - 結合した文字列へのポインタ、失敗すれば NULL


LPTSTR GetCommandLine(VOID)

現在のプロセスのコマンドライン文字列を返します

戻り値 - コマンドライン文字列へのポインタを返します

CreateWindow()

HWND CreateWindow(
LPCTSTR lpClassName ,
LPCTSTR lpWindowName,
DWORD dwStyle ,
int x ,
int y ,
int nWidth ,
int nHeight ,
HWND hWndParent ,
HMENU hMenu ,
HANDLE hInstance ,
LPVOID lpParam
);

オーバーラップウィンドウ、ポップアップウィンドウ
子ウィンドウのいずれかを作成します

lpClassName - ウィンドウクラス名を指定します
lpWindowName - ウィンドウ名を指定します。タイトルバーなどに表示されます
dwStyle - ウィンドウのスタイル を定数で指定します
x - ウィンドウの初期位置のX座標を指定します
y - ウィンドウの初期位置のY座標を指定します
nWidth - ウィンドウの横幅を指定します
nHeight 0 ウィンドウの縦幅を指定します
hWndParend - 作成されるウィンドウのオーナー、または親ウィンドウを指定します
hMenu - メニューまたは子ウィンドウ ID を指定します
hInstance - ウィンドウに関連付けられたインスタンスハンドルを指定します
lpParam - WM_CREATE メッセージの lParam パラメータとして渡される構造体ポインタを指定します

戻り値 - 成功すると作成されたウィンドウハンドル、失敗するとNULL

定数 解説
定義済みウィンドウクラス
BUTTON ユーザーがクリックできるボタンを表す、小さな長方形の子ウィンドウです
ボタンコントロールは単独またはグループの両方で使え
ラベルを付けることもテキストなしで表示することもできます
COMBOBOX コンボボックスです
リストボックスの部分は、常に表示させておくか
ユーザーの指示によってドロップダウンするようにします
コンボボックスのスタイルによって、ユーザーが選択フィールドの内容を
編集できるかできないかが決まります
EDIT キーボードからテキストを入力できる、長方形の子ウィンドウです
エディットコントロールは可変ピッチのシステムフォントを使用し
ANSI 文字セットの文字を表示します
フォントを変更するよう、WM_SETFONT メッセージを
エディットコントロールに送ることもできます
エディットコントロールは、タブ文字をタブ長と同じ長さの空白文字列に展開します
タブストップは 8 文字間隔で設定されているものとみなされます
LISTBOX 文字列のリスト (一覧) です
クリックで文字列を選択できます
また、このとき、親ウィンドウに通知メッセージが送られます
コントロールウィンドウより長いリストをスクロールするには
リストボックスのスクロールバーを使います
リストボックスは、スクロールバーを必要に応じて
自動的に表示したり消したりします
MDICLIENT MDI クライアントウィンドウです
このウィンドウは、MDI アプリケーションの子ウィンドウを
制御するメッセージを受け取ります
推奨されるスタイルビットは、WS_CLIPCHILDREN と WS_CHILD です
スクロールバーを付けるときは、WS_HSCROLL と WS_VSCROLL を使います
SCROLLBAR つまみを持ち、両端に矢印ボタンがある長方形です
ユーザーがコントロールをクリックするたびに
スクロールバーは親ウィンドウに通知メッセージを送ります
つまみの位置の更新は、必要に応じて親ウィンドウが行います
スクロールバークラスは、サイズボックスコントロールも含みます
STATIC 簡単なテキストのフィールド、ボックス
または他のコントロールにラベルを付けたり、囲んだり
分離したりするときに使う長方形です
スタティックコントロールは入出力を行いません
dw パラメータでは、次のウィンドウスタイルが指定できます

CreateWindowEx()

HWND CreateWindowEx(
DWORD dwExStyle,
LPCTSTR lpClassName ,
LPCTSTR lpWindowName,
DWORD dwStyle ,
int x ,
int y ,
int nWidth ,
int nHeight ,
HWND hWndParent ,
HMENU hMenu ,
HANDLE hInstance ,
LPVOID lpParam
);

拡張スタイルが指定できること以外は CreateWindow() と同じです
dwExStyle 以外の引数については CreateWindow() を参照してください

dwExStyle - 拡張スタイル を指定します


ShowWindow()

BOOL ShowWindow( HWND hWnd , int nCmdShow );

指定されたウィンドウの表示状態を設定します

hWndM - 対象のウィンドウのハンドルを指定します
nCmdShow - ウィンドウの表示状態を表す定数を指定します

戻り値 - 以前に表示されていたときは 0 以外、非表示にされていたときは 0

nCmdShow には以下の定数を指定します

定数 解説
SW_HIDE ウィンドウを非表示にし、他のウィンドウをアクティブにします
SW_MAXIMIZE ウィンドウを最大化します
SW_MINIMIZE ウィンドウを最小化し、Z 順位が次のトップレベルウィンドウをアクティブにします
SW_RESTORE ウィンドウをアクティブにし、表示します
ウィンドウが最小化されていたり最大化されていたりすると
元の位置とサイズに戻ります
SW_SHOW ウィンドウをアクティブにして、現在の位置とサイズで表示します
SW_SHOWDEFAULT アプリケーションを起動させたプログラムが
CreateProcess 関数に渡す
STARTUPINFO 構造体の wShowWindow メンバで指定された
SW_ フラグを基にして、表示状態を設定します
SW_SHOWMAXIMIZED ウィンドウをアクティブにして、最大化します
SW_SHOWMINIMIZED ウィンドウをアクティブにして、最小化します
SW_SHOWMINNOACTIVE ウィンドウを最小化します
アクティブなウィンドウは、アクティブな状態を維持します
非アクティブなウィンドウは、非アクティブなままです
SW_SHOWNA ウィンドウを現在の状態で表示します
アクティブなウィンドウはアクティブな状態を維持します
SW_SHOWNOACTIVATE ウィンドウを直前の位置とサイズで表示します
アクティブなウィンドウはアクティブな状態を維持します
SW_SHOWNORMAL ウィンドウをアクティブにして、表示します
ウィンドウが最小化または最大化されているときは、位置とサイズを元に戻します


DefWindowProc()

LRESULT DefWindowProc(HWND hWnd , UINT Msg , WPARAM wParam , LPARAM lParam);

デフォルトウィンドウプロシージャを呼び出します
デフォルトウィンドウプロシージャは、ウィンドウが持つ基本的なふるまいをサポートします

hWnd - メッセージを受け取ったウィンドウのハンドルを指定します
Msg - メッセージを指定します
wParam - メッセージの追加情報を指定します
lParam - メッセージの追加情報を指定します

戻り値 - メッセージ処理の結果が返ります。意味はメッセージにより異なります

LoadIcon()

HICON LoadIcon(HINSTANCE hInstance , LPCTSTR lpIconName);

インスタンスに関連付けられた実行ファイルからアイコンリソースをロードします
この関数は、LoadImage 関数に取って代わられています

hInstance - ロードするインスタンスを指定します。システム定義の場合は NULL
lpIconName - ロードするアイコンをあらわす文字列を指定します

戻り値 - ロードされたアイコンのハンドルを返します。失敗した時は NULL

定数 解説
システム定義のアイコン
IDI_APPLICATION アプリケーションアイコン
IDI_ASTERISK アスタリスクのアイコン (吹き出しの中に i の文字)
IDI_EXCLAMATION 感嘆符のアイコン
IDI_HAND ストップ印のアイコン
IDI_QUESTION 疑問符のアイコン
IDI_WINLOGO Windows ロゴアイコン

LoadCursor()

HCURSOR LoadCursor(HINSTANCE hInstance , LPCTSTR lpCursorName);

hInstance - ロードするインスタンスを指定します。システム定義の場合は NULL
lpIconName - ロードするカーソルをあらわす文字列を指定します

戻り値 - ロードされたカーソルのハンドルを返します。失敗した時は NULL

インスタンスに関連付けられた実行ファイルからカーソルリソースをロードします
この関数は、LoadImage 関数に取って代わられています

定数 解説
システム定義のマウスカーソル
IDC_APPSTARTING 標準矢印カーソルおよび小型砂時計カーソル
IDC_ARROW 標準矢印カーソル
IDC_CROSS 十字カーソル
IDC_IBEAM アイビーム (縦線) カーソル
IDC_ICON 現在は使われません
IDC_NO 禁止カーソル
IDC_SIZE 現在は使われません
IDC_SIZEALL 4 方向矢印カーソル
IDC_SIZENESW 斜め左下がりの両方向矢印カーソル
IDC_SIZENS 上下両方向矢印カーソル
IDC_SIZENWSE 斜め右下がりの両方向矢印カーソル
IDC_SIZEWE 左右両方向矢印カーソル
IDC_UPARROW 垂直の矢印カーソル
IDC_WAIT 砂時計カーソル

GetStockObject()

HGDIOBJ GetStockObject( int fnObject );

定義済みのペン、ブラシ、フォント、パレットのいずれかのハンドルを取得します

fnObject - 要求するハンドルの定数を指定します

戻り値 - 成功すると要求したハンドルが、失敗すると NULL が返ります

定数 解説
ストックオブジェクト
BLACK_BRUSH 黒のブラシ
DKGRAY_BRUSH 濃い灰色のブラシ
GRAY_BRUSH 灰色のブラシ
HOLLOW_BRUSH 中空のブラシ (NULL_BRUSH と同じ)
LTGRAY_BRUSH 明るい灰色のブラシ
NULL_BRUSH 空のブラシ (HOLLOW_BRUSH と同じ)
WHITE_BRUSH 白のブラシ
BLACK_PEN 黒のペン
NULL_PEN 空のペン
WHITE_PEN 白のペン
ANSI_FIXED_FONT Windows 文字セットの固定幅システムフォント
ANSI_VAR_FONT Windows 文字セットの可変幅システムフォント
DEVICE_DEFAULT_FONT Windows NT のみ : デバイス依存のフォント
DEFAULT_GUI_FONT Windows 95 のみ : ユーザーインターフェイス用のデフォルトフォント
(メニューやダイアログボックスなどで使われる)
OEM_FIXED_FONT OEM 文字セットの固定幅フォント
SYSTEM_FONT システムフォント
デフォルトでメニューやダイアログボックスなどで使われる可変幅フォント
SYSTEM_FIXED_FONT 古い Windows との互換性で残されている
現在は使わない
DEFAULT_PALETTE デフォルトのカラーパレット
(システムパレット内のスタティックカラーで構成されます。)

RegisterClass()

ATOM RegisterClass(CONST WNDCLASS *lpwcx);

ウィンドウクラスを登録します

lpwcx - ウィンドウクラスのポインタを指定します

戻り値 - 成功すると登録されたクラスを一意的に識別するアトムが、失敗すると0が返ります

GetMessage()

BOOL GetMessage(LPMSG lpMsg , HWND hWnd , UINT wMsgFilterMin , UINT wMsgFilterMax);

指定された MSG 構造体型変数にメッセージを格納します

lpMsg - メッセージ情報を格納する、MSG 構造体型変数のポインタを指定します
hWnd - メッセージを取得するウィンドウのハンドルを指定します。全ての場合は NULL
wMsgFilterMin - メッセージの最小値を指定し、フィルタリングします。しない場合は0
wMsgFilterMax - メッセージの最大値を指定し、フィルタリングします。しない場合は0

戻り値 - WM_QUIT を受け取った時は 0、そうでないなら 0 以外、エラーの時は -1 を返します

DispatchMessage()

LONG DispatchMessage(CONST MSG *lpmsg);

指定されたメッセージをウィンドウプロシージャにディスパッチします

lpmsg - ディスパッチするメッセージを格納した MSG 構造体変数のポインタを指定します

戻り値 - ウィンドウプロシージャの戻り値が返ります

PostQuitMessage()

VOID PostQuitMessage(int nExitCode);

メッセージキューに WM_QUIT メッセージをポストします

nExitCode - WM_QUIT の wParam の値を指定します

DestroyWindow()

BOOL DestroyWindow(HWND hWnd);

WM_DESTROY メッセージとWM_NCDESTROY メッセージをウィンドウに送り
ウィンドウの破棄に必要な作業を行います

hWnd - 破棄するウィンドウを指定します

戻り値 - 成功すると 0 以外の値、失敗すると 0 が返ります

HDC GetDC(HWND hWnd);

指定されたウィンドウのクライアントエリアに対する
デバイスコンテキストのハンドルを取得します

hWnd - デバイスコンテキストを取得するウィンドウのハンドルを指定します

戻り値 - 指定されたウィンドウに対するデバイスコンテキストのハンドルを返します

int ReleaseDC(HWND hWnd , HDC hDC);

デバイスコンテキストを解放します

hWnd - デバイスコンテキストに対応しているウィンドウのハンドル
hDC - 解放するデバイスコンテキストのハンドルを指定します

戻り値 - 解放された時は1、されなかったときは0を返します

BOOL TextOut()

BOOL TextOut(
HDC hdc,
int nXStart,
int nYStart,
LPCTSTR lpString,
int cbString
);

文字列を描画します

hdc - 描画するデバイスコンテキストのハンドルを指定します
nXstart - 参照点 X 座標を指定します
nYstart - 参照点 Y 座標を指定します
lpString - 描画する文字列へのポインタを指定します
cbString - 文字列の文字数を指定します

戻り値 - 成功すると0以外、失敗すると0が返ります

BeginPaint()

HDC BeginPaint(HWND hwnd , LPPAINTSTRUCT lpPaint);

描画領域をの無効矩形を消去し、描画の準備をします

hwnd - 再描画するウィンドウのハンドルを指定します
lpPaint - PAINTSTRUCT へのポインタを指定します

戻り値 - デバイスコンテキストのハンドルを返します

EndPaint()

BOOL EndPaint(HWND hWnd , CONST PAINTSTRUCT *lpPaint);

BeginPaint() で得たデバイスコンテキストを解放します

hWnd - 再描画したウィンドウのハンドルを指定します
lpPaint - BeginPaint() 関数が取得した、PAINTSTRUCT 構造体へのポインタを指定します

戻り値 - 常に0以外の値

GetTextMetrics()

BOOL GetTextMetrics(HDC hdc , LPTEXTMETRIC lptm);

現在のフォントの情報を取得します

hdc - デバイスコンテキストへのハンドルを指定します
lptm - TEXTMETRIC 構造体へのポインタを指定します

戻り値 - 成功すると0以外、失敗すると0が返ります

SetTextColor()

COLORREF SetTextColor(HDC hdc , COLORREF crColor);

デバイスコンテキストの文字色を変更します

hdc - デバイスコンテキストのハンドルを指定します
crColor - 設定する色を指定します

戻り値 - 以前の文字色が返ります。失敗した場合は CLR_INVALID が返ります

RGB()

COLORREF RGB(BYTE bRed , BYTE bGreen , BYTE bBlue);

引数で指定された 赤、緑、青(RGB)の値を
カラー値で用いる COLORREF 型の値に変換して返します

bRed - 赤の要素値を指定します
bGreen - 緑の要素値を指定します
bBlue - 青の要素値を指定します

戻り値 - 引数の値を32ビットのカラー値に変換した値

GetClientRect()

BOOL GetClientRect(HWND hWnd , LPRECT lpRect);

ウィンドウのクライアントエリアの座標を得ます
左上の座標は常に (0 , 0) の値になり
右下は、左上からの相対的座標になります

hWnd - 座標を取得するウィンドウのハンドルを指定します
lpRect - RECT 構造体へのポインタを指定します。この構造体に座標が格納されます

戻り値 - 関数が成功すると0以外、失敗すると0が返ります

DrawText()

int DrawText(
HDC hdc ,
LPTSTR lpchText ,
int cchText ,
LPRECT lprc ,
UINT uFormat ,
);

指定された長方形に、指定された形式でフォーマットした文字列を表示します

hdc - デバイスコンテキストのハンドルを指定します
lpchText - 表示する文字列を渡します。cchTextが -1 の場合 NULL で終わる文字列を指定します
cchText - 文字数を指定します。NULL で終わる文字列の場合 -1 を指定すると自動で計算します
lprc - 表示する長方形の座標が入った RECT 構造体へのポインタを指定します
uFormat - フォーマット方法を指定します

戻り値 - 描画したテキストの高さが返ります

定数 解説
フォーマット指定
DT_BOTTOM 長方形の下辺にテキストを揃えます
DT_SINGLELINE と同時に指定しなければなりません
DT_CALCRECT RECT 構造体で指定した長方形の幅と高さを
実際にテキストを表示するために必要な大きさに変更します
テキストは描画しません
DT_CENTER テキストを水平方向に中央揃えで表示します
DT_EDITCONTROL 複数行エディットコントロールがもつ特性と同じ特性で描画します
部分的に見えている最後の行は表示しません
DT_END_ELLIPSIS 指定した長方形に収まるよう
必要に応じてテキストの最後を省略符号 (...) に置き換えます
DT_PATH_ELLIPSIS 指定した長方形に収まるよう
必要に応じてテキストの途中を省略符号 (...) に置き換えます
パス名の描画に適しています
DT_EXPANDTABS タブ文字を展開します
デフォルトのタブ間隔は 8 文字です
DT_EXTERNALLEADING 行の高さに、外部レディングの高さ
(テキストの行間として適切な高さ) を加算します
通常、外部レディングはテキスト行の高さに加えられません
DT_LEFT テキストを左揃えにします
DT_MODIFYSTRING lpString パラメータが指すバッファに
表示された文字列を格納します
DT_END_ELLIPSIS または DT_PATH_ELLIPSIS フラグを
指定したときにしか意味をもちません
DT_NOCLIP クリッピングをしません。描画が多少速くなります
DT_NOPREFIX プリフィックス文字の処理を行わないようにします
通常、ニーモニックプレフィクス「 & 」は
その次にくる文字にアンダースコア (_) を付けて
表示する命令であると解釈されます
また、「 && 」を 1 つの「 & 」として表示します
DT_NOPREFIX を指定すると、この処理が行われなくなります
DT_RIGHT テキストを右揃えにします
DT_RTLREADING 右から左への読み取り順序で表示します
ヘブライ語やアラビア語を表示するときに有効です
DT_SINGLELINE テキストを単一行で表示します
テキストがキャリッジリターンやラインフィードを含んでいても、改行されません
DT_TABSTOP タブ間隔を設定します
この値を指定したときは、uFormat パラメータの
15 ビットから 8 ビット (下位ワードの上位バイト) で
タブ間隔の文字数を指定します
デフォルトのタブ間隔は 8 文字です
DT_TOP 長方形の上辺にテキストを揃えます (単一行のときのみ)
DT_VCENTER テキストを垂直方向に中央揃えで表示します (単一行のときのみ)
DT_WORDBREAK テキストを複数行で表示します
折り返しは自動的に行われます
キャリッジリターンとラインフィードの組み合わせによっても折り返されます

DT_TABSTOP に対して、以下の各値と組み合わせることはできません

DT_CALCRECT
DT_EXTERNALLEADING
DT_INTERNAL
DT_NOCLIP
DT_NOPREFIX

SaveDC()

int SaveDC(HDC hdc);

デバイスコンテキストの状態を保存します

hdc - 保存するデバイスコンテキストを指定します

戻り値 - デバイスコンテキストの ID。失敗すると 0

RestoreDC()

BOOL RestoreDC(HDC hdc , int nSavedDC);

デバイスコンテキストの状態を SaveDC() で保存した状態に復元します

hdc - デバイスコンテキストを指定します
nSavedDC - デバイスコンテキストの ID、または負数でスタックの要素を指定します

戻り値 - 成功すると 0 以外。失敗すると 0

SetBkColor()

COLORREF SetBkColor(HDC hdc , COLORREF crColor);

デバイスコンテキストの背景色を指定します

hdc - デバイスコンテキストのハンドルを指定します
crColor - 背景色を指定します

戻り値 - 戻り値は、以前設定されていた色、失敗するとCLR_INVALID

SetBkMode()

int SetBkMode(HDC hdc , int iBkMode);

背景モードを変更します

hdc - デバイスコンテキストのハンドルを指定します
iBkMode - 背景モードを指定します
戻り値 - 以前設定されていた背景モード、失敗すると 0

定数 解説
OPAQUE テキスト、ハッチブラシ、またはペンが描画される前に
現在の背景色で背景を塗りつぶします
TRANSPARENT 背景をそのまま残します

GetBkColor()

COLORREF GetBkColor(HDC hdc);

現在の背景色を返します

hdc - デバイスコンテキストのハンドルを指定します

戻り値 - 現在の背景色、失敗すると、CLR_INVALID

GetBkMode()

int GetBkMode(HDC hdc);

現在の背景モードを返します

hdc - デバイスコンテキストのハンドルを指定します

戻り値 - 現在の背景モード、失敗すると、0 

SetPixel

COLORREF SetPixel(HDC hdc , int X , int Y , COLORREF crColor);

指定位置にピクセルをセットします

hdc - デバイスコンテキストのハンドルを指定します
X - 描画するX座標を指定します
Y - 描画するY座標を指定します
crColor - 描画するピクセルの色を指定します

戻り値 - 設定した色の RGB 値、またはその近似色。失敗すると、-1

GetPixel()

COLORREF GetPixel(HDC hdc , int XPos , int nYPos);

指定座標のピクセルの色を取得します

hdc - デバイスコンテキストのハンドルを指定します
XPos - X座標を指定します
YPos - Y座標を指定します

戻り値 - RGB値。現在のクリッピング領域の外側の座標が指定されたときは CLR_INVALID

MoveToEx()

BOOL MoveToEx(HDC hdc , int X , int Y , LPPOINT lpPoint);

カレントポジションを設定します

hdc - デバイスコンテキストへのハンドルを指定します
X - 設定するカレントポジションのX座標を指定します
Y - 設定するカレントポジションのY座標を指定します
lpPoint - 以前のカレントポジションを格納します。必要ない場合はNULL

戻り値 - 成功すると0以外、失敗すると0

LineTo()

BOOL LineTo(HDC hdc , int nXEnd , int nYEnd);

カレントポジションから指定位置まで線を描画し
終点を新しいカレントポジションとして設定します

hdc - デバイスコンテキストへのハンドルを指定します
nXEnd - 終点となるX座標を指定します
nYEnd - 終点となるY座標を指定します

戻り値 - 成功すると0以外、失敗すると0

PolylineTo()

BOOL PolylineTo(HDC hdc , CONST POINT *lppt , DWORD cCount);

カレントポジションを始点として、lpptの各座標へ線を描画します
最後の線の終点を新しいカレントポジションとして設定します

hdc - デバイスコンテキストへのハンドルを指定します
lppt - 線の座標を表すPOINT構造体へのポインタを指定します
cCount - lpptの点の数を指定します

戻り値 - 成功すると0以外、失敗すると0

Polyline()

BOOL Polyline(HDC hdc , CONST POINT *lppt , int cPoints);

カレントポジションを使用しないで
連続した線を一括して描画します

hdc - デバイスコンテキストへのハンドルを指定します
lppt - 線の座標を表すPOINT構造体へのポインタを指定します
cPoints - lpptの点の数を指定します。必ず2以上です

戻り値 - 成功すると0以外、失敗すると0

PolyPolyline()

BOOL PolyPolyline(
HDC hdc ,
CONST POINT *lppt ,
CONST DWORD *lpdwPolyPoints ,
DWORD cCount
);

複数の連続線を描画します

hdc - デバイスコンテキストへのハンドルを指定します
lppt - 線の座標を表すPOINT構造体へのポインタを指定します
lpdwPolyPoints - 連続した線分が持つ点の数が格納されている配列のポインタを指定します
cCount - 連続した線分の総数を指定します

戻り値 - 成功すると0以外、失敗すると0

Rectangle()

BOOL Rectangle(
HDC hdc ,
int nLeftRect , int nTopRect ,
int nRightRect , int nBottomRect
);

長方形を描画します
長方形は、現在のペンで描かれ、現在のブラシで塗りつぶされます

hdc - デバイスコンテキストのハンドルを指定します
nLiftRect - 左上X座標を指定します nTopRect - 左上Y座標を指定します
nRightRect - 右下X座標を指定します
nBottomRect - 右下のY座標を指定します

戻り値 - 関数が成功すると0以外、失敗すると0

Ellipse()

BOOL Ellipse(
HDC hdc,
int nLeftRect , int nTopRect ,
int nRightRect , int nBottomRect 
);

楕円形を描画します
楕円形は、現在のペンで描かれ、現在のブラシで塗りつぶされます

hdc - デバイスコンテキストのハンドルを指定します
nLiftRect - 左上X座標を指定します nTopRect - 左上Y座標を指定します
nRightRect - 右下X座標を指定します
nBottomRect - 右下のY座標を指定します

戻り値 - 関数が成功すると0以外、失敗すると0

RoundRect()

BOOL RoundRect(
HDC hdc, 
int nLeftRect , int nTopRect,
int nRightRect , int nBottomRect,
int nWidth , int nHeight
);

角の丸い長方形を描画します
角の丸い長方形は、現在のペンで描かれ、現在のブラシで塗りつぶされます

hdc - デバイスコンテキストのハンドルを指定します
nLiftRect - 左上X座標を指定します nTopRect - 左上Y座標を指定します
nRightRect - 右下X座標を指定します
nBottomRect - 右下のY座標を指定します
nWidth - 長方形の角の丸みの幅を指定します

nHeight - 長方形の角の丸みの高さを指定します

戻り値 - 関数が成功すると0以外、失敗すると0

Arc()

BOOL Arc(
HDC hdc, 
int nLeftRect , int nTopRect ,
int nRightRect , int nBottomRect ,
int nXStartArc , int nYStartArc ,
int nXEndArc , int nYEndArc
);

始点から終点まで半時計回りの楕円弧を描画します

hdc - デバイスコンテキストのハンドルを指定します
nLiftRect - 左上X座標を指定します nTopRect - 左上Y座標を指定します
nRightRect - 右下X座標を指定します
nBottomRect - 右下のY座標を指定します
nXStartArc - 楕円弧の始点のX座標を指定します
nYStartArc - 楕円弧の始点のY座標を指定します
nXEndArc - 楕円弧の終点のX座標を指定します
nYEndArc - 楕円弧の終点のY座標を指定します

戻り値 - 関数が成功すると0以外、失敗すると0

Pie()

BOOL Pie(
HDC hdc,
int nLeftRect , int nTopRect ,
int nRightRect , int nBottomRect ,
int nXRadial1, int nYRadial1,
int nXRadial2 , int nYRadial2 
);

扇形を描画します
扇形は、現在のペンで描かれ、現在のブラシで塗りつぶされます

hdc - デバイスコンテキストのハンドルを指定します
nLiftRect - 左上X座標を指定します nTopRect - 左上Y座標を指定します
nRightRect - 右下X座標を指定します
nBottomRect - 右下のY座標を指定します
nXRadia1 - 楕円弧の始点のX座標を指定します
nYRadia1 - 楕円弧の始点のY座標を指定します
nXRadia2 - 楕円弧の終点のX座標を指定します
nYRadia2 - 楕円弧の終点のY座標を指定します

戻り値 - 関数が成功すると0以外、失敗すると0

Chord()

BOOL Chord(
HDC hdc,
int nLeftRect , int nTopRect ,
int nRightRect , int nBottomRect ,
int nXRadial1, int nYRadial1,
int nXRadial2 , int nYRadial2 
);

弓形を描画します
弓形は、現在のペンで描かれ、現在のブラシで塗りつぶされます

hdc - デバイスコンテキストのハンドルを指定します
nLiftRect - 左上X座標を指定します nTopRect - 左上Y座標を指定します
nRightRect - 右下X座標を指定します
nBottomRect - 右下のY座標を指定します
nXRadia1 - 楕円弧の始点のX座標を指定します
nYRadia1 - 楕円弧の始点のY座標を指定します
nXRadia2 - 楕円弧の終点のX座標を指定します
nYRadia2 - 楕円弧の終点のY座標を指定します

戻り値 - 関数が成功すると0以外、失敗すると0

PolyBezierTo()

BOOL PolyBezierTo(HDC hdc , CONST POINT *lppt , DWORD cCount);

一つ以上のベジェ曲線を描画します
開始点はカレントポジションを使用し
最後に描画したベジェ曲線の終了点にカレントポジションを設定します

hdc - デバイスコンテキストのハンドルを指定します
lppt - 制御点を表すPOINT構造体変数へのポインタを指定します
cCount - 制御点の数を指定します

戻り値 - 成功すると0以外、失敗すると0

PolyBezier()

BOOL PolyBezier(HDC hdc , CONST POINT *lppt , DWORD cCount);

一つ以上のベジェ曲線を描画します

hdc - デバイスコンテキストのハンドルを指定します
lppt - 制御点を表すPOINT構造体変数へのポインタを指定します
cCount - 制御点の数を指定します

戻り値 - 成功すると0以外、失敗すると0

SelectObject()

HGDIOBJ SelectObject(HDC hdc , HGDIOBJ hgdiobj);

指定されたデバイスコンテキストに、指定されたオブジェクトを選択します

hdc - デバイスコンテキストのハンドルを指定します
hgdiobj - 選択するオブジェクトを指定します

戻り値 - 成功すると置き換えられる前のオブジェクトのハンドル、失敗するとNULL

リージョンを指定した場合は、次のいずれかが返ります

定数 解説
SIMPLEREGION リージョンは単一の長方形です
COMPLEXREGION リージョンは単一の長方形よりも複雑な形です
NULLREGION リージョンは空です
GDI_ERROR 失敗

CreatePen()

HPEN CreatePen(int fnPenStyle , int nWidth , COLORREF crColor);

指定されたスタイル、幅、色を持つ論理ペンを作成します

fnPenStyle - ペンのスタイルを表す定数を指定します
nWidth - ペンの幅を指定します crColor - ペンの色を指定します

戻り値 - 論理ペンのハンドルが返ります。失敗するとNULL

スタイルには次のいずれかの定数を指定します

PS_SOLID 実線のペンを作成します
PS_DASH 破線のペンを作成します
このスタイルは、ペンの幅がデバイス単位で 1 以下のときにだけ有効です
PS_DOT 点線のペンを作成します
このスタイルは、ペンの幅がデバイス単位で 1 以下のときにだけ有効です
PS_DASHDOT 一点鎖線のペンを作成します
このスタイルは、ペンの幅がデバイス単位で 1 以下のときにだけ有効です
PS_DASHDOTDOT 二点鎖線のペンを作成します
このスタイルは、ペンの幅がデバイス単位で 1 以下のときにだけ有効です
PS_NULL 空のペンを作成します
描画は行われません
PS_INSIDEFRAME 実線のペンを作成します
境界長方形を指定するRectangle()やEllipse()などでこのペンを使うと
その長方形に完全に収まるように図形が縮小されます
ジオメトリックペンにだけ有効です

CreatePenIndirect()

HPEN CreatePenIndirect(CONST LOGPEN *lplgpn);

LOGPEN構造体の論理ペンのハンドルを返します

lplgpn - LOGPEN型構造体へのポインタを指定します

戻り値 - 論理ペンのハンドルが返ります。失敗するとNULL

DeleteObject()

BOOL DeleteObject(HGDIOBJ hObject);

ペン、ブラシ、フォント、ビットマップ、リージョン、パレットのいずれかのオブジェクトを削除し
オブジェクトに関連付けられていたシステムリソースをすべて解放します
オブジェクトを削除すると、ハンドルは無効になります

hObject - GDIオブジェクトのハンドルを指定します

戻り値 - 成功すると0以外、失敗すると0が返ります

CreateSolidBrush()

HBRUSH CreateSolidBrush(COLORREF crColor);

指定した色のブラシを生成します

crColor - ブラシの色を指定します

戻り値 - 指定した色のブラシのハンドルを返します

CreateHatchBrush()

HBRUSH CreateHatchBrush(int fnStyle , COLORREF clrref);

指定したハッチパターンと色のブラシを返します

fnStyle - ブラシのハッチスタイルを定数で指定します
clrref - ブラシの色を指定します

戻り値 - 指定した色のハッチブラシを返します

ハッチスタイルは次の定数を指定します

定数 解説
HS_BDIAGONAL 45 度の右下がりのハッチ
HS_CROSS 水平と垂直のクロスハッチ
HS_DIAGCROSS 45 度のクロスハッチ
HS_FDIAGONAL 45 度の右上がりのハッチ
HS_HORIZONTAL 水平ハッチ
HS_VERTICAL 垂直ハッチ

CreateBrushIndirect()

HBRUSH CreateBrushIndirect(CONST LOGBRUSH *lplb);

指定しされた論理ペン構造体のブラシハンドルを返します

lplb - ブラシを表すLOGBRUSH構造体型へのポインタ

戻り値 - 指定した色のハッチブラシを返します

SetROP2()

int SetROP2(HDC hdc , int fnDrawMode);

前景モードを設定します

hdc - デバイスコンテキストのハンドルを指定します
fnDrawMode - 前景モードを指定します

戻り値 - 以前の前景モードの値を返します。失敗した時は0

前景モードは、次の定数から指定します

定数 解説
R2_BLACK ピクセルは、常に 0 です
R2_COPYPEN ピクセルは、描画する色です
R2_MASKNOTPEN ピクセルは、画面の色と、描画する色を反転した色の
両方に共通な色の組み合わせです
R2_MASKPEN ピクセルは、描画する色と、画面の色の
両方に共通な色の組み合わせです
R2_MASKPENNOT ピクセルは、描画する色と、画面の色の
両方に共通な色の組み合わせです
R2_MERGENOTPEN ピクセルは、画面の色と、描画する色を反転した色の組み合わせです
R2_MERGEPEN ピクセルは、描画する色と、画面の色の組み合わせです
R2_MERGEPENNOT ピクセルは、描画する色と、画面の色を反転した色の組み合わせです
R2_NOP ピクセルは、変更されません
R2_NOT ピクセルは、スクリーンの色を反転した色です
R2_NOTCOPYPEN ピクセルは、描画する色を反転した色です
R2_NOTMASKPEN ピクセルは、R2_MASKPEN の色を反転した色です
R2_NOTMERGEPEN ピクセルは、R2_MERGEPEN の色を反転した色です
R2_NOTXORPEN ピクセルは、R2_XORPEN の色を反転した色です
R2_WHITE ピクセルは、常に 1 です
R2_XORPEN ピクセルは、描画する色と、画面の色との組み合わせですが
両方に共通する色は除きます

GetROP2()

int GetROP2(HDC hdc);

指定したデバイスコンテキストの前景モードを返します

hdc - デバイスコンテキストのハンドルを指定します

戻り値 - 成功すると前傾モードを表す数値、失敗すると0

Polygon()

BOOL Polygon(HDC hdc , CONST POINT *lpPoints , int nCount);

閉じた多角形を描画します

hdc - デバイスコンテキストのハンドルを指定します
lpPoints - 多角形の角頂点の位置を表した配列へのポインタを指定します
nCount - 多角形の頂点の数を指定します

戻り値 - 成功すると0以外、失敗すると0

PolyPolygon()

BOOL PolyPolygon(
HDC hdc,
CONST POINT *lpPoints,
CONST INT *lpPolyCounts,
int nCount
);

複数の閉じた多角形を描画します

hdc - デバイスコンテキストのハンドルを指定します
lpPoints - 多角形の角頂点の位置を表した配列へのポインタを指定します
lpPolyCounts - 各多角形の頂点の数が入った配列へのポインタを指定します
nCount - 多角形の総数を指定します

戻り値 - 成功すると0以外、失敗すると0

SetPolyFillMode()

int SetPolyFillMode(HDC hdc , int iPolyFillMode);

多角形塗りつぶしモードを設定します

hdc - デバイスコンテキストのハンドルを指定します
iPolyFillMode - 塗りつぶしモードを表す定数を指定します

戻り値 - 以前の塗りつぶしモード、失敗した時は0

塗りつぶしモードは次の定数を指定します

定数 解説
ALTERNATE 交互モードを選択します
多角形の各走査行について、多角形の奇数番目の辺から
偶数番目の辺までの間の領域が塗りつぶされます
WINDING 全域モードを選択します
0 以外のワインディング値をもつすべての領域が塗りつぶされます


GetKeyState()

SHORT GetKeyState(int nVirtKey);

指定された仮想キーの状態を取得します

nVirtKey - 仮想キーコードを指定します

戻り値 - 仮想キーコードの状態 - 最上位ビットでON(1)/OFF(0)、最下位ビットでトグルのON(1)/OFF(0)

Windows NT では、VK_SHIFT、VK_CONTROL、VK_MENU の左右のキーを区別することができます

VK_LSHIFT VK_RSHIFT
VK_LCONTROL VK_RCONTROL
VK_LMENU VK_RMENU


定数 数値 IBM 互換キーボード
VK_LBUTTON 0x01 マウス左ボタン
VK_RBUTTON 0x02 マウス右ボタン
VK_CANCEL 0x03 Ctrl-Break
VK_MBUTTON 0x04 マウス中央ボタン
VK_BACK 0x08 Backspace
VK_TAB 0x09 Tab
VK_CLEAR 0x0C NumLock を外した状態のテンキー5
VK_RETURN 0x0D Enter
VK_SHIFT 0x10 Shift
VK_CONTROL 0x11 Ctrl
VK_MENU 0x12 Alt
VK_PAUSE 0x13 Pause
VK_CAPITAL 0x14 Caps Lock
VK_KANA 0x15
VK_HANGEUL
VK_HANGUL
VL_JUNJA 0x17
VK_FINAL 0x18
VK_HANJA 0x19
VK_KANJI
VK_ESCAPE 0x1B Esc
VK_CONVERT 0x1C
VK_NONCONVERT 0x1D
VK_ACCEPT 0x1E
VK_MODECHANGE 0x1F
VK_SPACE 0x20 Spacebar
VK_PRIOR 0x21 Page Up
VK_NEXT 0x22 Page Down
VK_END 0x23 End
VK_HOME 0x24 Home
VK_LEFT 0x25 左方向キー
VK_UP 0x26 上方向キー
VK_RIGHT 0x27 右方向キー
VK_DOWN 0x28 下方向キー
VK_SELECT 0x29
VK_PRINT 0x2A
VK_EXECUTE 0x2B
VK_SNAPSHOT 0x2C PringScreen
VK_INSERT 0x2D Insert
VK_DELETE 0x2E Delete
VK_HELP 0x2F
-- 0x30~0x39 メインキーボード 0~9
-- 0x41~0x5A 文字キー A から Z
VK_LWIN 0x5B 左 Windows キー
VK_RWIN 0x5C 右 Windows キー
VK_APPS 0x5D アプリケーションキー
VK_NUMPAD0 0x60 NumLock がオンになっている状態で
それぞれテンキーの 0 ~ 9 まで
VK_NUMPAD1 0x61
VK_NUMPAD2 0x62
VK_NUMPAD3 0x63
VK_NUMPAD4 0x64
VK_NUMPAD5 0x65
VK_NUMPAD6 0x66
VK_NUMPAD7 0x67
VK_NUMPAD8 0x68
VK_NUMPAD9 0x69
VK_MULTIPLY 0x6A テンキー *
VK_ADD 0x6B テンキー +
VK_SEPARATOR 0x6C
VK_SUBTRACT 0x6D テンキー -
VK_DECIMAL 0x6E テンキー .
VK_DIVIDE 0x6F テンキー /
VK_F1 0x70 それぞれ F1 から F24 までのファンクションキー
VK_F2 0x71
VK_F3 0x72
VK_F4 0x73
VK_F5 0x74
VK_F6 0x75
VK_F7 0x76
VK_F8 0x77
VK_F9 0x78
VK_F10 0x79
VK_F11 0x7A
VK_F12 0x7B
VK_F13 0x7C
VK_F14 0x7D
VK_F15 0x7E
VK_F16 0x7F
VK_F17 0x80
VK_F18 0x81
VK_F19 0x82
VK_F20 0x83
VK_F21 0x84
VK_F22 0x85
VK_F23 0x86
VK_F24 0x87
VK_NUMLOCK 0x90 Num Lock
VK_SCROLL 0x91 Scroll
VK_LSHIFT 0xA0 Windows NT : 左Shiftキー
VK_RSHIFT 0xA1 Windows NT : 右Shiftキー
VK_LCONTROL 0xA2 Windows NT : 左Ctrlキー
VK_RCONTROL 0xA3 Windows NT : 右Ctrlキー
VK_LMENU 0xA4 Windows NT : 左Altキー
VK_RMENU 0xA5 Windows NT : 右Altキー
VK_PROCESSKEY 0xE5 WINVER が 0x400 と同じかそれ以上であれば定義される
VK_ATTN 0xF6
VK_CRSEL 0xF7
VK_EXSEL 0xF8
VK_EREOF 0xF9
VK_PLAY 0xFA
VK_ZOOM 0xFB
VK_NONAME 0xFC
VK_PA1 0xFD
VK_OME_CLEAR 0xFE


CreateRectRgn()

HRGN CreateRectRgn(
int nLeftRect , int nTopRect ,
int nRightRect , int nBottomRect
);

長方形のリージョンを作成します

nLeftRect - 左上隅のX座標を指定します
nTopRect - 左上隅のY座標を指定します
nRigthRect - 右下隅のX座標を指定します
nButtomRect - 右下隅のY座標を指定します

戻り値 - 成功するとリージョンのハンドル。失敗すると、NULL

CreateRectRgnIndirect()

HRGN CreateRectRgnIndirect(CONST RECT *lprc);
長方形のリージョンを作成します

lprc - 長方形の座標が入った RECT 構造体へのポインタを指定します

戻り値 - 成功するとリージョンのハンドル。失敗すると、NULL

CreateEllipticRgn()

HRGN CreateEllipticRgn(
int nLeftRect , int nTopRect,
int nRightRect , int nBottomRect
);

楕円のリージョンを作成します

nLeftRect - 左上隅のX座標を指定します
nTopRect - 左上隅のY座標を指定します
nRigthRect - 右下隅のX座標を指定します
nButtomRect - 右下隅のY座標を指定します

戻り値 - 成功するとリージョンのハンドル。失敗すると、NULL

CreateEllipticRgnIndirect()

HRGN CreateEllipticRgnIndirect(CONST RECT *lprc;); 楕円のリージョンを作成します

lprc - 長方形の座標が入った RECT 構造体へのポインタを指定します

戻り値 - 成功するとリージョンのハンドル。失敗すると、NULL

CreateRoundRect()

HRGN CreateRoundRectRgn(
int nLeftRect , int nTopRect ,
int nRightRect , int nBottomRect ,
int nWidthEllipse , int nHeightEllipse 
);

角の丸い長方形のリージョンを作成します

nLeftRect - 左上隅のX座標を指定します
nTopRect - 左上隅のY座標を指定します
nRigthRect - 右下隅のX座標を指定します
nButtomRect - 右下隅のY座標を指定します
nWidthEllipse - 角の丸みの幅を指定します
nHeightEllipse - 角の丸みの高さを指定します

戻り値 - 成功するとリージョンのハンドル。失敗すると、NULL

CreatePolygonRgn()

HRGN CreatePolygonRgn(
CONST POINT *lppt,
int cPoints,
int fnPolyFillMode
);

多角形のリージョンを作成します

lppt - 各頂点の座標を示す POINT 構造体の配列へのポインタを指定します
cPoints - 頂点の数を指定します
fnPoluFillMode - 多角形塗りつぶしモードを指定します

戻り値 - 成功するとリージョンのハンドル。失敗すると、NULL

塗りつぶしモードは次の定数を指定します

定数 解説
ALTERNATE 交互モードを選択します
多角形の各走査行について、多角形の奇数番目の辺から
偶数番目の辺までの間の領域が塗りつぶされます
WINDING 全域モードを選択します
0 以外のワインディング値をもつすべての領域が塗りつぶされます

CreatePolyPolygonRgn()

HRGN CreatePolyPolygonRgn(
CONST POINT *lppt,
CONST INT *lpPolyCounts,
int nCount,
int fnPolyFillMode
);

複数の多角形のリージョンを作成します

lppt - 多角形の角頂点の位置を表した配列へのポインタを指定します
lpPolyCounts - 各多角形の頂点の数が入った配列へのポインタを指定します
nCount - 多角形の総数を指定します
fnPolyFillMode - 多角形の塗りつぶしモードを指定します

戻り値 - 成功するとリージョンのハンドル。失敗すると、NULL

塗りつぶしモードは次の定数を指定します

定数 解説
ALTERNATE 交互モードを選択します
多角形の各走査行について、多角形の奇数番目の辺から
偶数番目の辺までの間の領域が塗りつぶされます
WINDING 全域モードを選択します
0 以外のワインディング値をもつすべての領域が塗りつぶされます

FillRgn()

BOOL FillRgn(HDC hdc , HRGN hrgn , HBRUSH hbr);

指定されたブラシを使って、指定されたリージョンを塗りつぶします

hdc - デバイスコンテキストへのハンドルを指定します
hrgn - 塗りつぶすリージョンのハンドルを指定します
hbr - ブラシのハンドルを指定します

戻り値 - 成功すると 0 以外、失敗すると 0

FrameRgn()

BOOL FrameRgn(
HDC hdc ,
HRGN hrgn ,
HBRUSH hbr ,
int nWidth , int nHeight
);

指定されたブラシを使って、指定されたリージョンの境界を描きます

hdc - デバイスコンテキストへのハンドルを指定します
hrgn - 塗りつぶすリージョンのハンドルを指定します
hbr - ブラシのハンドルを指定します
nWidth - 水平方向の境界の幅を指定します
nHeight - 垂直方向の境界の幅を指定します

戻り値 - 成功すると 0 以外、失敗すると 0

PaintRgn()

BOOL PaintRgn(HDC hdc , HRGN hrgn);

デバイスコンテキストに選択されているブラシを使って
指定されたリージョンを塗りつぶします

hdc - デバイスコンテキストへのハンドルを指定します
hrgn - 塗りつぶすリージョンのハンドルを指定します

戻り値 - 成功すると 0 以外、失敗すると 0

InvalidateRect()

BOOL InvalidateRect(HWND hWnd , CONST RECT *lpRect , BOOL bErase);

指定された長方形を更新領域として追加する

hWnd - ウィンドウのハンドルを指定。NULL の場合、全てのウィンドウを無効化します
lpRect - RECT 構造体のポインタを指定。NULL の場合クライアント領域全体が対象
bErase - TRUE なら BeginPaint() 実行時に背景を消去、FALSE ならそのまま

戻り値 - 成功すれば 0 以外、失敗すれば 0

InvalidateRgn()

BOOL InvalidateRgn(HWND hWnd , HRGN hRgn , BOOL bErase);

指定されたリージョンを更新領域として追加する

hWnd - ウィンドウのハンドルを指定。NULL の場合、全てのウィンドウを無効化します
lpRgn - リージョンのハンドルを指定。NULL の場合クライアント領域全体が対象
bErase - TRUE なら BeginPaint() 実行時に背景を消去、FALSE ならそのまま

戻り値 - 常に 0 以外

ValidateRect()

BOOL ValidateRect(HWND hWnd , CONST RECT *lpRect);

指定された長方形を更新領域から削除する

hWnd - ウィンドウのハンドルを指定。NULL の場合、全てのウィンドウを無効化します
lpRect - RECT 構造体のポインタを指定。NULL の場合クライアント領域全体が対象

戻り値 - 成功すれば 0 以外、失敗すれば 0

ValidateRgn()

BOOL ValidateRgn(HWND hWnd , HRGN hRgn);

指定されたリージョンを更新領域から削除する

hWnd - ウィンドウのハンドルを指定
lpRgn - リージョンのハンドルを指定。NULL の場合クライアント領域全体が対象

戻り値 - 成功すれば 0 以外、失敗すれば 0

CombineRgn()

int CombineRgn(
HRGN hrgnDest ,
HRGN hrgnSrc1 , HRGN hrgnSrc2 ,
int fnCombineMode
);

二つのリージョンを組み合わせた新しいリージョンを生成する

hrgnDest - 結合した結果となる有効なリージョンを指定します
hrgnSrc1 - 結合する一方のリージョンを指定します
hrgnSrc2 - 結合するもう一方のリージョンを指定します
fnCombineMode - 結合方法を表す定数を指定します

戻り値 - 結合結果を表す定数

結合方法を表す定数は、次の定数を指定します

定数 解説
RGN_AND 2つのリージョンの重なり合う領域を、新しいリージョンとします
RGN_COPY hrgnSrc1 のコピーを作成します
hrgnScr2は無視する
RGN_DIFF hrgnSrc1 から、hrgnSrc2 を除いた領域を、新しいリージョンとします
RGN_OR 両方のリージョンを組み合わせた領域を、新しいリージョンとします
RGN_XOR 両方のリージョンを組み合わせた領域から
両方のリージョンが重なり合う領域を除いた領域を、新しいリージョンとします

戻り値は、次の定数のいずれかになります

定数 解説
NULLREGION リージョンは空です
SIMPLEREGION リージョンは単一の長方形です
COMPLEXREGION リージョンは単一の長方形よりも複雑な形です
ERROR リージョンは作成されませんでした


GetDeviceCaps()

int GetDeviceCaps(HDC hdc , int nIndex);

指定されたデバイスに関するデバイス固有の情報を取得します

hdc - デバイスコンテキストのハンドルを指定します
nIndex - 取得する項目を定数で指定します

戻り値 - 要求した項目の情報

定数 解説
DRIVERVERSION デバイスドライバのバージョン
TECHNOLOGY デバイステクノロジー
次の値のいずれかになります。
意味
DT_PLOTTER ベクタプロッタ
DT_RASDISPLAY ラスタディスプレイ
DT_RASPRINTER ラスタプリンタ
DT_RASCAMERA ラスタカメラ
DT_CHARSTREAM 文字ストリーム
DT_METAFILE メタファイル
DT_DISPFILE ディスプレイファイル
hdc パラメータで拡張メタファイルのデバイスコンテキストを指定したときは
CreateEnhMetaFile()関数に対して指定した参照デバイスのデバイステクノロジーが返ります
拡張メタファイルのデバイスコンテキストかどうかを調べるには
GetObjectType() 関数を使います
HORZSIZE 物理画面の幅 (ミリメートル単位)
VERTSIZE 物理画面の高さ (ミリメートル単位)
HORZRES 画面の幅 (ピクセル単位)
VERTRES 画面の高さ (ピクセル単位)
LOGPIXELSX 画面の水平方向のピクセル数 (論理インチ当たり)
LOGPIXELSY 画面の垂直方向のピクセル数 (論理インチ当たり)
BITSPIXEL ピクセルあたりのカラービットの数 (プレーンごと)
PLANES カラープレーンの数
NUMBRUSHES デバイス固有のブラシの数
NUMPENS デバイス固有のペンの数
NUMFONTS デバイス固有のフォントの数
NUMCOLORS デバイスのカラーテーブルのエントリ数
ピクセルあたり 8 ビットを超える場合は -1
ASPECTX 線の描画に使うデバイスピクセルの相対幅
ASPECTY 線の描画に使うデバイスピクセルの相対高さ
ASPECTXY 線の描画に使うデバイスピクセルの対角線の幅
PDEVICESIZE 予約済み
CLIPCAPS デバイスのクリッピング能力を示すフラグ
長方形のクリップをサポートする場合は 1
それ以外の場合は 0
SIZEPALETTE システムパレット内のエントリ数
RASTERCAPS インデックスに
RC_PALETTE ビットがセットされていること
NUMRESERVED システムパレット内の予約エントリ数
RASTERCAPS インデックスに
RC_PALETTE ビットがセットされていること
COLORRES デバイスの実際のカラー解像度を表す
ピクセル当たりのビット数
RASTERCAPS インデックスに
RC_PALETTE ビットがセットされていること
PHYSICALWIDTH 印刷デバイス用
物理的なページ全体の幅 (デバイス単位)
PHYSICALHEIGHT 印刷デバイス用
物理的なページ全体の高さ (デバイス単位)
PHYSICALOFFSETX 印刷デバイス用
物理的なページの左辺から
印刷可能領域の左辺までの距離 (デバイス単位)
PHYSICALOFFSETY 印刷デバイス用
物理的なページの上辺から
印刷可能領域の上辺までの距離 (デバイス単位)
VREFRESH Windows NT のみ
現在のディスプレイ出力の垂直周波数 (Hz)
0 または 1 はディスプレイのデフォルト周波数を示す
DESKTOPHORZRES Windows NT のみ
仮想デスクトップの幅 ( ピクセル単位 )
DESKTOPVERTRES Windows NT のみ
仮想デスクトップの高さ (ピクセル単位)
BLTALIGNMENT Windows NT のみ
デバイスに適した水平方向のアラインメント
適したアラインメントが特にないときは 0
RASTERCAPS デバイスのラスタ能力を示します
次の値の組み合わせになります
意味
RC_BANDING バンド処理のサポートが必要
RC_BITBLT ビットマップの転送をサポート
RC_BITMAP64 64K バイトより大きいビットマップをサポート
RC_DI_BITMAP SetDIBits 関数と GetDIBits 関数をサポート
RC_DIBTODEV SetDIBitsToDevice 関数をサポート
RC_FLOODFILL 塗りつぶしをサポート
RC_GDI20_OUTPUT Windows2.0 の機能をサポート
RC_PALETTE パレットベースのデバイス
RC_SCALING スケーリングをサポート
RC_STRETCHBLT StretchBlt 関数をサポート
RC_STRETCHDIB StretchDIBits 関数をサポート
CURVECAPS デバイスの曲線描画能力を示します
次の値の組み合わせになります
意味
CC_NONE 曲線をサポートしない
CC_CIRCLES 円をサポート
CC_PIE 扇形をサポート
CC_CHORD 弓形をサポート
CC_ELLIPSES 楕円をサポート
CC_WIDE 太い線をサポート
CC_STYLED スタイル付きの線をサポート
CC_WIDESTYLED スタイル付きの太い線をサポート
CC_INTERIORS 内部の塗りつぶしをサポート
CC_ROUNDRECT 角の丸い長方形をサポート
LINECAPS デバイスの直線描画能力を示します
次の値の組み合わせになります
意味
LC_NONE 直線をサポートしない
LC_POLYLINE 折れ線をサポート
LC_MARKER マーカーをサポート
LC_POLYMARKER ポリマーカーをサポート
LC_WIDE 太い直線をサポート
LC_STYLED スタイル付きの直線をサポート
LC_WIDESTYLED スタイルを持つ太い直線をサポート
LC_INTERIORS 内部の塗りつぶしをサポート
POLYGONALCAPS デバイスの多角形描画能力を示します
次の値の組み合わせになります
意味
PC_NONE 多角形をサポートしない
PC_POLYGON 交互モードの塗りつぶしをサポート
PC_RECTANGLE 長方形をサポート
PC_WINDPOLYGON 全域モードでの塗りつぶしをサポート
PC_SCANLINE 単一の走査行の描画をサポート
PC_WIDE 太い線をサポート
PC_STYLED スタイル付きの線をサポート
PC_WIDESTYLED スタイル付きの太い線をサポート
PC_INTERIORS 内部の塗りつぶしをサポート
TEXTCAPS デバイスがテキスト表示能力を示します
次の値の組み合わせになります
意味
TC_OP_CHARACTER キャラクタの出力精度をサポート
TC_OP_STROKE ストロークの出力精度をサポート
TC_CP_STROKE ストローククリップの精度をサポート
TC_CR_90 キャラクタの 90 度回転をサポート
TC_CR_ANY キャラクタの任意の角度の回転をサポート
TC_SF_X_YINDEP x 方向と y 方向の両方の
独立したスケーリングをサポート
TC_SA_DOUBLE キャラクタの 2 倍のスケーリングをサポート
TC_SA_INTEGER キャラクタの整数倍のスケーリングをサポート
TC_SA_CONTIN キャラクタの任意の倍率の
スケーリングをサポート
TC_EA_DOUBLE 太字をサポート
TC_IA_ABLE イタリック体をサポート
TC_UA_ABLE 下線をサポート
TC_SO_ABLE 取り消し線をサポート
TC_RA_ABLE ラスタフォントをサポート
TC_VA_ABLE ベクトルフォントをサポート
TC_RESERVED 予約済み (0)
TC_SCROLLBLT ビットブロック転送による
スクロールをサポートしない

GetSystemMetrics()

int GetSystemMetrics(int nIndex);

システム設定や画面のデザインを構成する要素のサイズを取得します
要素のサイズはピクセル単位で返されます

nIndex - 要求する値を表す定数を指定します

戻り値 - 要求した値、または定数、またはブール値。失敗すると 0

nIndex には、次のいずれかの定数を指定します
SM_CX* は横幅、SM_CY* は高さを要求します

定数 解説
SM_ARRANGE 最小化ウィンドウの配置方法を示す値を取得します
SM_CLEANBOOT システムがどのように起動されたかを示す値を取得します
次の値のいずれかになります
0 = 通常のブート
1 = 「 Safe モード」でのブート
2 = 「ネットワークを使った Safe モード」でのブート
SM_CMOUSEBUTTONS マウスボタンの数 (マウスがないときは 0) を取得します
SM_CXBORDER,
SM_CYBORDER
非立体的なウィンドウの縁の幅と高さを取得します
SM_CXEDGE と SM_CYEDGE も参照
SM_CXCURSOR,
SM_CYCURSOR
マウスカーソルのサイズを取得します
SM_CXDLGFRAME,
SM_CYDLGFRAME
SM_CXFIXEDFRAME, SM_CYFIXEDFRAME と同じ
SM_CXDOUBLECLK,
SM_CYDOUBLECLK
ダブルクリックにおける 2 回目の
クリック位置の許容範囲を取得します
1 回目のクリックの後、許容範囲内かつ
許容時間内にもう一度マウスをクリックすると
ダブルクリックが行れたものとみなされます
SM_CXDRAG,
SM_CYDRAG
ドラッグ操作の開始とはみなされない範囲を取得します
マウスボタンを押した後、この範囲を越えてマウスを動かすと
ドラッグ操作が開始されたものとみなされます
SM_CXEDGE,
SM_CYEDGE
立体的なウィンドウの縁の幅と高さを取得します
SM_CXBORDER と SM_CYBORDER の 3D 版です
SM_CXFIXEDFRAME,
SM_CYFIXEDFRAME
タイトルバーを持ち、かつ
サイズが変更できないウィンドウにおける
枠の幅と高さを取得します
SM_CXDLGFRAME, SM_CYDLGFRAME と同じ
SM_CXFRAME,
SM_CYFRAME
SM_CXSIZEFRAME, SM_CYSIZEFRAME と同じ
SM_CXFULLSCREEN,
SM_CYFULLSCREEN
最大化されたウィンドウのクライアント領域のサイズを取得します
SM_CXHSCROLL,
SM_CYHSCROLL
水平スクロールバーの矢印の幅
または、水平スクロールバーの高さを取得します
SM_CXHTHUMB 水平スクロールバーのつまみの幅を取得します
SM_CXICON,
SM_CYICON
アイコンのデフォルトのサイズを取得します
通常は 32×32 ピクセルです
SM_CXICONSPACING,
SM_CYICONSPACING
アイコンを整列するときに使われるグリッドのサイズを取得します
常に、SM_CXICON, SM_CYICON 以上になります
SM_CXMAXIMIZED,
SM_CYMAXIMIZED
最大化されたウィンドウのサイズを取得します
SM_CXMAXTRACK,
SM_CYMAXTRACK
ウィンドウの最大トラッキングサイズを取得します
このサイズよりも大きくウィンドウの枠をドラッグすることはできません
アプリケーションで WM_GETMINMAXINFO メッセージを処理すると
最大トラッキングサイズが変更できます
SM_CXMENUCHECK,
SM_CYMENUCHECK
メニューのチェックマークのサイズを取得します
SM_CXMENUSIZE,
SM_CYMENUSIZE
メニューバーに表示されるボタンのサイズを取得します
SM_CXMIN,
SM_CYMIN
ウィンドウの最小サイズを取得します
SM_CXMINIMIZED,
SM_CYMINIMIZED
最小化されたウィンドウのデフォルトのサイズを取得します
SM_CXMINSPACING,
SM_CYMINSPACING
最小化されたウィンドウの配置に使われる
グリッドのサイズを取得します
常に、SM_CXMINIMIZED, SM_CYMINIMIZED 以上になります
SM_CXMINTRACK,
SM_CYMINTRACK
ウィンドウの最小トラッキングサイズを取得します
このサイズよりも小さくウィンドウの枠をドラッグすることはできません
アプリケーションで WM_GETMINMAXINFO メッセージを処理すると
最小トラッキングサイズが変更できます
SM_CXSCREEN,
SM_CYSCREEN
画面全体のサイズを取得します
SM_CXSIZE,
SM_CYSIZE
ウィンドウのタイトルバー内のボタンのサイズを取得します
SM_CXSIZEFRAME,
SM_CYSIZEFRAME
サイズが変更できるウィンドウにおける枠の幅と高さを取得します
SM_CXFRAME, SM_CYFRAME と同じ
SM_CXSMICON,
SM_CYSMICON
小さいアイコンの推奨サイズを取得します
SM_CXSMSIZE,
SM_CYSMSIZE
小さいタイトルバー内のボタンのサイズを取得します
SM_CXVSCROLL,
SM_CYVSCROLL
垂直スクロールバーの幅
または、垂直スクロールバーの矢印の高さを取得します
SM_CYCAPTION タイトルバーの高さを取得します
SM_CYKANJIWINDOW 画面下の漢字ウィンドウの高さを取得します
SM_CYMENU 一行分のメニューバーの高さを取得します
SM_CYSMCAPTION 小さなタイトルバーの高さを取得します
SM_CYVTHUMB 垂直スクロールバーのつまみの高さを取得します
SM_DBCSENABLED USER.EXE がダブルバイト文字セット (DBCS) を
サポートしているかどうかを示す値を取得します
サポートしているときは 0 以外の値が
サポートしていないときは 0 が返ります
SM_DEBUG USER.EXE がデバッグバージョンかどうかを示す値を取得します
デバッグバージョンのときは 0 以外の値が
デバッグバージョンでないときは 0 が返ります
SM_MENUDROPALIGNMENT メニューバーの項目に対して
ドロップダウンメニューが右寄せされるかどうかを示す値を取得します
右寄せされるときは 0 以外の値が
左寄せされるときは 0 が返ります
SM_MIDEASTENABLED ヘブライ語やアラビア語が
利用可能なシステムかどうかを示す値を取得します
利用できるときは TRUE が返ります
SM_MOUSEPRESENT マウスが接続されているかどうかを示す値を取得します
接続されているときは 0 以外の値が
接続されていないときは 0 が返ります
SM_MOUSEWHEELPRESENT Windows NT
ホイールを持つマウスが接続されているかどうかを示す値を取得します
接続されているときは 0 以外の値が
接続されていないときは 0 が返ります
SM_NETWORK ネットワークが存在するかどうかを示す値を取得します
存在するときは最下位ビットが 1 の値が
そうでないときは最下位ビットが 0 の値が返ります
最下位ビット以外のビットは予約されています
SM_PENWINDOWS Window for Pen computing extensions が
インストールされているかどうかを示す値を取得します
インストールされているときは 0 以外の値が
インストールされていないときは 0 が返ります
SM_SECURE セキュリティが存在するかどうかを示す値を取得します
存在するときは TRUE が
存在しないときは FALSE が返ります
SM_SHOWSOUNDS ユーザー補助の「サウンド解説を使う」が
有効になっているかどうかを調べます
有効になっているときは 0 以外の値が
そうでないときは 0 が返ります
SM_SLOWMACHINE コンピュータのプロセッサが遅いかどうかを示す値を取得します
遅いときは TRUE が
それ以外のときは FALSE が返ります
SM_SWAPBUTTON 左右のマウスボタンの機能を交換しているかどうかを示す値を取得します
交換しているときは 0 以外の値が
交換していないときは 0 が返ります

SM_ARRANGE を指定すると、最小化ウィンドウの配置方法を示す値が返ります
配置方法は、開始位置と方向から構成されます

定数 解説
開始位置
ARW_BOTTOMLEFT スクリーンの左下隅 (デフォルト)
ARW_BOTTOMRIGHT スクリーンの右下隅 (ARW_STARTRIGHT と同じ)
ARW_HIDE 画面の外に隠す
ARW_TOPLEFT スクリーンの左上隅 (ARW_STARTTOP と同じ)
ARW_TOPRIGHT スクリーンの右上隅 (ARW_STARTTOP | ARW_STARTRIGHT と同じ)
方向
ARW_DOWN 上から下へ、垂直方向に配置
ARW_LEFT 左から右へ、水平方向に配置
ARW_RIGHT 右から左へ、水平方向に配置
ARW_UP 下から上へ、垂直方向に配置

GetSystemInfo()

VOID GetSystemInfo(LPSYSTEM_INFO lpSystemInfo);

システムで用いられているハードウェアの情報を取得します

lpSystemInfo - SYSTEM_INFO 構造体へのポインタを指定します

GetVersionEx()

BOOL GetVersionEx(LPOSVERSIONINFO lpVersionInformation);

実行中の OS のバージョン情報を取得します

lpVersionInfomation - OSVERSIONINFO 構造体へのポインタを指定します

戻り値 - 成功すれば 0 以外、失敗すれば 0

LOWORD()

WORD LOWORD(DWORD dwValue);

指定されたダブルワードの下位ワードを返します

dwValue - 分割するダブルワードの値

戻り値 - 指定されたダブルワードの下位ワード

HIWORD()

WORD HIWORD(DWORD dwValue);

指定されたダブルワードの上位ワードを返します

dwValue - 分割するダブルワードの値

戻り値 - 指定されたダブルワードの上位ワード 

GetCursorPos()

BOOL GetCursorPos(LPPOINT lpPoint);

現在のマウスカーソルのスクリーン座標を得ます

lpPoint - 座標を格納する POINT 構造体へのポインタを指定します

戻り値 - 関数が成功すれば 0 以外。失敗すれば0

SetCursorPos()

BOOL SetCursorPos(int X , int Y)

マウスカーソルの位置を指定座標に移動します

X - X座標を指定します
Y - Y座標を指定します

戻り値 - 関数が成功すれば 0 以外。失敗すれば0

ShowCursor()

int ShowCursor(BOOL bShow);

マウスカーソルの内部カウントを変更します
TRUE を指定すればインクリメント FALSE を指定すればデクリメントし
0未満であれば、カーソルを非表示にします

bShow - カウント操作のためのブーリアンを指定します

戻り値 - 新しいカウントの値

SetCapture()

HWND SetCapture(HWND hWnd);

マウスをキャプチャーします

hWnd - ウィンドウのハンドルを指定します

戻り値 - 以前マウスをキャプチャーしていたウィンドウのハンドル。ない場合は NULL

ReleaseCapture()

BOOL ReleaseCapture(VOID);

マウスのキャプチャーを解放します

戻り値 - 関数が成功すると 0 以外、失敗すると 0

PeekMessage()

BOOL PeekMessage(
LPMSG lpMsg ,
HWND hWnd ,
UINT wMsgFilterMin , UINT wMsgFilterMax ,
UINT wRemoveMsg
);
スレッドのメッセージキューにメッセージがあるかどうかをチェックし
あれば、指定された構造体にそのメッセージを格納します

lpMsg - メッセージ情報を格納する、MSG 構造体型変数のポインタを指定します
hWnd - メッセージを取得するウィンドウのハンドルを指定します。全ての場合は NULL
wMsgFilterMin - メッセージの最小値を指定し、フィルタリングします。しない場合は0
wMsgFilterMax - メッセージの最大値を指定し、フィルタリングします。しない場合は0

戻り値 - メッセージを取得したときは 0 以外、取得しなかったときは 0

SetTimer()

UINT SetTimer(
HWND hWnd , UINT nIDEvent ,
UINT uElapse ,
TIMERPROC lpTimerFunc
);
タイマーを指定したタイムアウト値で作成します

hWnd - 関連付けるウィンドウのハンドル。関連付けない場合は NULL を指定します
nIDEvent - 0 以外でタイマーの ID を指定します。hWnd が NULL ならば無視します
uElapse - タイムアウト値をミリ秒単位で指定します
lpTimerFunc - 時間が経過すると呼び出す TIMERPROC 型関数へのポインタ

戻り値 - 新しく設定した ID

KillTimer()

BOOL KillTimer(HWND hWnd , UINT uIDEvent);

指定したタイマーを破棄します

hWnd - タイマーに関連付けられているウィンドウへのハンドル
uIDEvent - タイマーのID

戻り値 - 成功すると 0 以外。失敗すると 0

TimerProc

VOID CALLBACK TimerProc(
HWND hwnd , UINT uMsg ,
UINT idEvent , DWORD dwTime
);
アプリケーション定義のコールバック関数です
WM_TIMER を処理します

hwnd - タイマーに関連付けられているウィンドウへのハンドルが入ります
uMsg - WM_TIMER が入ります
idEvent - タイマーのIDが入ります
dwTime - Windows が起動してからの経過時間がミリ秒単位で入ります

GetLocalTime()

VOID GetLocalTime(LPSYSTEMTIME lpSystemTime);

現在のローカル日時を取得します

lpSystemTime - 時間を格納する SYSTEMTIME 構造体へのポインタを指定します

GetSystemTime()

VOID GetSystemTime(LPSYSTEMTIME lpSystemTime);

現在の協定世界時 UTC を取得します

lpSystemTime - 時間を格納する SYSTEMTIME 構造体へのポインタを指定します

SetScrollInfo()

int SetScrollInfo(
HWND hwnd , int fnBar ,
LPSCROLLINFO lpsi , BOOL fRedraw
);
スクロールバーの情報を設定します
関数を呼び出す前にSCROLLINFOのcbSizeとfMaskを指定する

hwnd - ウィンドウまたはスクロールバーコントロールのハンドルを指定します
fnBar - 対象とするスクロールバーを指定します
lpsi - 設定する情報が入った、SCROLLINFO 構造体へのポインタを指定します
fRedraw - 0 以外の値を指定すると再描画され、0 を指定すると再描画されません

戻り値 - スクロールバーの現在のスクロール位置が返ります

fnBar には次の値のいずれかを指定します

定数 解説
SB_CTL スクロールバーコントロールの情報を設定します
hwnd は、スクロールバーコントロールのハンドルでなければなりません
SB_HORZ 水平スクロールバーの情報を設定します
hwnd は、ウィンドウのハンドルでなければなりません
SB_VERT 垂直スクロールバーの情報を設定します
hwnd は、ウィンドウのハンドルでなければなりません

GetScrollInfo()

BOOL GetScrollInfo(HWND hwnd , int fnBar , LPSCROLLINFO lpsi);

スクロールバーの情報を取得します
関数を呼び出す前にSCROLLINFOのcbSizeとfMaskを指定する

hwnd - ウィンドウまたはスクロールバーコントロールのハンドルを指定します
fnBar - 対象とするスクロールバーを指定します
lpsi - 情報を格納する SCROLLINFO 構造体 へのポインタを指定します

戻り値 - 成功すれば 0 以外、失敗すれば 0

fnBar には次の値のいずれかを指定します

定数 解説
SB_CTL スクロールバーコントロールの情報を設定します
hwnd は、スクロールバーコントロールのハンドルでなければなりません
SB_HORZ 水平スクロールバーの情報を設定します
hwnd は、ウィンドウのハンドルでなければなりません
SB_VERT 垂直スクロールバーの情報を設定します
hwnd は、ウィンドウのハンドルでなければなりません

SendMessage()

LRESULT SendMessage(
HWND hWnd , UINT Msg ,
WPARAM wParam , LPARAM lParam
);
メッセージを一つ、または複数のウィンドウに送ります
指定されたウィンドウのウィンドウプロシージャを呼び出し
そのプロシージャが処理し終わった時点で制御が返されます

hWnd - メッセージを送るウィンドウのハンドルを指定します
Msg - 送信するメッセージを指定します
wParam - メッセージの情報を指定します
lParam - メッセージの情報を指定します

戻り値 - メッセージの処理の結果を受けます

PostMessage()

BOOL PostMessage(
HWND hWnd , UINT Msg ,
WPARAM wParam , LPARAM lParam
);
メッセージを一つ、または複数のウィンドウに関連付けられた
メッセージキューにメッセージをポストし、制御を返します

hWnd - メッセージを送るウィンドウのハンドルを指定します
Msg - 送信するメッセージを指定します
wParam - メッセージの情報を指定します
lParam - メッセージの情報を指定します

戻り値 - 成功すれば 0 以外、失敗すれば 0

GetWindowLong

LONG GetWindowLong(HWND hWnd , int nIndex);

ウィンドウの情報を返します

hWnd - 情報を取得したいウィンドウのハンドル
nIndex - 取得したい情報を表す定数

戻り値 - 要求したデータ。失敗したら 0

nIndex は、拡張ウィンドウメモリ以外のデータを取得するときは以下の定数を指定します

定数 解説
GWL_EXSTYLE 拡張ウィンドウスタイルを取得します
GWL_STYLE ウィンドウスタイルを取得します
GWL_WNDPROC ウィンドウプロシージャのアドレス
またはウィンドウプロシージャのアドレスを示すハンドルを取得します
GWL_HINSTANCE アプリケーションのインスタンスハンドルを取得します
GWL_HWNDPARENT 親ウィンドウがあれば、そのハンドルを取得します
GWL_ID ウィンドウの ID を取得します
GWL_USERDATA ウィンドウに関連付けられた
アプリケーション定義の 32 ビット値を取得します

SetWindowText()

BOOL SetWindowText(HWND hWnd , LPCTSTR lpString);

ウィンドウのタイトル、またはコントロールのテキストを設定します

hWnd - ウィンドウ (またはテキストを持つコントロール) のハンドルを指定します
lpString - 設定する NULL で終わる文字列へのポインタを指定します

戻り値 - 関数が成功すると 0 以外、失敗すると 0

GetWindowText()

int GetWindowText(HWND hWnd , LPTSTR lpString , int nMaxCount);

ウィンドウのタイトル、またはコントロールのテキストを取得します

hWnd - ウィンドウ (またはテキストを持つコントロール) のハンドルを指定します
lpString - 取得したテキストを格納するための文字列バッファ
nMaxCount - lpString のバッファサイズ。終端文字も含む

バッファの長さが足りない場合、その分のテキストが切り捨てられます

戻り値 - コピーされた文字列の文字数(終端の NULL 文字は含まない)、失敗すると 0

GetWindowTextLength()

int GetWindowTextLength(HWND hWnd);

ウィンドウのタイトル、またはコントロールのテキストの文字数を取得します

hWnd - ウィンドウ (またはテキストを持つコントロール) のハンドルを指定します

戻り値 - 文字数。テキストがない場合は 0

IsWindowVisible()

BOOL IsWindowVisible(HWND hWnd);

指定されたウィンドウの表示状態を取得します

hWnd - ウィンドウのハンドルを指定します

戻り値 - 表示状態の時は 0 以外、非表示のときは 0

IsWindowEnabled()

BOOL IsWindowEnabled(HWND hWnd);

指定されたウィンドウが有効か無効を取得します

hWnd - ウィンドウのハンドルを指定します

戻り値 - 有効状態の時は 0 以外、無効状態のときは 0

EnableWindow()

BOOL EnableWindow(HWND hWnd , BOOL bEnable);

ウィンドウを有効化、または無効化します

hWnd - ウィンドウのハンドルを指定します
bEnable - TREU のときは有効化、FALSE のときは無効化します

戻り値 - ウィンドウがすでに無効のときは、0 以外。それ以外の場合は 0


GetSysColor()

DWORD GetSysColor(int nIndex);

システムカラーを取得します

nIndex - システムカラーの要素を指定します

戻り値 - 指定したシステムカラーのRGB値を返します

nIndex には次のいずれかの値を指定します

定数 解説
COLOR_3DDKSHADOW 3D オブジェクトの暗い影の色
COLOR_3DFACE,
COLOR_BTNFACE
3D オブジェクトの表面色
COLOR_3DHILIGHT,
COLOR_3DHIGHLIGHT,
COLOR_BTNHILIGHT,
COLOR_BTNHIGHLIGHT
3D オブジェクトの最も明るい色 (光源方向の縁用)
COLOR_3DLIGHT 3D オブジェクトの明るい色 (光源方向の縁用)
COLOR_3DSHADOW,
COLOR_BTNSHADOW
3D オブジェクトの影の色 (光源の反対方向の縁用)
COLOR_ACTIVEBORDER アクティブウィンドウの境界の色
COLOR_ACTIVECAPTION アクティブウィンドウのタイトルバーの色
COLOR_APPWORKSPACE マルチドキュメントインターフェイス (MDI) アプリケーションの背景色
COLOR_BACKGROUND,
COLOR_DESKTOP
デスクトップの色
COLOR_BTNTEXT プッシュボタンのテキストの色
COLOR_CAPTIONTEXT アクティブウィンドウのタイトルバーのテキストの色
COLOR_GRAYTEXT 淡色状態 (無効状態) のテキストの色
COLOR_HIGHLIGHT コントロール内における選択された項目の色
COLOR_HIGHLIGHTTEXT コントロール内における選択された項目のテキストの色
COLOR_INACTIVEBORDER 非アクティブウィンドウの境界色
COLOR_INACTIVECAPTION 非アクティブウィンドウのタイトルバーのテキストの色
COLOR_INFOBK ツールチップコントロールの背景色
COLOR_INFOTEXT ツールチップコントロールのテキストの色
COLOR_MENU メニューの背景色
COLOR_MENUTEXT メニュー内のテキストの色
COLOR_SCROLLBAR スクロールバーの軸の色
COLOR_WINDOW ウィンドウの背景色
COLOR_WINDOWFRAME ウィンドウの枠の色
COLOR_WINDOWTEXT ウィンドウ内のテキストの色

SetSysColors()

BOOL WINAPI SetSysColors(
int cElements,
CONST INT *lpaElements,
CONST COLORREF *lpaRgbValues
);
システムカラーを設定します

cElements - 設定する配列の要素数を指定します
lpaElements - 設定するシステムカラーを表した定数を指定します
lpaRgbValues - 設定する色を指定します

戻り値 - 成功すると 0 以外、失敗すると 0

lpaElements に指定する定数は GetSysColor() を参照してください

SetWindowLong()

LONG SetWindowLong(HWND hWnd , int nIndex , LONG dwNewLong);

ウィンドウの属性を変更します

hWnd - ウィンドウのハンドルを指定します
nIndex - 変更する属性を表す定数を指定します
dwNewLong - 新しく設定する値を指定します

戻り値 - 成功すると前に設定されていた値、失敗すると 0

nIndex には次の値を指定します

定数 解説
GWL_EXSTYLE 拡張ウィンドウスタイルを取得します
GWL_STYLE ウィンドウスタイルを取得します
GWL_WNDPROC ウィンドウプロシージャのアドレス
またはウィンドウプロシージャのアドレスを示すハンドルを取得します
GWL_HINSTANCE アプリケーションのインスタンスハンドルを取得します
GWL_HWNDPARENT アプリケーションのインスタンスハンドルを取得します
GWL_ID ウィンドウの ID を取得します
GWL_USERDATA ウィンドウに関連付けられた
アプリケーション定義の 32 ビット値を取得します

hWnd にダイアログボックスを指定している場合は
次の値を指定することもできます

定数 解説
DWL_DLGPROC ダイアログボックスプロシージャのアドレスを設定します
DWL_MSGRESULT ダイアログボックスプロシージャ内で処理された
メッセージの戻り値を設定します
DWL_USER ハンドルやポインタなどの、アプリケーション固有の拡張情報を設定します

CallWindowProc()

LRESULT CallWindowProc(
WNDPROC lpPrevWndFunc,
HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);
指定したウィンドウプロシージャにメッセージを渡します

lpPrevWndFunc - ウィンドウプロシージャのポインタを指定します
hWnd - メッセージを受け取るウィンドウのハンドルを指定します
Msg - メッセージを指定します
wParam - メッセージの追加情報を指定します
lParam - メッセージの追加情報を指定します

戻り値 - メッセージ処理の結果が返ります

SetClassLong()

DWORD SetClassLong(HWND hWnd , int nIndex , LONG dwNewLong);

ウィンドウのウィンドウクラスのデータを変更します

hWnd - 設定するウィンドウのハンドルを指定します
nIndex - どのメンバを変更するかを表す定数を指定します
dwNewLong - 設定する値を指定します

戻り値 - 変更前の値が返りますが、失敗すると 0 が返ります

nIndex には次のいずれかの値を指定します

定数 解説
GCW_ATOM ウィンドウクラスを一意的に識別するアトム値を取得します
これは、RegisterClass 関数 (または RegisterClassEx 関数) が返すアトムと同じです
GCL_CBCLSEXTRA 拡張クラスメモリのサイズを、バイト単位で取得します
GCL_CBWNDEXTRA 拡張ウィンドウメモリのサイズを、バイト単位で取得します
このメモリへのアクセス方法については
GetWindowLong 関数や GetWindowWord 関数の説明を参照してください
GCL_HBRBACKGROUND 背景ブラシのハンドルを取得します
GCL_HCURSOR マウスカーソルのハンドルを取得します
GCL_HICON アイコンのハンドルを取得します
GCL_HICONSM 小さいアイコンのハンドルを取得します
GCL_HMODULE クラスを登録したモジュールのハンドルを取得します
GCL_MENUNAME メニュー名が入った文字列へのポインタ (またはメニューの ID) を取得します
GCL_STYLE ウィンドウクラスのスタイルを取得します
GCL_WNDPROC このクラスのウィンドウプロシージャのアドレスを取得します

GetClassLong()

DWORD GetClassLong(HWND hWnd, int nIndex);

ウィンドウに関連付けられたウィンドウクラスの値を取得します

hWnd - 取得するウィンドウのハンドルを指定します
nIndex - どのメンバを取得するかを表す定数を指定します

戻り値 - 成功すれば要求したデータ、失敗すれば 0

nIndex に指定する値は SetClassLong() を参照してください

MAKEINTRESOURCE

LPTSTR MAKEINTRESOURCE(WORD wInteger);

この関数はマクロです
整数値をリソース管理関数と互換性のあるリソースタイプに変換します

wInteger - 変換する整数値

戻り値 - 指定された値の下位ワード(上位ワードは 0)

SetCursor

HCURSOR SetCursor(HCURSOR hCursor);

カーソルを設定します
設定されているカーソルが同じものであれば即座に制御を戻します

hCursor - カーソルのハンドルを指定します

戻り値 - 以前のカーソル。なければ NULL 

LoadString()

int LoadString(
HINSTANCE hInstance , UINT uID ,
LPTSTR lpBuffer , int nBufferMax 
);
文字列リソースをバッファに読みこみます

hInscance - リソースが入っているモジュールのインスタンスハンドルを指定します
uID - リソースの識別子を指定します
lpBuffer - 文字列を格納するバッファへのポインタを指定します
nBufferMax - バッファのサイズを指定します

戻り値 - 格納したバイト数、または文字列。リソースがない場合は 0

LoadResource()

HGLOBAL LoadResource(HMODULE hModule , HRSRC hResInfo);

リソースをグローバルメモリに読みこみます

hModule - リソースが入ったモジュールのハンドルを指定します
hResInfo - リソースの情報ブロックのハンドルを指定します

戻り値 - 成功するとグローバルメモリブロックのハンドル。失敗すると NULL

FindResource()

HRSRC FindResource(HMODULE hModule , LPCTSTR lpName , LPCTSTR lpType);

指定されたりソースモジュールから
指定されたデータ型と識別子を持つリソースの情報ブロックのハンドルを取得します

hModule - リソースが入っているモジュールのハンドルを指定します
lpName - リソース識別子を指定します
lpType - リソースのデータ型を指定します

戻り値 - 情報ブロックのハンドル。失敗すると NULL

lpType には、以下の標準リソースタイプを指定することもできます

定数 解説
RT_ACCELERATOR アクセラレータテーブル
RT_ANICURSOR アニメーションカーソル
RT_ANIICON アニメーションアイコン
RT_BITMAP ビットマップリソース
RT_CURSOR ハードウェア依存のカーソルリソース
RT_DIALOG ダイアログボックス
RT_FONT フォントリソース
RT_FONTDIR フォントディレクトリリソース
RT_GROUP_CURSOR ハードウェア独立のカーソルリソース
RT_GROUP_ICON ハードウェア独立のアイコンリソース
RT_ICON ハードウェア依存のアイコンリソース
RT_MENU メニューリソース
RT_MESSAGETABLE メッセージテーブルエントリ
RT_RCDATA アプリケーション定義のリソース
RT_STRING 文字列テーブルエントリ
RT_VERSION バージョンリソース

LockResource()

LPVOID LockResource(HGLOBAL hResData);

メモリ内の指定リソースをロックします

hResData - ロックするリソースを指定します

戻り値 - ロックされたときは、リソースの最初のバイトへのポインタ。それ以外は NULL

LoadMenu()

HMENU LoadMenu(HINSTANCE hInstance , LPCTSTR lpMenuName);

メニューリソースをメモリにロードします

hInstance - メニューリソースが入っているモジュールのインスタンス
lpMenuName - メニューの識別子を指定します

戻り値 - メニューのハンドル。失敗すれば NULL

SetMenu()

BOOL SetMenu(HWND hWnd , HMENU hMen);

指定されたウィンドウにメニューを割り当てます

hWnd - ウィンドウのハンドルを指定します
hMen - メニューのハンドルを指定します。NULLを指定するとメニューを解除します

戻り値 - 成功すると 0 以外、失敗すると 0

GetSubMenu()

HMENU GetSubMenu(HMENU hMenu , int nPos);

ドロップダウンメニュー、またはサブメニューのハンドルを取得します

hMenu - 親メニューのハンドル
nPos - 開くメニューの項目の位置

戻り値 - メニューのハンドル。無い場合は NULL

TrackPopupMenu()

BOOL TrackPopupMenu(
HMENU hMenu ,
UINT uFlags ,
int x ,  int y ,
int nReserved,
HWND hWnd, 
CONST RECT *prcRect
);
指定された位置にショートカットメニューを表示
画面上のどこにでも表示することができます

hMenu - 表示するポップアップのハンドルを指定します
uFlags - メニューの表示方法などを定数で指定します
x - 表示するスクリーン座標の X 座標を指定します
y - 表示するスクリーン座標の Y 座標を指定します
nReserved - 0 を指定しなければなりません
hWnd - メニューを所持するウィンドウのハンドルを指定します
prcRect - 使用できるスクリーンの範囲を格納した RECT 構造体へのポインタ

戻り値 - 成功すれば 0 以外、失敗すれば 0

uFlags には以下の定数を組み合わせて指定します

定数 解説
水平方向
TPM_CENTERALIGN ショートカットメニューの中心を、x パラメータが指定する座標に合わせます
TPM_LEFTALIGN ショートカットメニューの左端を、x パラメータが指定する座標に合わせます
TPM_RIGHTALIGN ショートカットメニューの右端を、x パラメータが指定する座標に合わせます
垂直方向
TPM_BOTTOMALIGN ショートカットメニューの下端を、y パラメータが指定する座標に合わせます
TPM_TOPALIGN ショートカットメニューの上端を、y パラメータが指定する座標に合わせます
TPM_VCENTERALIGN ショートカットメニューの中心を、y パラメータが指定する座標に合わせます
親ウィンドウが無い場合
TPM_NONOTIFY ユーザーがメニュー項目をクリックしたとき、通知メッセージを送りません
TPM_RETURNCMD 関数の戻り値として、ユーザーが選択したメニュー項目の ID を返します
マウスボタン処理
TPM_LEFTBUTTON マウスの左ボタンでポップアップ メニューからの選択が行えるようにします
TPM_RIGHTBUTTON マウスの右ボタンでポップアップ メニューからの選択が行えるようにします

ClientToScreen()

BOOL ClientToScreen(HWND hWnd , LPPOINT lpPoint);

クライアント座標をスクリーン座標に変換します

hWnd - 変換するクライアント座標のウィンドウのハンドルを指定します
lpPoing - 変換する座標が格納されている POINT 構造体へのポインタ

戻り値 - 成功すれば 0 以外、失敗すれば 0

ScreenToClient()

BOOL ScreenToClient(HWND hWnd , LPPOINT lpPoint);

スクリーン座標をクライアント座標に変換します

hWnd - 変換するクライアント座標のウィンドウのハンドルを指定します
lpPoing - 変換する座標が格納されている POINT 構造体へのポインタ

戻り値 - 成功すれば 0 以外、失敗すれば 0

GetMenu()

HMENU GetMenu(HWND hWnd);

ウィンドウに割り当てられているメニューを取得します

hWnd - ウィンドウのハンドルを指定します

戻り値 - メニューハンドル。ウィンドウがメニューを持たないなら NULL

SetMenuItemInfo()

BOOL SetMenuItemInfo(
HMENU hMenu , UINT uItem ,
BOOL fByPosition , LPMENUITEMINFO lpmii 
);
メニューの状態を新しく設定します

hMenu - 対象のメニュー項目を持つメニューハンドルを指定します
uItem - 項目の ID またはインデックスを指定します
fByPosition - FALSE なら uItem は ID、それ以外ならインデックスであると判断します
lpmii - 変更情報を格納した MENUITEMINFO 構造体へのポインタを指定します

戻り値 - 成功すると 0 以外、失敗すると 0

GetMenuItemInfo()

BOOL GetMenuItemInfo(
HMENU hMenu , UINT uItem ,
BOOL fByPosition , LPMENUITEMINFO lpmii
);
メニューの状態を取得します

hMenu - 対象のメニュー項目を持つメニューハンドルを指定します
uItem - 項目の ID またはインデックスを指定します
fByPosition - FALSE なら uItem は ID、それ以外ならインデックスであると判断します
lpmii - 情報を格納する MENUITEMINFO 構造体へのポインタを指定します

戻り値 - 成功すると 0 以外、失敗すると 0

GetMenuItemCount()

int GetMenuItemCount(HMENU hMenu);

メニュー項目の数を取得します

hMenu - メニューのハンドルを指定します

戻り値 - メニューの項目数。失敗すれば -1

GetMenuItemID()

UINT GetMenuItemID(HMENU hMenu , int nPos);

メニュー項目の ID を取得します

hMenu - メニュー項目を持つメニューのハンドルを指定します
nPos - メニュー項目の位置を最初のメニュー項目を0とするオフセットで指定します

戻り値 - メニューの ID。NULL またはサブメニューを開いている場合は 0xFFFFFFFF


CreateMenu()

HMENU CreateMenu(VOID)

メニューを生成します

戻り値 - メニューのハンドル。失敗すれば NULL

InsertMenuItem()

BOOL WINAPI InsertMenuItem(
HMENU hMenu , UINT uItem ,
BOOL fByPosition , LPMENUITEMINFO lpmii
);
指定したメニューに新しい項目を追加します

hMenu - 対象のメニューハンドルを指定します
uItem - ID またはインデックスを指定します。この前に追加されます
fByPosition - FALSE なら uItem は ID、それ以外ならインデックスであると判断します
lpmii - 追加するメニューを表す MENUITEMINFO 構造体へのポインタを指定します

戻り値 - 成功すると 0 以外、失敗すると 0 

DeleteMenu()

BOOL DeleteMenu(HMENU hMenu , UINT uPosition , UINT uFlags);

メニューからメニュー項目を削除します
項目がサブメニューを開く場合、そのハンドルも削除します

hMenu - 項目を持つメニューのハンドルを指定します
uPosition - メニューの ID またはインデックスを指定します
uFlags - uPosition の意味を表す定数を指定します

戻り値 - 成功すれば 0 以外、失敗すれば 0

uFlags には以下の定数のいずれかを指定します

定数 解説
MF_BYCOMMAND uPosition パラメータがメニュー項目の ID を指定していることを示します
デフォルトです
MF_BYPOSITION uPosition パラメータがメニュー項目の位置を指定していることを示します
位置は、0 からの相対位置で指定します

RemoveMenu()

BOOL RemoveMenu(HMENU hMenu , UINT uPosition , UINT uFlags);

メニューからメニュー項目を削除します
項目がドロップダウンメニューやサブメニューを開く場合、それらのメニューやそのハンドルは削除しません

hMenu - 項目を持つメニューのハンドルを指定します
uPosition - メニューの ID またはインデックスを指定します
uFlags - uPosition の意味を表す定数を指定します

戻り値 - 成功すれば 0 以外、失敗すれば 0

uFlags には以下の定数のいずれかを指定します

定数 解説
MF_BYCOMMAND uPosition パラメータがメニュー項目の ID を指定していることを示します
デフォルトです
MF_BYPOSITION uPosition パラメータがメニュー項目の位置を指定していることを示します
位置は、0 からの相対位置で指定します

DrawMenuBar()

BOOL DrawMenuBar(HWND hWnd);

メニューバーを再描画します

hWnd - 再描画するメニューを持つウィンドウのハンドルを指定します

戻り値 - 成功すると 0 以外、失敗すると 0

DestroyMenu()

BOOL DestroyMenu(HMENU hMenu);

指定したメニューをメモリから破棄します

hMenu - 解放するメニューのハンドルを指定します

戻り値 - 成功すると 0 以外、失敗すると 0

GetSystemMenu()

HMENU GetSystemMenu(HWND hWnd , BOOL bRevert);

システムメニューのハンドルを取得します

hWnd - ウィンドウメニューのコピーを持つウィンドウのハンドルを指定します
bRevert - FALSE だとシステムメニューのハンドルを返す。TRUE だとデフォルトの状態に戻す

戻り値 - bRecert が FALSE ならシステムメニューのハンドル、そうでなければ NULL

LoadAccelerators()

HACCEL LoadAccelerators(HINSTANCE hInstance , LPCTSTR lpTableName);

キーボードアクセラレータテーブルをロードします

hInstance - リソースが入っているモジュールの、インスタンスハンドルを指定します
lpTableName - ロードするキーボードアクセラレータテーブルの名前を指定します

戻り値 - アクセラレータテーブルのハンドル。失敗すると NULL

TranslateAccelerator()

int TranslateAccelerator(HWND hWnd , HACCEL hAccTable , LPMSG lpMsg);

アクセラレータキーストロークを処理します
必要であればメッセージを変換し、プロシージャに直接送ります
関数が成功した場合、TranslateMessage 関数によるメッセージの処理を行なわないでください

hWnd - メッセージを受け取るウィンドウのハンドルを指定します
hAccTable - 参照するアクセラレータテーブルのハンドルを指定します
lpMsg - 有効な MSG 構造体へのポインタを指定します

戻り値 - 成功すると 0 以外、失敗すると 0

DialogBox()

int DialogBox(
	HINSTANCE hInstance , LPCTSTR lpTemplate ,
	HWND hWndParent , DLGPROC lpDialogFunc
);
モーダルダイアログボックスを生成して表示します
指定されたコールバック関数が EndDialog() を呼び出すまで制御を返しません

hInstance - ダイアログが格納されているモジュールのインスタンスを指定します
lpTemplate - ダイアログテンプレートの ID を指定します
hWndParent - ダイアログを所持するウィンドウを指定します
lpDialogFunc - ダイアログプロシージャのポインタを指定します

戻り値 - EndDialog() の nResult パラメータの値。失敗すると -1

DialogProc()

BOOL CALLBACK DialogProc(
	HWND hwndDlg , UINT uMsg ,
	WPARAM wParam , LPARAM lParam
);
ユーザー定義のコールバック関数です
ダイアログに送られたメッセージを処理します
戻り値は WM_INITDIALOG の場合だけは特別なので、このメッセージも参照してください

hwndDlg - ダイアログボックスのハンドルが格納されています
msg - メッセージが格納されています
wParam - メッセージの追加情報が格納されています
lParam - メッセージの追加情報が格納されています

戻り値 - メッセージを処理した場合は 0 以外、そうでなければ 0

EndDialog()

BOOL EndDialog(HWND hDlg , int nResult);

モーダルダイアログボックスを終了します

hDlg - 破棄するダイアログのウィンドウハンドルを指定します
nResult - DialogBox() 関数の戻り値を指定します

戻り値 - 成功すると 0 以外、失敗すると 0

GetDlgItem()

HWND GetDlgItem(HWND hDlg , int nIDDlgItem);

ダイアログボックスから、指定したコントロールのハンドルを取得します

hDlg - ダイアログボックスのハンドルを指定します
nIDDlgItem - コントロールの識別子を指定します

戻り値 - コントロールのハンドル。失敗すると NULL

SendDlgItemMessage()

LONG SendDlgItemMessage(
	HWND hDlg , int nIDDlgItem ,
	UINT Msg,
	WPARAM wParam , LPARAM lParam
);
ダイアログの指定コントロールにメッセージを送ります

hDlg - ダイアログボックスのハンドルを指定します
nIDDlgItem - コントロールの ID を指定します
Msg - メッセージを指定します
wParam - 追加情報を指定します
lParam - 追加情報を指定します

戻り値 - メッセージの処理結果が返ります

CheckRdioButton()

BOOL CheckRadioButton(
	HWND hDlg ,
	int nIDFirstButton , int nIDLastButton ,
	int nIDCheckButton
);
列挙されているオプションボタンのグループから
指定ボタンを選択し、そのほかのボタンを解除します

hDlg - ラジオボタンを持つダイアログボックスのハンドルを指定します
nIDFirstButton - 最初のラジオボタンの ID を指定します
nIDLastButton - 最後のラジオボタンの ID を指定します
nIDCheckButton - このうち選択するラジオボタンを指定します

戻り値 - 関数が成功すると 0 以外、失敗すると 0 が返ります

CheckDlgButton()

BOOL CheckDlgButton(HWND hDlg , int nIDButton , UINT uCheck);

指定したボタンのチェック状態を変更します

hDlg - ボタンを持つダイアログボックスのハンドルを指定します
nIDButton - 操作対象のボタンの ID を指定します
uCheck - チェック状態を変更する定数を指定します

戻り値 - 関数が成功すると 0 以外、失敗すると 0 が返ります

uCheck には以下の定数のいずれかを指定します
定数 解説
BST_CHECKED ボタンをチェックされた状態にします
BST_INDETERMINATE ボタンをグレイ表示 (不確定) の状態にします
ボタンが、BS_3STATEまたは BS_AUTO3STATE スタイルを
持つときにだけ使用してください
BST_UNCHECKED ボタンをチェックされていない状態にします

IsDlgButtonChecked()

UINT IsDlgButtonChecked(HWND hDlg , int nIDButton);

ボタンのチェック状態を取得します

hDlg - ボタンを持つダイアログのハンドルを指定します
nIDButton - 調べるボタンの ID を指定します

戻り値 - ボタンの状態を表す定数

戻り値は、以下の定数のいずれかになります

定数 解説
BST_CHECKED ボタンをチェックされた状態である
BST_INDETERMINATE ボタンをグレイ表示 (不確定) の状態である
BST_UNCHECKED ボタンをチェックされていない状態である

SetFocus

HWND SetFocus(HWND hWnd);

キーボードフォーカスを指定したウィンドウにセットします

hWnd - キーボードフォーカスを設定するウィンドウのハンドルを指定します

戻り値 - 以前フォーカスを持っていたウィンドウのハンドル。失敗すれば NULL

GetFocus()

HWND GetFocus(VOID);

キーボードフォカースを持つウィンドウのハンドルを取得します

戻り値 - キーボードフォーカスを持つウィンドウのハンドルが返ります

GetParent()

HWND GetParent(HWND hWnd);

親ウィンドウのハンドルを取得します

hWnd - 子ウィンドウのハンドルを指定します
戻り値 - 親ウィンドウのハンドル。無い場合は NULL 

CreateDialog()

HWND CreateDialog(
	HINSTANCE hInstance , LPCTSTR lpTemplate, 
	HWND hWndParent , DLGPROC lpDialogFunc 
);
ダイアログボックステンプレートリソースから、モードレスダイアログボックスを作成します

hInstance - リソースが入っているモジュールのハンドルを指定します
lpTemplate - ロードするダイアログボックステンプレートの名前を指定します
hWndParent - ダイアログボックスを所有するウィンドウのハンドルを指定します
lpDialogFunc - ダイアログボックスプロシージャへのポインタを指定します

戻り値 - ダイアログボックスのウィンドウハンドル。失敗すると NULL

IsDialogMessage()

BOOL IsDialogMessage(HWND hDlg , LPMSG lpMsg);

指定されたメッセージが指定されたダイアログボックスに対するものかどうかを判断し
そうである場合はメッセージを処理します

hDlg - ダイアログボックスのハンドルを指定します
lpMsg - チェックするメッセージを含むMSG 構造体へのポインタを指定します

戻り値 - メッセージが処理されたなら 0 以外、そうでなければ 0

GlobalAlloc()

HGLOBAL GlobalAlloc(UINT uFlags , DWORD dwBytes);

ヒープから指定されたバイト数のメモリを確保します

uFlags - メモリの確保方法を示す定数を指定します
dwBytes - 確保するバイト数を指定します

戻り値 - メモリオブジェクトのハンドル。失敗すると NULL
uFlags には以下の定数を矛盾のない組み合わせで指定できます

定数 解説
GMEM_FIXED 固定メモリを確保します
GMEM_MOVEABLE や GMEM_DISCARDABLE と組み合わせることはできません
戻り値は、メモリブロックへのポインタになります
戻り値を単純にポインタ型にキャストすると、メモリにアクセスできます
GMEM_MOVEABLE 移動可能メモリを確保します
GMEM_FIXED と組み合わせることはできません

戻り値は、メモリオブジェクトのハンドルになります
ハンドルをポインタに変換するには、GlobalLock 関数を使用します
GPTR GMEM_FIXEDと GMEM_ZEROINIT との組み合わせです
GHND GMEM_MOVEABLE と GMEM_ZEROINIT との組み合わせです
GMEM_ZEROINIT 確保したメモリの内容を、0 に初期化します
以下の定数は16-bit Windows との互換性用
GMEM_DDESHARE
GMEM_SHARE
ダイナミックデータエクスチェンジ (DDE) 対話のために
DDE 関数が使用するメモリを確保します
Windows 3.x とは異なり、このメモリはグローバルには共有されませんが
互換性のために使用できます
プロセス間通信のために DDE またはクリップボードを使用するプロセスにおいてのみ
このフラグを指定してください
GMEM_DISCARDABLE 廃棄可能メモリを確保します
GMEM_FIXED と組み合わせることはできません
Win32 アプリケーションの一部は、このフラグを無視することがあります
GMEM_LOWER 無視されます
Windows の以前のバージョンとの互換性のために残されています
GMEM_NOCOMPACT メモリ確保の要求を満たすためのメモリの圧縮または廃棄を行わないようにします
GMEM_NODISCARD メモリ確保の要求を満たすためのメモリの廃棄を行わないようにします
GMEM_NOT_BANKED メモリ確保の要求を満たすためのメモリの廃棄を行わないようにします
GMEM_NOTIFY 無視されます
Windows の以前のバージョンとの互換性のために残されています
GMEM_SHARE GMEM_DDESHARE と同じです

GlobalSize()

DWORD GlobalSize(HGLOBAL hMem);

指定されたグローバルメモリオブジェクトのサイズを、バイト単位で取得します

hMem - グローバルメモリオブジェクトのハンドルを指定します

戻り値 - バイトサイズ、失敗すると 0

GlobalFree()

HGLOBAL GlobalFree(HGLOBAL hMem);

定されたグローバルメモリオブジェクトを解放して、そのハンドルを無効にします

hMem - グローバルメモリオブジェクトのハンドルを指定します

戻り値 - 関数が成功すると NULL。失敗すると指定したハンドル

GlobalLock()

LPVOID GlobalLock(HGLOBAL hMem);

グローバルメモリオブジェクトをロックし、メモリブロックの先頭へのポインタを返します

hMem - グローバルメモリオブジェクトのハンドルを指定します

戻り値 - メモリブロックの先頭へのポインタ、失敗すると NULL

GlobalUnlock()

BOOL GlobalUnlock(HGLOBAL hMem);

グローバルメモリオブジェクトのロックカウントを減らします

hMem - グローバルメモリオブジェクトのハンドルを指定します

戻り値 - 実行後もロックカウントが 1 以上であれば、0 以外、そうでなければ 0

OpenClipboard()

BOOL OpenClipboard(HWND hWndNewOwner);

クリップボードをオープンします
同時に他のアプリケーションがクリップボードの内容を変更できないようにします

hWndNewOwner - クリップボードをオープンするウィンドウのハンドルを指定します

戻り値 - 成功すると 0 以外、失敗すると 0

EmptyClipboard()

BOOL EmptyClipboard(VOID)

クリップボードを空にし、クリップボード内のデータのハンドルを解放します
同時に、現在クリップボードをオープンしているウィンドウに
クリップボードの所有権を与えます

戻り値 - 成功すると 0 以外、失敗すると 0

CloseClipboard()

BOOL CloseClipboard(VOID)

クリップボードをクローズします

戻り値 - 成功すると 0 以外、失敗すると 0

SetClipboardData()

HANDLE SetClipboardData(UINT uFormat , HANDLE hMem);

クリップボードに、指定されたデータ形式でデータを入れます
データを入れるには、呼び出し側のウィンドウが現在のクリップボードのオーナーであり
かつ、OpenClipboard 関数でクリップボードをオープンしていなければなりません

ただし、WM_RENDERFORMAT メッセージ内での処理ではOpenClipboard 関数、EmptyClipboard関数、
CloseClipboard関数を呼ばずに SetClipboardData 関数を呼んで構いません
WM_RENDERALLFORMATS の処理では OpenClipboard(), EmptyClipboard(), CloseClipboard() が必要)

uFormat - 標準クリップボードデータ形式か、RegisterClipboardFormat() で登録したデータ形式を指定します
hMem - データが入っているグローバルメモリのハンドルを指定します
NULLだと delayed rendering (WM_RENDERFORMAT, WM_RENDERALLFORMATS 内で処理)

戻り値 - データのハンドルが返ります。関数が失敗すると、NULL

uFormat には、次の標準クリップボードでータ形式を指定できます

定数 解説
CF_BITMAP ビットマップのデータです (HBITMAP)
CF_DIB BITMAPINFO 構造体とビットマップビットから成るメモリオブジェクトです
CF_DIF Software Arts 社の DIF データ交換形式です
CF_DSPBITMAP プライベートな形式のビットマップデータです
CF_DSPENHMETAFILE プライベートな形式の拡張メタファイルデータです
CF_DSPMETAFILEPICT プライベートな形式のメタファイル画像表示形式データです
CF_DSPTEXT プライベートな形式のテキストデータです
CF_ENHMETAFILE 拡張メタファイルのデータです (HENHMETAFILE)
CF_GDIOBJFIRST から
CF_GDIOBJLAST までの値
GDI オブジェクトによって表現される、アプリケーション定義のクリップボード形式です
hMem パラメータは GDI オブジェクトのハンドルではありません
GMEM_DDESHARE と GMEM_MOVEABLE を持つ
GlobalAlloc 関数で割り当てられたハンドルになります
CF_HDROP HDROP 型です
DragQueryFile 関数にこのハンドルを渡すことで
ファイルに関する情報を受け取ることができます
CF_LOCALE テキストデータのロケール ID ハンドルです
CF_METAFILEPICT METAFILEPICT 構造体のメモリオブジェクトです。メタファイル画像形式です
CF_OEMTEXT OEM 文字セットの文字を持つ、テキスト形式データです
各行は改行復帰 (CR-LF) コードで終わります
データの終端は NULL 文字です
CF_OWNERDISPLAY オーナー表示形式です
クリップボードのオーナーが、クリップボードビューアウィンドウの表示と
更新を行なわなければなりません
オーナーは、WM_ASKCBFORMATNAME、WM_HSCROLLCLIPBOARD
WM_PAINTCLIPBOARD、WM_SIZECLIPBOARD
WM_VSCROLLCLIPBOARD メッセージを受け取ります

Hmem パラメータは、NULL でなければなりません
CF_PALETTE カラーパレットのハンドルです
カラーパレットに依存するか
カラーパレットを想定するデータをクリップボードに入れるときには
カラーパレットもクリップボードに入れるようにしてください
また、クリップボードの画像データを表示するときは
このパレットデータも取得してください
CF_PENDATA Windows のペン拡張機能のためのデータです
CF_PRIVATEFIRST から CF_PRIVATELAST までの値 プライベートなクリップボード形式です
プライベートなクリップボード形式に関係づけられたハンドルは
自動的には開放されません
オーナーが明示的に解放しなければなりません
(通常は、WM_DESTROYCLIPBOARD メッセージ処理時)
CF_RIFF RIFF 形式の音声データです
WAVE 形式よりも複雑です
CF_SYLK Microsoft シンボリックリンク (SYLK) 形式のデータです
CF_TEXT テキスト形式のデータです
各行は復帰改行 (CR-LF) コードで終わります
データの終端は NULL 文字です
この形式は、ANSI テキストに使います
CF_WAVE WAVE 形式の音声データです
CF_TIFF TIFF 形式の画像データです
CF_UNICODETEXT Unicode のテキスト形式です
各行は復帰改行 (CR-LF) コードで終わります
データの終端は NULL 文字です
Windows NT でのみサポートされています

lstrcpy()

LPTSTR lstrcpy(LPTSTR lpString1, LPCTSTR lpString2);

指定された文字列を、バッファにコピーします

lpString1 - バッファへのポインタを指定します
lpString2 - コピーする文字列へのポインタを指定します

戻り値 - バッファへのポインタが返ります。関数が失敗すると、NULL

IsClipboardFormatAvailable()

BOOL IsClipboardFormatAvailable(UINT format);

指定されたフォーマットのデータがクリップボードに格納されているかどうか調べます

format - SetClipboardData() 関数で使用できるクリップボードでータ形式を指定します

戻り値 - 指定データが格納されていれば 0 以外。そうでなければ 0

GetClipboardData()

HANDLE GetClipboardData(UINT uFormat);

クリップボードから、指定された形式のデータを取り出します

uFormat - SetClipboardData() 関数で使用できるクリップボードでータ形式を指定します

戻り値 - グローバルメモリブロックのハンドル。関数が失敗すると、NULL

SetClipboardViewer()

HWND SetClipboardViewer(HWND hWndNewViewer);

クリップボードビューアチェインに、指定されたウィンドウを追加します
クリップボードに変更があるとWM_DRAWCLIPBOARDを受るので、適切な処理を行い
次のウインドウにWM_DRAWCLIPBOARDを送る必要があります

hWndNewViewer - クリップボードチェインに追加するウィンドウを指定します

戻り値 - 次に位置するウィンドウのハンドル。失敗、または次がない場合は NULL

ChangeClipboardChain()

BOOL ChangeClipboardChain(HWND hWndRemove , HWND hWndNewNext);

クリップボードビューアのチェインから、指定されたウィンドウを削除し、
チェーンの最上のウィンドウにWM_CHANGECBCHAINを送ります

hWndRemove - 削除するウィンドウのハンドルを指定します
hWndNewNext - hWndRemove の次のウィンドウのハンドルを指定します

戻り値 - 通常は FALSE、ウィンドウが1つしかなかったときは TRUE

CreateDC()

HDC CreateDC(
	LPCTSTR lpszDriver , LPCTSTR lpszDevice ,
	LPCTSTR lpszOutput , CONST DEVMODE *lpInitData 
);
指定されたデバイスのデバイスコンテキストを、指定の名前で作成します
デバイスコンテキストが不要になったら、DeleteDC 関数を呼び出して削除してください

(95)lpszDriver - 無視、または "DISPLAY" を指定できます
(NT)lpszDriver - プリンタドライバの名前、または "DISPLAY" を指定できます
lpszDevice - 出力デバイスの名前が入った文字列を指定します
lpszOutput - このパラメータは無視されます。NULL を指定します
lpInitData - 初期化データが入ったDEVMODE 構造体へのポインタを指定します

戻り値 - 指定したデバイスに対するデバイスコンテキストのハンドル。失敗の場合は NULL

DeleteDC()

BOOL DeleteDC(HDC hdc);

指定したデバイスコンテキストを削除します

hdc - デバイスコンテキストのハンドルを指定します

戻り値 - 成功すると 0 以外、失敗すると 0


DrawIcon()

BOOL DrawIcon(HDC hDC , int X , int Y , HICON hIcon);

アイコンを描画します

hDC - デバイスコンテキストのハンドルを指定します
X - アイコンの左上隅のX座標を指定します
Y - アイコンの左上隅のY座標を指定します
hIcon - 描画するアイコンのハンドルを指定します

戻り値 - 成功すると 0 以外、失敗すると 0

MoveWindow()

BOOL MoveWindow(
	HWND hWnd,
	int X , int Y ,
	int nWidth , int nHeight ,
	BOOL bRepaint
);
指定されたウィンドウの位置とサイズを変更します

hWnd - ウィンドウのハンドルを指定します
X - ウィンドウ左上隅の X 座標を指定します
Y - ウィンドウ左上隅の Y 座標を指定します
nWidth - ウィンドウの横幅を指定します
nHeight - ウィンドウの高さを指定します
bRepaint - TRUE だと再描画、FALSE だと再描画しません

戻り値 - 関数が成功すると 0 以外、失敗すると 0

SetWindowPos()

BOOL SetWindowPos(
	HWND hWnd , HWND hWndInsertAfter ,
	int X , int Y , int cx , int cy ,
	UINT uFlags
);
子ウィンドウ、ポップアップウィンドウ、トップレベルウィンドウにおいて
そのサイズ、位置、Z 順位を変更します

hWnd - ウィンドウのハンドルを指定します
hWndInsertAfter - hWnd 先行するウィンドウのハンドルを指定します
X - ウィンドウ左上隅の X 座標を指定します
Y - ウィンドウ左上隅の Y 座標を指定します
cx - ウィンドウの横幅を指定します
cy - ウィンドウの高さを指定します
uFlags - ウィンドウのサイズおよび位置の変更に関するフラグを指定します

戻り値 - 関数が成功すると 0 以外、失敗すると 0

hWndInsertAfter には次の定数を指定することもできます

定数 解説
HWND_BOTTOM ウィンドウを Z 順位の最後 (一番下) に置きます
hWnd パラメータで指定したウィンドウが
最前面ウィンドウ (WS_EX_TOPMOST) のときは
そのウィンドウは最前面ウィンドウではなくなり
ほかのすべてのウィンドウの下に置かれます
HWND_NOTOPMOST ウィンドウを最前面ウィンドウ (WS_EX_TOPMOST) 以外の
すべてのウィンドウの上位 (すべての最前面のウィンドウの下位 ) に置きます
hWnd パラメータで指定したウィンドウが最前面ウィンドウでないときは
このフラグは意味を持ちません
HWND_TOP ウィンドウを Z 順位の最初 (一番上) に置きます
ただし、非最前面ウィンドウが最前面ウィンドウにされることはありません
HWND_TOPMOST ウィンドウを最前面ウィンドウにします

uFlags には、以下の定数を組み合わせて使うことができます

定数 解説
SWP_DRAWFRAME ウィンドウを囲む (ウィンドウクラスの記述部分で定義されている)
枠を描画します
SWP_FRAMECHANGED たとえウィンドウのサイズが変更されなくても
ウィンドウに WM_NCCALCSIZE メッセージを送ります
このフラグを指定しない場合は、ウィンドウのサイズが変更されるときにだけ
WM_NCCALCSIZE メッセージが送られます
SWP_HIDEWINDOW ウィンドウを非表示にします
SWP_NOACTIVATE ウィンドウをアクティブ化しません
このフラグを指定しない場合は、ウィンドウはアクティブ化され
(hWndInsertAfter パラメータの設定によって) 最前面
または非最前面のどちらかのグループの最上位に移動します
SWP_NOCOPYBITS クライアント領域の内容全体を破棄します
このフラグを指定しない場合は、クライアント領域の有効な内容が保存され
ウィンドウの再配置後にクライアント領域にコピーし直されます
SWP_NOMOVE 現在の位置を維持します
(X パラメータと Y パラメータを無視します )
SWP_NOOWNERZORDER オーナーウィンドウの Z 順位を変えません
SWP_NOREDRAW 変更結果を再描画しません
どんな種類の再ペイントも発生しません
このフラグは、クライアント領域
非クライアント領域 (タイトルバーやスクロールバーを含む)
ウィンドウが移動した結果現れた親ウィンドウのどのような部分にも、適用されま
このフラグを指定した場合、アプリケーションは、ウィンドウや親ウィンドウの
再描画の必要な部分を明示的に無効化または再描画しなければなりません
SWP_NOREPOSITION SWP_NOOWNERZORDER フラグと同じです
SWP_NOSENDCHANGING ウィンドウに WM_WINDOWPOSCHANGING メッセージを
受け取らせないようにします
SWP_NOSIZE 現在のサイズを維持します
(cx パラメータと cy パラメータを無視します )
SWP_NOZORDER 現在の Z 順位を維持します
(hWndInsertAfter パラメータを無視します)
SWP_SHOWWINDOW ウィンドウを表示します

BitBlt()

BOOL BitBlt(
	HDC hdcDest,
	int nXDest , int nYDest ,
	int nWidth , int nHeight ,
	HDC hdcSrc, 
	int nXSrc , int nYSrc ,
	DWORD dwRop
);
ビットブロック転送を行います

hdcDest - コピー先のデバイスコンテキストのハンドルを指定します
nXDest - コピー先の長方形の左上隅の X 座標を、論理単位で指定します
nYDext - コピー先の長方形の左上隅の Y 座標を、論理単位で指定します
nWidth - コピー先の長方形の幅を、論理単位で指定します。コピー元のビットマップの幅でもあります
nHeight - コピー先の長方形の高さを、論理単位で指定します。コピー元のビットマップの幅でもあります
hdcSrc - コピー元のデバイスコンテキストのハンドルを指定します
nXSrc - コピー元の長方形の左上隅の X 座標を、論理単位で指定します
nYSrc - コピー元の長方形の左上隅の Y 座標を、論理単位で指定します
dwRop - ラスタオペレーションコードを指定します

dwRop には以下の定数を指定できます

定数 解説
BLACKNESS 物理パレットのインデックス 0 に対応する色 (デフォルトは黒) で
コピー先の長方形を塗りつぶします
DSTINVERT コピー先長方形の色を反転します
MERGECOPY コピー元の色と、コピー先の色を
論理 AND 演算子で結合します
MERGEPAINT コピー元の色を反転した色と
コピー先の色を、論理 OR 演算子で結合します
NOTSRCCOPY コピー元の色を反転して
コピー先にコピーします
NOTSRCERASE コピー元の色と、コピー先の色を
論理 OR 演算子で結合し、さらに反転します
PATCOPY 指定したパターンをコピー先にコピーします
PATINVERT 指定したパターンの色と、コピー先の色を
論理 XOR 演算子で結合します
PATPAINT 指定したパターンの色と、コピー元の色を反転した色を
論理 OR 演算子で結合し、さらにその結果を
コピー先の色と論理 OR 演算子で結合します
SRCAND コピー元の色と、コピー先の色を
論理 AND 演算子で結合します
SRCCOPY コピー元をコピー先にそのままコピーします
SRCERASE コピー先の色を反転した色と、コピー元の色を
論理 AND 演算子で結合します
SRCINVERT コピー元の色と、コピー先の色を
論理 XOR 演算子で結合します
SRCPAINT コピー元の色と、コピー先の色を
論理 OR 演算子で結合します
WHITENESS 物理パレットのインデックス 1 に対応する色 (デフォルトは白) で
コピー先の長方形を塗りつぶします

StretchBlt()

BOOL StretchBlt(
	HDC hdcDest, 
	int nXOriginDest , int nYOriginDest ,
	int nWidthDest , int nHeightDest ,
	HDC hdcSrc ,
	int nXOriginSrc , int nYOriginSrc ,
	int nWidthSrc , int nHeightSrc,
	DWORD dwRop 
);
コピー元の長方形からコピー先の長方形にビットマップをコピーします

hdcDest - コピー先のデバイスコンテキストのハンドルを指定します
nXOriginDest - コピー先の長方形の左上隅の x 座標を、論理単位で指定します
nYOriginDest - コピー先の長方形の左上隅の y 座標を、論理単位で指定します
nWidthDest - コピー先の長方形の幅を、論理単位で指定します
nHeightDest - コピー先の長方形の高さを、論理単位で指定します
hdcSrc - コピー元のデバイスコンテキストのハンドルを指定します
nXOriginSrc - コピー元の長方形の左上隅の x 座標を、論理単位で指定します
nYOriginSrc - コピー元の長方形の左上隅の y 座標を、論理単位で指定します
nWidthSrc - コピー元の長方形の幅を、論理単位で指定します
nHeightSrc - コピー元の長方形の高さを、論理単位で指定します
dwRop - ラスタオペレーションコードを指定します

戻り値 - 成功すると 0 以外、失敗すると 0

dwRop に指定する定数は、BitBlt() 関数を参照してください

SetStretchBltMode()

int SetStretchBltMode(HDC hdc , int iStretchMode);

指定されたデバイスコンテキストのビットマップ伸縮モードを設定します

hdc - デバイスコンテキストのハンドルを指定します
iStretchMode - ストレッチングモードを表す定数を指定します

戻り値 - 成功すれば以前のストレッチングモード、失敗すれば 0

iStretchMode には、以下の定数のいずれかを指定できます

定数 解説
BLACKONWHITE,
STRETCH_ANDSCANS
残す点の色と、取り除く点の色を、論理 AND 演算子で結合します
ビットマップがモノクロビットマップの場合
白のピクセルが消され、黒のピクセルが残ります
COLORONCOLOR ,
STRETCH_DELETESCANS
ピクセルを削除します
取り除く点の情報を保存することなく、削除します
HALFTONE ,
STRETCH_HALFTONE
コピー元のピクセルをコピー先のピクセルブロックに対応づけます
コピー先のブロックの平均的な色が、コピー元のピクセルの色に近い色になります

HALFTONEモードを設定した場合は、ブラシのずれを防ぐため
SetBrushOrgEx() 関数を呼び出してください
WHITEONBLACK ,
STRETCH_ORSCANS
残す点の色と、取り除く点の色を、論理 OR 演算子で結合します
ビットマップがモノクロビットマップの場合
黒のピクセルが消され、白のピクセルが残ります

GetStretchBltMode()

int GetStretchBltMode(HDC hdc);

現在のビットマップ伸縮モードを取得します

hdc - デバイスコンテキストのハンドルを指定します

戻り値 - ストレッチングモードを表す定数。失敗すれば 0
 

PatBlt()

BOOL PatBlt(
	HDC hdc,
	int nXLeft , int nYLeft ,
	int nWidth , int nHeight ,
	DWORD dwRop
);
指定された長方形を現在のブラシでペイントします

hdc - デバイスコンテキストのハンドルを指定します
nXLeft - 長方形の左上隅の X 座標を指定します
nYLeft - 長方形の左上隅の Y 座標を指定します
nWidth - 長方形の幅を指定します
nHeight - 長方形の高さを指定します
dwRop - ラスタオペレーションコードを指定します

戻り値 - 成功すると 0 以外、失敗すると 0

ラスタオペレーションコードは以下の定数のいずれかを指定します

定数 解説
PATCOPY 指定したパターンを描画先にコピーします
PATINVERT 指定したパターンの色と、描画先の色を、論理 XOR 演算子で結合します
DSTINVERT 描画先長方形の色を反転します
BLACKNESS 物理パレットのインデックス 0 に対応する色 (デフォルトは黒) で
描画先の長方形を塗りつぶします
WHITENESS 物理パレットのインデックス 0 に対応する色 (デフォルトは黒) で
描画先の長方形を塗りつぶします

FillRect()

int FillRect(HDC hDC , CONST RECT *lprc , HBRUSH hbr);

長方形を指定されたブラシで塗りつぶして描画します

hDC - デバイスコンテキストのハンドルを指定します
lprc - 長方形の情報が格納された RECT 構造体へのポインタを指定します
hbr - ブラシのハンドルを指定します。このブラシで塗りつぶします

戻り値 - 成功すると TRUE、失敗すると FALSE が返ります

CreateCompatibleDC()

HDC CreateCompatibleDC(HDC hdc);

指定されたデバイスと互換性のあるメモリデバイスコンテキストを作成します
メモリデバイスコンテキストが不要になったら、DeleteDC関数を呼び出して削除してください

hdc - デバイスコンテキストのハンドル。画面と互換をとる場合は NULL でも構いません

戻り値 - メモリデバイスコンテキストのハンドル。失敗すると NULL

LoadBitmap()

HBITMAP LoadBitmap(HINSTANCE hInstance , LPCTSTR lpBitmapName);

指定したモジュールからビットマップリソースを読みこみます
不要になったビットマップは DeleteObject() で削除しなければいけません
この関数は、LoadImage 関数に取って代わられています

hInstance - ビットマップリソースが格納されているモジュールのインスタンスを指定します
lpBitmapName - ロードするビットマップリソースの名前を指定します

戻り値 - ビットマップのハンドル。失敗すると NULL

hInstance を NULL にすると、次の定数のいずれかを lpBitmapName に指定できます
これは、Windows がコントロールに用意しているビットマップです
これを使う場合 WINDOWS.H をインクルードする前に OEMRESOURCE 定数を定義してください

定数 定数
OBM_BTNCORNERS OBM_OLD_RESTORE
OBM_BTSIZE OBM_OLD_RGARROW
OBM_CHECK OBM_OLD_UPARROW
OBM_CHECKBOXES OBM_OLD_ZOOM
OBM_CLOSE OBM_REDUCE
OBM_COMBO OBM_REDUCED
OBM_DNARROW OBM_RESTORE
OBM_DNARROWD OBM_RESTORED
OBM_DNARROWI OBM_RGARROW
OBM_LFARROW OBM_RGARROWD
OBM_LFARROWD OBM_RGARROWI
OBM_LFARROWI OBM_SIZE
OBM_MNARROW OBM_UPARROW
OBM_OLD_CLOSE OBM_UPARROWD
OBM_OLD_DNARROW OBM_UPARROWI
OBM_OLD_LFARROW OBM_ZOOM
OBM_OLD_REDUCE OBM_ZOOMD

CreateBitmap()

HBITMAP CreateBitmap(
	int nWidth , int nHeight ,
	UINT cPlanes,
	UINT cBitsPerPel,
	CONST VOID *lpvBits
);
指定された幅、高さ、色形式を持つビットマップを作成します
通常は、1ピクセル1ビットのモノクロビットマップの作成に使用してください
ビットマップが不要になったら、DeleteObject 関数を呼び出して削除してください

nWidth - ビットマップの幅をピクセル単位で指定します
nHeight - ビットマップの高さをピクセル単位で指定します
cPlanes - デバイスが使用するカラープレーンの数を指定します
cBitsPerPel - 1 ピクセルの色を識別するのに必要なビット数を指定します
lpvBits - ピクセルの色データが入った配列へのポインタを指定します

戻り値 - ビットマップのハンドル。失敗すれば NULL

CreateBitmapIndirect()

HBITMAP CreateBitmapIndirect(CONST BITMAP *lpbm);

指定された幅、高さ、色形式を持つビットマップを作成します
通常は、1ピクセル1ビットのモノクロビットマップの作成に使用してください
ビットマップが不要になったら、DeleteObject 関数を呼び出して削除してください

lpbm - ビットマップの情報が格納されている BITMAP 構造体へのポインタを指定します

戻り値 - ビットマップのハンドル。失敗すれば NULL

CreateCompatibleBitmap()

HBITMAP CreateCompatibleBitmap(HDC hdc , int nWidth , int nHeight);

指定されたデバイスコンテキストに関連するデバイスと互換性のあるビットマップを作成します
ビットマップが不要になったら、DeleteObject 関数を呼び出して削除してください

hdc - デバイスコンテキストのハンドルを指定します
nWidth - ビットマップの幅をピクセル単位で指定します
nHeight - ビットマップの高さをピクセル単位で指定します

戻り値 - ビットマップのハンドル。失敗すると NULL

注意:メモリデバイスコンテキストを作成すると、最初は 1×1 のモノクロームのビットマップが
選択されます。CreateCompatibleBitmap でメモリデバイスコンテキストを指定した場合、
モノクロームのビットマップが作成されます。 カラーのビットマップを作成するには、その
メモリデバイスコンテキストを作成するために使われた hDC を指定してください


GetObject()

int GetObject(HGDIOBJ hgdiobj , int cbBuffer , LPVOID lpvObject);

指定されたグラフィックオブジェクトの情報を取得します
lpvObject で NULL を指定したときは必要なバッファのバイト数を返します

hgdiobj - GDI オブジェクトを指定します
cbBuffer - バッファのサイズを指定します
lpvObject - バッファへのポインタを指定します。オブジェクトの情報が格納されます

戻り値 - バッファに格納した情報のバイト数、または必要なバイト数。失敗すると 0

GDI オブジェクトとバッファの対応は次のようになります

GDI オブジェクト バッファ
HBITMAP BITMAP 構造体
HBITMAP
(CreateDIBSection() 関数で作成した場合 )
DIBSECTION 構造体
(cbBuffer に sizeof(DIBSECTION) を設定したとき)

または、BITMAP 構造体
(cbBuffer に sizeof(BITMAP) を設定したとき)
HPALETTE WORD 型
(論理パレットのエントリ数が格納されます)
HPEN
(ExtCreatePen() 関数で作成した場合)
EXTLOGPEN 構造体
HPEN LOGPEN 構造体
HBRUSH LOGBRUSH 構造体
HFONT LOGFONT 構造体

GetCurrentDirectory()

DWORD GetCurrentDirectory(DWORD nBufferLength , LPTSTR lpBuffer);

現在のカレントディレクトリを取得します

nBUfferLength - lpBuffer のサイズを指定します
lpBuffer - カレントディレクトリ名を取得するバッファを指定します

戻り値 - 格納した文字列、バッファが不十分なら必要なサイズ、失敗したら 0

SetCurrentDirectory()

BOOL SetCurrentDirectory(LPCTSTR lpPathName); 新しくカレントディレクトリを設定します

lpPathName - ディレクトリの名前が格納されている文字列へのポインタを指定します

戻り値 - 成功すると 0 以外、失敗すると 0

GetSystemDirectory()

UINT GetSystemDirectory(LPTSTR lpBuffer , UINT uSize);

システムディレクトリの位置をバッファに取得します

lpBuffer - ディレクトリのパス名を格納するバッファを指定します
uSize - MAX_PATH 以上で lpBuffer のサイズを指定します

戻り値 - 格納したサイズ、足りなければ必要なサイズ、失敗すれば 0

GetWindowsDirectory()

UINT GetWindowsDirectory(LPTSTR lpBuffer , UINT uSize);

Windows が格納されているディレクトリをバッファに取得します

lpBuffer - ディレクトリのパス名を格納するバッファを指定します
uSize - MAX_PATH 以上で lpBuffer のサイズを指定します

戻り値 - 格納したサイズ、足りなければ必要なサイズ、失敗すれば 0

CreateDirectory()

BOOL CreateDirectory(
	LPCTSTR lpPathName,
	LPSECURITY_ATTRIBUTES lpSecurityAttributes 
);
新しいディレクトリを作成します

lpPathName - 作成するディレクトリのパス名を格納する文字列へのポインタを指定します
lpSecurityAttributes - SECURITY_ATTRIBUTES 構造体へのポインタを指定します

戻り値 - 成功すると 0 以外、失敗すると 0

CreateDirectoryEx()

BOOL CreateDirectoryEx(
	LPCTSTR lpTemplateDirectory ,
	LPCTSTR lpNewDirectory ,
	LPSECURITY_ATTRIBUTES lpSecurityAttributes
);
新しいディレクトリを作成します
ディレクトリはテンプレートディレクトリの属性を引き継ぎます

lpTemplateDirectory - テンプレートディレクトリのパスが入った文字列へのポインタを指定します
lpPathName - 作成するディレクトリのパス名を格納する文字列へのポインタを指定します
lpSecurityAttributes - SECURITY_ATTRIBUTES 構造体へのポインタを指定します

戻り値 - 成功すると 0 以外、失敗すると 0

RemoveDirectory()

BOOL RemoveDirectory(LPCTSTR lpPathName);

空のディレクトリを削除します

lpPathName - 削除するディレクトリのパスが入った文字列へのポインタを指定します

戻り値 - 成功すると 0 以外、失敗すると 0

CreateFile()

HANDLE CreateFile(
	LPCTSTR lpFileName, 
	DWORD dwDesiredAccess,
	DWORD dwShareMode,
	LPSECURITY_ATTRIBUTES lpSecurityAttributes,
	DWORD dwCreationDisposition,
	DWORD dwFlagsAndAttributes,
	HANDLE hTemplateFile
);
ファイルを作成、または開きます

lpFileName - 作成、またはオープンするファイル名を指定します
dwDesiredAccess - 読み取りか書き込みかのアクセスタイプを指定します
dwShareMode - 共有方法を指定します
lpSecurityAttributes - SECURITY_ATTRIBUTES 構造体へのポインタを指定します
dwCreationDisposition - ファイルの存在の真偽によっての動作を指定します
dwFlagsAndAttributes - ファイルの属性やフラグを指定します
hTemplateFile - テンプレートファイルを指定します

戻り値 - ファイルのハンドル。失敗すると INVALID_HANDLE_VALUE

dwDesiredAccess は以下の定数を組み合わせて指定します

定数 解説
0 デバイスの属性を問い合わせます
GENERIC_READ 読み取りアクセスです
データの読み取りとファイルポインタの移動ができます
読み書きアクセスをするには、GENERIC_WRITE と組み合わせて指定します
GENERIC_WRITE 書き込みアクセスです
データの書き込みとファイルポインタの移動ができます
読み書きアクセスをするには、GENERIC_READ と組み合わせて指定します

dwShareMode は次の定数のいずれか、または組み合わせで指定します

定数 解説
0 このオブジェクトは共有しない
ハンドルがクローズされるまでこのオブジェクトのオープン操作は失敗します
FILE_SHARE_DELETE Windows NT のみ
後続のオープン操作で削除アクセスが要求された場合
そのオープンを許可します
FILE_SHARE_READ 後続のオープン操作で読み取りアクセスが要求された場合
そのオープンを許可します
FILE_SHARE_WRITE 後続のオープン操作で書き込みアクセスが要求された場合
そのオープンを許可します

dwCreationDisposition は以下の定数のいずれかを指定します

定数 解説
CREATE_NEW 新しいファイルを作成します
指定ファイルがすでに存在している場合、関数は失敗します
CREATE_ALWAYS 新しいファイルを作成します
指定ファイルがすでに存在している場合、そのファイルは上書きされます
OPEN_EXISTING ファイルをオープンします
指定ファイルが存在していない場合、関数は失敗します
デバイス (コンソールも含む) 上で CreateFile 関数を使う場合は
このフラグを指定しなければなりません
OPEN_ALWAYS ファイルをオープンします
指定ファイルが存在していない場合、関数は新しいファイルを作成します。
TRUNCATE_EXISTING ファイルをオープンし、ファイルのサイズを 0 バイトにします
指定ファイルが存在していない場合、関数は失敗します
dwDesiredAccess パラメータで
少なくとも GENERIC_WRITE を指定しなければなりません

dwFlagsAndAttributes は以下の定数を組み合わせて指定します
ただし、FILE_ATTRIBUTE_NORMAL 属性は単独で指定します

定数 解説
属性
FILE_ATTRIBUTE_ARCHIVE アーカイブファイルです
この属性は、ファイルのバックアップや
削除のためのマークとして使われます
FILE_ATTRIBUTE_ COMPRESSED 圧縮ファイルまたは圧縮ディレクトリです
圧縮ディレクトリ内に新しく作られるファイル
またはディレクトリは
デフォルトで圧縮状態になります
FILE_ATTRIBUTE_HIDDEN 隠しファイルです
FILE_ATTRIBUTE_NORMAL とくに属性はありません
単独で指定します
FILE_ATTRIBUTE_OFFLINE ファイルのデータは、すぐには利用できません
ファイルのデータが別のオフラインの
記憶装置に移されていることを示します
FILE_ATTRIBUTE_READONLY 読み取り専用です
FILE_ATTRIBUTE_SYSTEM オペレーティングシステムのファイルの一部です
または、オペレーティングシステム専用のファイルです
FILE_ATTRIBUTE_TEMPORARY テンポラリファイルです
フラグ
FILE_FLAG_WRITE_THROUGH キャッシュに書き込まれたデータを
そのまま直接ディスクに書き込むようにします
FILE_FLAG_OVERLAPPED 時間のかかる処理に対して
ERROR_IO_PENDING を返すようにします
処理が終了すると、イベントはシグナル状態に設定されます
このフラグを指定したときは、ReadFile 関数や
WriteFile 関数で OVERLAPPED 構造体を指定しなければなりません
FILE_FLAG_NO_BUFFERING バッファやキャッシュを使用せずに
ファイルをオープンするようにします
場合によっては、パフォーマンスが向上します
このフラグを指定したときは、次の条件を満たさなければなりません

1
ファイルアクセスの開始オフセットを
ボリュームのセクタサイズの整数倍にしなければなりません

2
ファイルのアクセスのバイト数を
ボリュームのセクタサイズの整数倍にしなければなりません
セクタサイズが 512 バイトの場合
512 バイト、1024 バイト……の読み書きはできますが
335 バイト、981 バイトなどの読み書きはできません

3
読み書き操作用のバッファのアドレスを
ボリュームのセクタサイズの整数倍に整列しなければなりません

3 番目の条件を満たすには、VirtualAlloc() 関数を利用すると便利です
VirtualAlloc() は、確保するメモリを (セクタサイズではありませんが)
ページサイズの整数倍に整列します
ボリュームのセクタサイズを求めるには
GetDiskFreeSpace() 関数を使います
FILE_FLAG_RANDOM_ACCESS ファイルをランダムアクセスすることをシステムに示します
システムは、この指定をファイルのキャッシングを
最適化するヒントとして使用します
FILE_FLAG_SEQUENTIAL_SCAN ファイルをシーケンシャルにアクセスすることをシステムに示します
システムは、この指定をファイルのキャッシングを
最適化するヒントとして使用します
このフラグを指定しても
ランダムアクセスができなくなるわけではありません
FILE_FLAG_DELETE_ON_CLOSE ファイルのハンドルがクローズされたら
そのファイルを削除するようにします
FILE_FLAG_BACKUP_SEMANTICS Windows NT
バックアップまたは復元操作のために
ファイルをオープンまたは作成します
FILE_FLAG_POSIX_SEMANTICS POSIX の規則に従ってファイルにアクセスします
このフラグを使って作成したファイルには
MS-DOS/Windows アプリケーションからはアクセスできません

名前付きパイプのクライアント側をオープンする場合は
Security Quality of Service (SQOS)情報を指定できます
呼び出し側アプリケーションが SECURITY_SQOS_PRESENT フラグを指定している場合
dwFlagsAndAttributes パラメータには、次の定数の組み合わせを指定できます

定数 解説
SECURITY_ANONYMOUS 匿名 (Anonymous) 偽装レベルでクライアントを偽装します
SECURITY_IDENTIFICATION 確認 (Identification) 偽装レベルでクライアントを偽装します
SECURITY_IMPERSONATION 偽装 (Impersonation) 偽装レベルでクライアントを偽装します
SECURITY_DELEGATION 代理 (Delegation) 偽装レベルでクライアントを偽装します
SECURITY_CONTEXT_TRACKING セキュリティトラッキングモードが動的であることを指定します
このフラグを指定しない場合
セキュリティトラッキングモードは静的です
SECURITY_EFFECTIVE_ONLY クライアントのセキュリティコンテキストのうち
有効になっている部分だけをサーバーで利用できるようにします
このフラグを指定しない場合は、すべての部分が利用できます

CloseHandle()

BOOL CloseHandle(HANDLE hObject);

開いているオブジェクトのハンドルを閉じます

hObject - オブジェクトのハンドルを指定します

戻り値 - 成功すると 0 以外、失敗すると 0

GetFileSize()

DWORD GetFileSize(HANDLE hFile , LPDWORD lpFileSizeHigh);

指定したファイルのサイズを取得します

hFile - サイズを取得するファイルのハンドルを指定します
lpFileSizeHigh - サイズの上位32ビットを格納する DWORD へのポインタを指定します

戻り値 - ファイルサイズの下位32ビット、失敗すれば 0xFFFFFFFF

GetFileType()

DWORD GetFileType(HANDLE hFile);

ファイルタイプを取得します

hFile - ファイルタイプを取得するファイルのハンドルを指定します

戻り値 - ファイルのタイプを表す定数

戻り値は、以下の定数のいずれかになります

定数 解説
FILE_TYPE_UNKNOWN 種類は不明です
FILE_TYPE_DISK ディスクファイルです
FILE_TYPE_CHAR LPT デバイスやコンソールといった文字ファイルです
FILE_TYPE_PIPE 名前付きまたは名前なしパイプです

DeleteFile()

BOOL DeleteFile(LPCTSTR lpFileName);

指定ファイルを削除します

lpFileName - 削除するファイル名を指定します

戻り値 - 成功すると 0 以外、失敗すると 0

CopyFile()

BOOL CopyFile(
	LPCTSTR lpExistingFileName,
	LPCTSTR lpNewFileName, 
	BOOL bFailIfExists
);
既存ファイルをコピーします

lpExistingFileName - コピーする既存のファイル名を指定します
lpNewFileName - コピー先の新しいファイル名を指定します
bFailIfExists - コピー先が存在する時、TRUE なら失敗、FALSE なら上書き

戻り値 - 成功すると 0 以外、失敗すると 0

MoveFile()

BOOL MoveFile(LPCTSTR lpExistingFileName , LPCTSTR lpNewFileName);

ファイルを移動、またはディレクトリ名を変更します

lpExistingFileName - 移動させるファイル、またはディレクトリ名を指定します
lpNewFileName - 移動先のファイル、またはディレクトリ名を指定します

戻り値 - 成功すると 0 以外、失敗すると 0

GetFileTime()

BOOL GetFileTime(
	HANDLE hFile , LPFILETIME lpCreationTime ,
	LPFILETIME lpLastAccessTime , LPFILETIME lpLastWriteTime 
);
ファイルの作成日時、更新日時、採集アクセス日時を取得します
取得が不必要な引数には NULL を指定してください

hFile - GENERIC_READ アクセスを持つファイルのハンドルを指定します
lpCreationTime - 作成日時を格納する FILETIME 構造体へのポインタを指定します
lpLastAccessTime - 最終アクセス日時を格納する FILETIME 構造体へのポインタを指定します
lpLastWriteTime - 更新日時を格納する FILETIME 構造体へのポインタを指定します

戻り値 - 成功すると 0 以外、失敗すると 0

FileTimeToSystemTime()

BOOL FileTimeToSystemTime(
	CONST FILETIME *lpFileTime ,
	LPSYSTEMTIME lpSystemTime
);
FILETIME 構造体の日時を SYSTEMTIME 構造体に変換します

liFileTime - 0x8000000000000000 未満の FILETIME 構造体へのポインタを指定します
lpSystemTime - 変換結果を格納する SYSTEMTIME 構造体へのポインタ

戻り値 - 成功すると 0 以外、失敗すると 0

FileTimeToLocalFileTime()

BOOL FileTimeToLocalFileTime(
	CONST FILETIME *lpFileTime ,
	LPFILETIME lpLocalFileTime
);
世界標準時 (UTC) に基づくファイル時間を、ローカルファイル時間に変換します

lpFileTime - UTCに基く時間を格納する FILETIME 構造体へのポインタ
lpLocalFileTime - 変換結果を格納する FILETIME 構造体へのポインタ

戻り値 - 成功すると 0 以外、失敗すると 0

LocalFileTimeToFileTime()

BOOL LocalFileTimeToFileTime(
	CONST FILETIME *lpLocalFileTime,
	LPFILETIME lpFileTime
);
ローカルファイル時間を、世界標準時 (UTC) に基づくファイル時間に変換します

lpLocalFileTime - ローカルファイル時間を格納する FILETIME 構造体へのポインタを指定します
lpFileTime - 変換結果を格納する FILETIME 構造体へのポインタを指定します

戻り値 - 成功すると 0 以外、失敗すると 0

SystemTimeToFileTime()

BOOL SystemTimeToFileTime(
	CONST SYSTEMTIME *lpSystemTime,
	LPFILETIME lpFileTime
);
SYSTEMTIME 構造体の日時を FILETIME 構造体に変換します

lpSystemTime - 変換する SYSTEMTIME 構造体へのポインタを指定します
lpFileTime - 変換結果を受ける FILETIME 構造体へのポインタを指定します

戻り値 - 成功すると 0 以外、失敗すると 0

SetFileTime()

BOOL SetFileTime(
	HANDLE hFile ,
	CONST FILETIME *lpCreationTime ,
	CONST FILETIME *lpLastAccessTime ,
	CONST FILETIME *lpLastWriteTime
);
ファイズの作成日時、更新日時、最終アクセス日時を設定します
設定しない引数には NULL を指定することができます

hFile - GENERIC_WRITE アクセスを持つファイルハンドルを指定します
lpCreationTIle - 作成日時が入ったFILETIME 構造体へのポインタを指定します
lpLastAccessTime - 最終アクセス日時が入った FILETIME 構造体へのポインタを指定します
lpLastWriteTime - 更新日時が入ったFILETIME 構造体へのポインタを指定します

戻り値 - 成功すると 0 以外、失敗すると 0

ReadFile()

BOOL ReadFile(
	HANDLE hFile ,
	LPVOID lpBuffer ,
	DWORD nNumberOfBytesToRead ,
	LPDWORD lpNumberOfBytesRead ,
	LPOVERLAPPED lpOverlapped
);
ファイルをバッファに読み込みます

hFile - GENERIC_READ アクセスを持つファイルのハンドルを指定します
lpBuffer - ファイルから読み込んだデータを格納するバッファへのポインタを指定します
nNumberOfBytesToRead - 読み取るバイト数を指定します
lpNumberOfBytesRead - 読み込んだバイト数を格納するDWORD 型へのポインタを指定します
lpOverlapped - OVERLAPPPED 構造体へのポインタを指定します

戻り値 - 成功すると 0 以外、失敗すると 0

WriteFile()

BOOL WriteFile(
	HANDLE hFile ,
	LPCVOID lpBuffer ,
	DWORD nNumberOfBytesToWrite ,
	LPDWORD lpNumberOfBytesWritten ,
	LPOVERLAPPED lpOverlapped
);
ファイルにデータを書き込みます

hFile - GENERIC_WRITE アクセスを持つファイルハンドルを指定します
lpBuffer - 書き込むデータが格納されているバッファへのポインタを指定します
nNumberOfBytesToWrite - 書き込むバイト数を指定します
lpNumberOfBytesWritten - 書き込んだバイト数を格納するDWORD型へのポインタを指定します
lpOverlapped - OVERLAPPED 構造体へのポインタを指定します

戻り値 - 関数が成功すると 0 以外、失敗すると 0

SetFilePointer()

DWORD SetFilePointer(
	HANDLE hFile ,
	LONG lDistanceToMove ,
	PLONG lpDistanceToMoveHigh ,
	DWORD dwMoveMethod
);
ファイルポインタを指定位置に移動します

hFile - GENERIC_READ または GENERIC_WRITE アクセスのファイルハンドルを指定します
lDistanceToMove - ファイルポインタをオフセットで指定します
lpDistanceToMoveHigh - オフセットの上位 32 ビットが格納されているポインタを指定します
dwMoveMethod - ファイルポインタの移動開始地点を定数で指定します

戻り値 - 成功すれば新しいファイルポインタの下位 32 ビット、失敗すると 0xFFFFFFFF

dwMoveMethod には以下の定数を指定します

定数 解説
FILE_BEGIN ファイルの先頭を開始点にします
FILE_CURRENT ファイルポインタの現在位置を開始点にします
FILE_END ファイルの終端を開始点にします

SetEndOfFile()

BOOL SetEndOfFile(HANDLE hFile);

現在のファイルポインタに EOF を移動させます

hFile - GENERIC_WRITE アクセスを持つファイルハンドルを指定します

戻り値 - 関数が成功すれば 0 以外、失敗すれば 0 が返ります

FlushFileBuffers()

BOOL FlushFileBuffers(HANDLE hFile);

ファイルのバッファをフラッシュします

hFile - GENERIC_WRITE アクセスを持つフラッシュするファイルを指定します

戻り値 - 関数が成功すれば 0 以外、失敗すれば 0