>>2011年09月08日MENUITEMINFO構造体の詳細MENUITEMINFO構造体は、メニューの項目の情報を取り扱う構造体です。InsertMenuItem関数などの引数になっています。構造はこのようになっています。*LPMENUITEMINFO;構造体の扱い方についてなんですが、HSPでは、構造体は扱えないので、このような大きな領域が必要となる場合は、allocで領域を確保します。この構造体はすべてのメンバが4byteです。(割り当てた変数),16(=すべてが4byteなので、5番目は0から数えて0,4,8,12,[16]となります),(書き換える数値32bit整数値)となります。それぞれのメンバの意味は、次のようになっています。cbsize構造体のサイズを指定します。48を指定してください。fMaskここが大事。ここには、どのメンバを使用するかを指定します。下の定数のうち、たとえばMIIM_ID(0x2)のみを指定すると、wIDメンバの値のみが変更されます。(指定されていないメンバに値を入れても、変更されません。)MIIM_BITMAP0x00000080hbmpItemメンバMIIM_CHECKMARKS0x00000008hbmpCheckedメンバとhbmpUncheckedメンバMIIM_DATA0x00000020dwItemDataメンバMIIM_FTYPE0x00000100fTypeメンバMIIM_ID0x00000002wIDメンバMIIM_STATE0x00000001fStateメンバMIIM_STRING0x00000040dwTypeDataメンバMIIM_SUBMENU0x00000004hSubMenuメンバMIIM_TYPE0x00000010MIIM_BITMAP、MIIM_FTYPE、MIIM_STRINGの組み合わせfTypeメニューアイテムのタイプを下の定数で指定します。MFT_MENUBARBREAK0x00000020メニューバーにおいては新しい行にメニューアイテムを追加、ドロップダウンメニューやサブメニュー、ショートカットメニューにおいては新しい列にメニューアイテムを追加します。ドロップダウンメニュー、サブメニュー、ショートカットメニューでは新しいメニューアイテムとの間に水平線が挿入されます。MFT_MENUBREAK0x00000040メニューバーにおいては新しい行にメニューアイテムを追加、ドロップダウンメニューやサブメニュー、ショートカットメニューにおいては新しい列にメニューアイテムを追加します。ドロップダウンメニュー、サブメニュー、ショートカットメニューでも新しいメニューアイテムとの間に水平線は挿入されません。MFT_OWNERDRAW0x00000100オーナーウインドウにメニューアイテムを描画する役割が割り当てられます。ウインドウは最初にメニューを表示する前にWM_MEASUREITEMメッセージを受け取り、またWM_DRAWITEMメッセージを受け取った時は常にメニューアイテムを最新の状態にしなければいけません。この定数を指定する場合、dwTypeDataにアプリケーション定義の値を指定する必要があります。MFT_RADIOCHECK0x00000200hBmpCheckedがNULLの場合チェックマークの代わりにラジオボタンを表示します。MFT_RIGHTJUSTIFY0x00004000メニューアイテムをメニューバーの右側に配置します。メニューバーのアイテムのみ有効です。MFT_SEPARATOR0x00000800メニューアイテムをセパレーターとして追加します。セパレーターは横向きの水平線です。dwTypeDataとcchは無視されます。この定数はドロップダウンメニュー、サブメニュー、ショートカットメニューで有効です。fstateメニューアイテムの状態を下の定数で指定します。MFS_CHECKED0x00000008メニューアイテムにチェックマークをつけます。MFS_DEFAULT0x00001000デフォルトのメニューアイテムにします。デフォルトのアイテムはメニューの中に1つだけ含むことができ、それは太字で表示されます。MFS_DISABLED0x00000003メニューアイテムを無効化し選択できなくします。MFS_GRAYEDと等価です。MFS_ENABLED0x00000000メニューアイテムを有効にし選択可能にします。デフォルトの状態です。MFS_GRAYED0x00000003メニューアイテムを無効化し選択できなくします。MFS_DISABLEDと等価です。MFS_HILITE0x00000080メニューアイテムをハイライト表示にします。MFS_UNCHECKED0x00000000メニューアイテムのチェックマークを消します。MFS_UNHILITE0x00000000メニューアイテムをハイライト状態を解除します。デフォルトの状態です。wIDメニュー項目のIDを指定します。hSubMenuドロップダウンメニューまたはサブメニューのハンドルを指定します。ない時はNULL(=0)を指定してください。dwTypeDataメニュー項目の内容の文字列のアドレスを指定します。メモリアドレスを取得するためには、varptr()関数[HSP]を使用してくださいな。この構造体はfMaskでどのメンバを使うかを指定して、指定したメンバに値を入れて関数を使い変更するというものです。このような形式にすることで、関数が増えることなく、不要な引数も取らず楽になるわけです。この構造体をどのように利用しているかは、メニューバーについて書かれている記事を見てもらえばいいと思います。[必須入力]※画像の中の文字を半角で入力してください。2.0Seesaaブログ×この広告は180日以上新しい記事の投稿がないブログに表示されております。