DRAWITEMSTRUCT 構造体 (winuser.h)

所有者ウィンドウが所有者描画コントロールまたはメニュー項目を描画する方法を決定するために使用する情報を提供します。 所有者描画コントロールまたはメニュー項目の所有者ウィンドウは、この構造体へのポインターを、WM_DRAWITEM メッセージの lParam パラメーターとして受け取ります。

構文

typedef struct tagDRAWITEMSTRUCT {
  UINT      CtlType;
  UINT      CtlID;
  UINT      itemID;
  UINT      itemAction;
  UINT      itemState;
  HWND      hwndItem;
  HDC       hDC;
  RECT      rcItem;
  ULONG_PTR itemData;
} DRAWITEMSTRUCT, *PDRAWITEMSTRUCT, *LPDRAWITEMSTRUCT;

メンバー

CtlType

型: UINT

コントロール型。 このメンバーには、次のいずれかの値を指定できます。 「解説」を参照してください。

意味
ODT_BUTTON
所有者描画ボタン
ODT_COMBOBOX
所有者描画コンボ ボックス
ODT_LISTBOX
所有者描画リスト ボックス
ODT_LISTVIEW
リスト ビュー コントロール
ODT_MENU
所有者描画メニュー項目
ODT_STATIC
所有者描画の静的コントロール
ODT_TAB
タブ コントロール

CtlID

型: UINT

コンボ ボックス、リスト ボックス、ボタン、または静的コントロールの識別子。 このメンバーは、メニュー項目には使用されません。

itemID

型: UINT

メニュー項目のメニュー項目識別子、またはリスト ボックスまたはコンボ ボックス内の項目のインデックス。 空のリスト ボックスまたはコンボ ボックスの場合、このメンバーには を指定 -1できます。 これにより、コントロールに項目がない場合でも、 アプリケーションは rcItem メンバーによって指定された座標にフォーカス四角形のみを描画できます。 これは、リスト ボックスまたはコンボ ボックスにフォーカスがあるかどうかをユーザーに示します。 itemAction メンバーでビットを設定する方法によって、リスト ボックスまたはコンボ ボックスにフォーカスがあるかのように四角形を描画するかどうかが決まります。

itemAction

型: UINT

必要な描画アクション。 このメンバーには、1 つ以上の値を指定できます。

意味
ODA_DRAWENTIRE
コントロール全体を描画する必要があります。
ODA_FOCUS
コントロールが失われたり、キーボードフォーカスが取得されたりしました。 itemState メンバーをチェックして、コントロールにフォーカスがあるかどうかを確認する必要があります。
ODA_SELECT
選択状態が変更されました。 itemState メンバーは、選択状態が新しくなったかどうかを判断する場合にチェックします。

itemState

型: UINT

現在の描画アクションが実行された後のアイテムの表示状態。 このメンバーは、次の表に示す値の組み合わせにすることができます。

意味
ODS_CHECKED
メニュー項目がチェックされます。 このビットは、メニューでのみ使用されます。
ODS_COMBOBOXEDIT
図面は、所有者描画コンボ ボックスの選択フィールド (編集コントロール) で行われます。
ODS_DEFAULT
項目は既定の項目です。
ODS_DISABLED
アイテムは無効として描画されます。
ODS_FOCUS
項目にキーボード フォーカスがあります。
ODS_GRAYED
項目は灰色で表示されます。 このビットは、メニューでのみ使用されます。
ODS_HOTLIGHT
項目がホット トラッキングされています。つまり、マウスが項目上にあると、項目が強調表示されます。
ODS_INACTIVE
項目は非アクティブであり、メニューに関連付けられているウィンドウは非アクティブです。
ODS_NOACCEL
コントロールは、キーボード アクセラレータのキューなしで描画されます。
ODS_NOFOCUSRECT
コントロールはフォーカス インジケーターキューなしで描画されます。
ODS_SELECTED
メニュー項目の状態が選択されています。

hwndItem

種類: HWND

コンボ ボックス、リスト ボックス、ボタン、および静的コントロールのコントロールへのハンドル。 メニューの場合、このメンバーは項目を含むメニューへのハンドルです。

hDC

種類: HDC

デバイス コンテキストへのハンドル。このデバイス コンテキストは、コントロールに対して描画操作を実行するときに使用する必要があります。

rcItem

種類: RECT

描画するコントロールの境界を定義する四角形。 この四角形は、 hDC メンバーによって指定されたデバイス コンテキストにあります。 コンボ ボックス、リスト ボックス、ボタンのデバイス コンテキストで所有者ウィンドウが描画するものは自動的にクリップされますが、メニュー項目はクリップされません。 メニュー項目を描画する場合、所有者ウィンドウは 、rcItem メンバーによって定義された四角形の境界の外側に描画することはできません。

itemData

種類: ULONG_PTR

メニュー項目に関連付けられているアプリケーション定義の値。 コントロールの場合、このパラメーターは、 LB_SETITEMDATAまたはCB_SETITEMDATA メッセージによってリスト ボックスまたはコンボ ボックスに最後に割り当てられた値 指定します。 リスト ボックスまたはコンボ ボックスに LBS_HASSTRINGS または CBS_HASSTRINGS スタイルがある場合、この値は最初は 0 です。 それ以外の場合、この値は最初は、次のいずれかのメッセージの lParam パラメーターのリスト ボックスまたはコンボ ボックスに渡された値です。

CtlTypeODT_BUTTONまたはODT_STATICの場合、itemData は 0 です。

注釈

ステータス バーなどの一部のコントロールの種類では、 CtlType の値を設定しません。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
Header winuser.h (Windows.h を含む)

こちらもご覧ください

CB_ADDSTRING

CB_INSERTSTRING

CB_SETITEMDATA

LB_ADDSTRING

LB_INSERTSTRING

LB_SETITEMDATA

リファレンス

WM_DRAWITEM