§オーナードロー 備忘録メモ

I. DRAWITEMSTRUCT構造体

DRAWITEMSTRUCT Structure

メンバ 説明 HSP変数
CtlType コントロールのタイプ。このメンバは以下の値のうちの1つです。
ODT_BUTTON (4) オーナードローボタン。
ODT_COMBOBOX (3) オーナードローコンボボックス。
ODT_LISTBOX (2) オーナードローリストボックス。
ODT_LISTVIEW (102) リストビューコントロール。
ODT_MENU (1) オーナードローメニュー項目。
ODT_STATIC (5) オーナードロースタティックコントロール。
ODT_TAB (101) タブコントロール。
ODT_HEADER (100) ヘッダーコントロール。
DRAWITEMSTRUCT.0
CtlID コンボボックス、リストボックス、ボタン、スタティックコントロールの識別子。このメンバはメニュー項目では使用しません。 DRAWITEMSTRUCT.1
itemID メニュー項目ではメニュー項目の識別子、リストボックスやコンボボックスでは項目インデックス。空のリストボックスやコンボボックスの場合、このメンバは-1です。これはコントロールに項目がない場合でも、rcItemメンバで指定された座標にフォーカス矩形のみ描画させることができます。これはコンボボックスやリストボックスがフォーカスを持っているかどうかをユーザーに示します。itemActionメンバにどのビットが設定されるかで、リストボックスやコンボボックスがフォーカスを持つ矩形が描画されることを決定します。 DRAWITEMSTRUCT.2
itemAction 要求される描画のアクション。このメンバは値の1つ、あるいは1つ以上です。
ODA_DRAWENTIRE
(0x0001)
コントロール全体を描画する必要があります。
ODA_FOCUS
(0x0004)
コントロールはキーボードフォーカスを失ったり得たりしました。どのコントロールにフォーカスがあるかを決めるには、itemStateメンバを確認しなければなりません。
ODA_SELECT
(0x0002)
選択状態が変わりました。新たな選択状態を決めるには、itemStateメンバを確認しなければなりません。
DRAWITEMSTRUCT.3
itemState 現在の描画のアクションの後に起こる視覚的なアイテムの状態。このメンバは以下の表で示した値の組み合わせです。
ODS_CHECKED
(0x0008)
メニュー項目がチェックされています。このビットはメニューでのみ使用します。
ODS_COMBOBOXEDIT
(0x1000)
オーナードローコンボボックスの選択フィールド(エディトコントロール)で描画が行われています。
ODS_DEFAULT
(0x0020)
アイテムはデフォルトアイテムです。
ODS_DISABLED
(0x0004)
アイテムは無効状態として描画されています。
ODS_FOCUS
(0x0010)
アイテムはキーボードフォーカスがあります。
ODS_GRAYED
(0x0002)
アイテムは灰色状態です。このビットはメニューでのみ使用します。
ODS_HOTLIGHT
(0x0040)
[Windows 98以降] メニュー項目はホットトラック中です。マウスが項目の上にある時、項目はハイライトされます。
ODS_INACTIVE
(0x0080)
[Windows 98以降] メニュー項目やメニューに関連付けられたウィンドウが非アクティブ状態です。
ODS_NOACCEL
(0x0100)
[Windows 2000以降] コントロールはキーボードアクセラレータキューなしで描画されています。
ODS_NOFOCUSRECT
(0x0200)
[Windows 2000以降] コントロールはフォーカスインジケータキューなしで描画されています。
ODS_SELECTED
(0x0001)
項目の状態は選択されています。
DRAWITEMSTRUCT.4
hwndItem コンボボックス、リストボックス、ボタン、スタティックコントロールのハンドル。メニューの場合、このメンバーはメニュー項目を含むメニューのハンドルです。 DRAWITEMSTRUCT.5
hDC デバイスコンテキストのハンドル。このデバイスコンテキストは、コントロール上で描画処理を行う時に使用しなければなりません。 DRAWITEMSTRUCT.6
rcItem left 矩形の左上隅のX座標。 DRAWITEMSTRUCT.7
top 矩形の左上隅のY座標。 DRAWITEMSTRUCT.8
right 矩形の右下隅のX座標。 DRAWITEMSTRUCT.9
bottom 矩形の右下隅のY座標。 DRAWITEMSTRUCT.10
itemData メニュー項目に関連付けられたアプリケーション定義の値。
コントロールの場合、このパラメータはリストボックスやコンボボックスにLB_SETITEMDATAやCB_SETITEMDATAメッセージによって指定された最後の値が明示されます。リストボックスやコンボボックスがLBS_HASSTRINGSやCBS_HASSTRINGSスタイルを持っているならば、この値の初期値は0です。そうでない場合、この値は次のメッセージのうちの1つからリストボックスやコンボボックスに対してlParamパラメータで渡された値です。
 CB_ADDSTRING
 CB_INSERTSTRING
 LB_ADDSTRING
 LB_INSERTSTRING
CtlTypeがODT_BUTTONかODT_STATICならば、itemDataは0です。
DRAWITEMSTRUCT.11

II. HSP向けDRAWITEMSTRUCT構造体マクロ定義

/*---------------------------------------------------------

	DRAWITEMSTRUCT構造体マクロ定義 for HSP
	by Let's HSP!

---------------------------------------------------------*/

#define ODT_BUTTON 4
#define ODT_COMBOBOX 3
#define ODT_LISTBOX 2
#define ODT_LISTVIEW 102
#define ODT_MENU 1
#define ODT_STATIC 5
#define ODT_TAB 101
#define ODT_HEADER 100

#define ODA_DRAWENTIRE 0x0001
#define ODA_FOCUS 0x0004
#define ODA_SELECT 0x0002

#define ODS_CHECKED 0x0008
#define ODS_COMBOBOXEDIT 0x1000
#define ODS_DEFAULT 0x0020
#define ODS_DISABLED 0x0004
#define ODS_FOCUS 0x0010
#define ODS_GRAYED 0x0002
#define ODS_HOTLIGHT 0x0040
#define ODS_INACTIVE 0x0080
#define ODS_NOACCEL 0x0100
#define ODS_NOFOCUSRECT 0x0200
#define ODS_SELECTED 0x0001
Copyright © 2005-2012 Let's HSP!