Windowsプログラミング覚え書き


ここは私がWindowsプログラミングで気づいたことを忘れないよう、書いておくところです。人様に見せられるくらい親切には書かれていません。(^^;;


  1. ReBar Control

1. ReBar Control

構築方法

  1. InitCommonControlsEx()でコモンコントロールを初期化。INITCOMMONCONTROLSEX.dwICCにはICC_COOL_CLASSESを指定。
  2. REBARCLASSNAMEクラス名を使い、CreateWindowEx()でReBarを構築。
  3. REBARBANDINFOに各パラメータを入れ、RB_INSERTBANDでBANDをReBarに挿入。

定数

ReBar Controlのスタイル
RBS_TOOLTIPS 0x0100 ToolTipsを付加する
RBS_VARHEIGHT 0x0200
RBS_BANDBORDERS 0x0400 BANDの後ろに太線が付く
RBS_FIXEDORDER 0x0800
RBS_REGISTERDROP 0x1000 ドロップを受け付ける?
RBS_AUTOSIZE 0x2000
RBS_VERTICALGRIPPER 0x4000 縦置きモードのときにGRIPPERを常に表示する?
RBS_DBLCLKTOGGLE 0x8000 BANDの最大化・最小化をマウスのダブルクリックで行う(通常はシングルクリック)
メッセージ
uMsg 動作 戻り値 wParam lParam
RB_SETBARINFO ReBarの設定 0なら成功、それ以外は失敗 0 LPREBARINFO
RB_GETBARINFO ReBarの設定情報を取得 0なら成功、それ以外は失敗 0 LPREBARINFO
RB_INSERTBAND BANDを挿入 0なら成功、それ以外は失敗 UINT (index, -1のときは追加) LPREBARBANDINFO
RB_DELETEBAND BANDを削除 0なら成功、それ以外は失敗 UINT (index) 0
RB_SETBANDINFO BAND情報を設定 0なら成功、それ以外は失敗 UINT (index) LPREBARBANDINFO
RB_GETBANDINFO BAND情報を取得 0なら成功、それ以外は失敗 UINT (index) LPREBARBANDINFO
RB_GETBANDCOUNT BANDの数を取得 UINT (BANDの数) 0 0
RB_GETROWCOUNT ReBar内の段数を取得 UINT (段数) 0 0
RB_GETROWHEIGHT ReBar内の段の高さを取得 UINT (段の高さ) UINT (段のindex) 0
RB_SETPARENT 親ウィンドウを設定 HWND (前の親ウィンドウのハンドル, 前に親ウィンドウがなければNULL) HWND (新しい親ウィンドウのハンドル) 0
RB_HITTEST
RB_GETRECT
RB_IDTOINDEX idをindexに変換 UINT (index) UINT (id) 0
RB_SETTOOLTIPS
RB_GETTOOLTIPS
RB_SETBKCOLOR
RB_GETBKCOLOR
RB_SETTEXTCOLOR
RB_GETTEXTCOLOR
RB_SIZETORECT
RB_BEGINDRAG
RB_ENDDRAG
RB_DRAGMOVE
RB_GETBARHEIGHT
RB_MINIMIZEBAND
RB_MAXIMIZEBAND
RB_GETBANDBORDERS
RB_SHOWBAND BANDを表示/非表示にする ??? UINT (index) 0なら非表示、それ以外は表示
RB_SETPALETTE
RB_GETPALETTE
RB_MOVEBAND
RB_SETUNICODEFORMAT
RB_GETUNICODEFORMAT
RB_SETBANDFOCUS BANDにフォーカスを設定 0以外は既にフォーカスが設定されている UINT (index) 0ならフォーカスを解除 それ意外は設定
RB_GETBANDFOCUS フォーカスを持っているBANDのindexを取得 int (フォーカスを持っているBANDのindex -1ならフォーカスを持っているものはなし) 0 0
RB_CYCLEFOCUS
RB_SETEXTENDEDSTYLE 拡張スタイルをセット
RB_SETEXTENDEDSTYLEで指定する拡張スタイル
RBS_EX_OFFICE9 0x00000001 新しいGRIPPER
REBARINFO構造体
UINT cbSize REBARINFOのサイズ sizeof(REBARINFO)
UINT fMask 各メンバのマスク
HIMAGELIST himl アサインするImageListのハンドル
REBARINFO.fMaskに指定する値
RBIM_IMAGELIST 0x00000001 himlが有効
REBARBANDINFO構造体
UINT cbSize REBARBANDINFOのサイズ sizeof(REBARBANDINFO)
UINT fMask 各メンバのマスク
UINT fStyle BANDのスタイル
COLORREF clrFore 前景カラー
COLORREF clrBack 背景カラー
LPSTR lpText 文字列のアドレス
UINT cch lpTextの指すバッファのサイズ
int iImage ReBarにアサインしているImageList中のインデックス
HWND hwndChild BANDの中に入れる子ウィンドウのハンドル
UINT cxMinChild 子ウィンドウの最小幅
UINT cyMinChild 子ウィンドウの最小高
UINT cx BANDの幅
HBITMAP hbmBack ビットマップのハンドル
UINT wID BANDのID
UINT cyChild 子ウィンドウの高さ
UINT cyMaxChild 子ウィンドウの最大高
UINT cyIntegral ???
UINT cxIdeal 理想的な幅(BANDが最大化するときに使用される)
LPARAM lParam ユーザー設定値?
UINT cxHeader ヘッダの幅?
REBARBANDINFO.fMaskに指定する値
RBBIM_STYLE 0x00000001 fStyleが有効
RBBIM_COLORS 0x00000002 clrFore,clrBackが有効
RBBIM_TEXT 0x00000004 lpText,cchが有効
RBBIM_IMAGE 0x00000008 iImageが有効
RBBIM_CHILD 0x00000010 hwndChildが有効
RBBIM_CHILDSIZE 0x00000020 cxMinChild,cyMinChildが有効
RBBIM_SIZE 0x00000040 cxが有効
RBBIM_BACKGROUND 0x00000080 hbmBackが有効
RBBIM_ID 0x00000100 wIDが有効
RBBIM_IDEALSIZE 0x00000200 cxIdealが有効
RBBIM_LPARAM 0x00000400 lParamが有効
RBBIM_HEADERSIZE 0x00000800 cxHeaderが有効

cyChild,cyMaxChild,cyIntegralはどうなったんだ?(^^;

REBARBANDINFO.fStyleに指定する値
RBBS_BREAK 0x00000001 改行
RBBS_FIXEDSIZE 0x00000002 BANDのサイズを固定
RBBS_CHILDEDGE 0x00000004 子ウィンドウの周りに隙間を入れる
RBBS_HIDDEN 0x00000008 表示しない
RBBS_NOVERT 0x00000010 縦置きのときに表示しない?
RBBS_FIXEDBMP 0x00000020 BANDがリサイズしてもビットマップを移動しない?
RBBS_VARIABLEHEIGHT 0x00000040 子ウィンドウの高さに自動で合わせる(BANDの高さを可変にする)
RBBS_GRIPPERALWAYS 0x00000080 GRIPPERを常に表示する(通常はBANDの数が1個のときは表示されない)
RBBS_NOGRIPPER 0x00000100 GRIPPERを表示しない
RBBS_NOCHEVRON 0x00000200 ???

覚え書きに戻る