次の方法で共有


DRAWITEMSTRUCT 構造体

更新 : 2007 年 11 月

DRAWITEMSTRUCT 構造体は、オーナー描画コントロールあるいはメニュー項目を描画する方法を決める必要があるオーナー ウィンドウに情報を提供します。

typedef struct tagDRAWITEMSTRUCT {
   UINT CtlType;
   UINT CtlID;
   UINT itemID;
   UINT itemAction;
   UINT itemState;
   HWND hwndItem;
   HDC hDC;
   RECT rcItem;
   DWORD itemData;
} DRAWITEMSTRUCT;

パラメータ

  • CtlType
    コントロールの種類。コントロールの種類として、次のいずれかの値を指定します。

    • ODT_BUTTON   オーナー描画ボタン

    • ODT_COMBOBOX   オーナー描画コンボ ボックス

    • ODT_LISTBOX   オーナー描画リスト ボックス

    • ODT_MENU   オーナー描画メニュー

    • ODT_LISTVIEW   リスト ビュー コントロール

    • ODT_STATIC   オーナー描画の静的コントロール

    • ODT_TAB   タブ コントロール

  • CtlID
    コンボ ボックス、リスト ボックス、ボタンのコントロール ID。メニューでは、このメンバは使用されません。

  • itemID
    メニューのメニュー項目 ID、またはリスト ボックスやコンボ ボックスの項目のインデックス。空のリスト ボックスやコンボ ボックスでは、このメンバは負の値になります。これにより、アプリケーションは、コントロールに項目がなくても、rcItem メンバで指定される座標にフォーカス四角形だけを描画できます。このフォーカス四角形により、ユーザーはコンボ ボックスやリスト ボックスが入力フォーカスを持っているかどうかを知ることができます。コンボ ボックスやリスト ボックスがあたかも入力フォーカスを持っているときのようにフォーカス四角形を描画するかどうかは、itemAction メンバのビットの設定によって決まります。

  • itemAction
    要求される描画動作を定義します。次のビットの 1 つ以上の組み合わせが設定されます。

    • ODA_DRAWENTIRE   コントロール全体を描画する必要がある場合は、このビットが設定されます。

    • ODA_FOCUS   コントロールが入力フォーカスを取得したり失ったりするときに、このビットが設定されます。itemState メンバをチェックして、コントロールがフォーカスを持っているかどうかを調べる必要があります。

    • ODA_SELECT   選択項目のステータスが変更されたときにだけ、このビットが設定されます。itemState メンバをチェックして、新しい選択項目のステータスを調べる必要があります。

  • itemState
    現在の描画動作が行われた後の項目の表示状態を指定します。つまり、メニュー項目を淡色表示にするときは、状態フラグ ODS_GRAYED が設定されます。状態フラグを次に示します。

    • ODS_CHECKED   メニュー項目をチェックする場合は、このビットが設定されます。このビットはメニューだけで使われます。

    • ODS_DISABLED   項目を使用できない状態で描画する場合は、このビットが設定されます。

    • ODS_FOCUS   項目が入力フォーカスを持つ場合は、このビットが設定されます。

    • ODS_GRAYED   項目を淡色表示する場合は、このビットが設定されます。このビットはメニューだけで使われます。

    • ODS_SELECTED   項目が選択されている場合は、このビットが設定されます。

    • ODS_COMBOBOXEDIT   描画が、オーナー描画コンボ ボックスの選択フィールド (エディット コントロール) で行われます。

    • ODS_DEFAULT   項目は既定の項目です。

  • hwndItem
    コンボ ボックス、リスト ボックス、ボタンのコントロールのウィンドウ ハンドルを指定します。メニューでは、項目を持つメニューのハンドル (HMENU) を指定します。

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

  • rcItem
    hDC メンバによって指定されたデバイス コンテキスト内で、描画されるコントロールの境界を定義する四角形。Windows では、デバイス コンテキストでオーナーがコンボ ボックス、リスト ボックス、ボタンを描画した場合、その描画結果は自動的にクリップされますが、メニュー項目はクリップされません。メニュー項目を描画する場合、オーナーは必ず rcItem メンバで定義された境界四角形の内側に描画する必要があります。

  • itemData
    このメンバは、コンボ ボックスやリスト ボックスでは、次に示すメンバ関数の 1 つにより渡された値を保持します。

    メニューでは、次に示すメンバ関数の 1 つにより渡された値を保持します。

解説

オーナー描画コントロールまたはメニュー項目のオーナー ウィンドウは、WM_DRAWITEM メッセージの lParam パラメータにこの構造体へのポインタを受け取ります。

必要条件

ヘッダー : winuser.h

参照

参照

CWnd::OnDrawItem

その他の技術情報

構造体、スタイル、コールバック関数とメッセージ マップ