CWnd::OnMeasureItem
フレームワークは、オーナー描画ボタン、コンボ ボックス、リスト ボックス、またはメニュー項目の所有者用に、フレームワークによってコントロールが作成されると、このメンバー関数を呼び出します。
afx_msg void OnMeasureItem(
int nIDCtl,
LPMEASUREITEMSTRUCT lpMeasureItemStruct
);
パラメーター
nIDCtl
コントロールの ID。lpMeasureItemStruct
オーナー描画コントロールのサイズを格納している MEASUREITEMSTRUCT のデータ構造体へのポインター。
解説
このメンバー関数をオーバーライドし、lpMeasureItemStruct が指す MEASUREITEMSTRUCT のデータ構造を設定し、を返します。; これは、コントロールのサイズを Windows に通知し、Windows がコントロールとの対話を正しく処理できるようにします。
リスト ボックスやコンボ ボックスが LBS_OWNERDRAWVARIABLE または CBS_OWNERDRAWVARIABLE のスタイルで作成されている場合、フレームワークは、コントロールの各項目の所有者用にこの関数を呼び出します; この関数は、それが呼び出されます。
Windows は OnMeasureItem に WM_INITDIALOG のメッセージを送信する前に OWNERDRAWFIXED のスタイルで作成されたコンボ ボックスやリスト ボックスのオーナーの呼び出しを開始します。その結果、所有者がこの呼び出しを受け取ると、Windows は、コントロールで使用するフォントの高さと幅を決定できません; これらの値を要求する計算アプリケーションまたはライブラリの main 関数と関数呼び出しで発生します。
測定している項目が CMenu、CListBox または CComboBox のオブジェクトの場合は、適切なクラスの MeasureItem の仮想関数が呼び出されます。各項目のサイズを計算して設定するには、適切なコントロール クラスの MeasureItem のメンバー関数をオーバーライドします。
OnMeasureItem、コントロールのクラスが実行時に作成または LBS_OWNERDRAWVARIABLE または CBS_OWNERDRAWVARIABLE のスタイルで作成されている場合のみ呼び出されます。コントロールがダイアログ エディターによって作成される場合、OnMeasureItem は呼び出されません。これは WM_MEASUREITEM のメッセージがコントロールの作成プロセスの早期に送信されるためです。サブクラス化後、作成プロセス発生した DDX_Control、SubclassDlgItem、または SubclassWindowを使用してサブクラス通常。したがって、ON_WM_MEASUREITEM_REFLECTを実装する機構の MFC には、コントロールの OnChildNotify 関数の WM_MEASUREITEM のメッセージを処理する方法はありません。
[!メモ]
このメンバー関数は、アプリケーションが Windows メッセージを処理できるようにするためにフレームワークによって呼び出されます。この関数に渡されるパラメーターの値は、フレームワークがメッセージ受信時に受け取ったパラメーターの値に基づいています。この関数の基本クラスの実装を呼び出した場合は、関数に渡したパラメーターではなく、メッセージと共に渡されたパラメーター自体が使用されます。
必要条件
ヘッダー: afxwin.h