こんにちは。
ツールバーハンドルにTB_SETROWSメッセージを送れば並びを変更出来ます。
基本は横一列なので、ROWは1です。ROWにボタンの数を設定すれば変る筈です。
SendMessage(hTB/*ツールバーハンドル*/, TB_SETROWS/*メッセージ*/, MAKEWPARAM(Row/*縦の数*/, TRUE), (LPARAM)&rcChanged/*変更後の矩形領域を受け取るバッファ*/);
以下参考程度に
/*ツールバーハンドルの作成*/
HWND hTB = ::CreateWindowEx(0, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_TABSTOP | WS_VISIBLE, 0, 0, 1, 1, hWndParent, (HMENU)IDC_TOOLBAR1, hInst, 0);
/*ボタン用の構造体*/
TBBUTTON tb = {sizeof(tb)};
/*並びを変更した後の矩形領域を受け取るバッファ*/
RECT rcChanged;
::SendMessage(hTB, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0);
/*取り合えずボタンを5個作成する*/
for(int i = 0; i < 5; ++i)
{
tb.fsState = TBSTATE_ENABLED;
tb.iBitmap = -1;
tb.idCommand = i;
::SendMessage(hTB, TB_INSERTBUTTON, 0, (LPARAM)&tb);
}
/*ボタンの数を取る*/
const int iCount = ::SendMessage(hTB, TB_BUTTONCOUNT, 0, 0);
/*ROWを設定する(此処で縦に並んでいる筈)*/
::SendMessage(hTB, TB_SETROWS, MAKEWPARAM(iCount, TRUE), (LPARAM)&rcChanged);
/*変更後の領域を確認出来る*/
rc.Changed.left...
お礼
丁寧にありがとうございます。 早速、試してみます。