• ベストアンサー

Win32APIでツールバーを縦に設置したいです。

Win32APIを用いて、ツールバーを縦に設置したいと思っています。 ツールバーは、普通は横に設置されますが、縦にする方法が分かりません。 ウィンドウスタイルに「CCS_VERT」等を指定しましたが不可能でした。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

 こんにちは。  ツールバーハンドルに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...

aiueorffe
質問者

お礼

丁寧にありがとうございます。 早速、試してみます。

関連するQ&A

  • C++ Win32APIでツールバーの位置を下にしたい。

    C++ Win32APIでツールバーの位置を下にしたい。 C++ Win32APIを勉強中でして、ウインドウを作成し、ツールバーをCreateWindowsEXで作成したのですが、このツールバーをウインドウの下部に表示する事は出来ないのでしょうか? ネット上のサイトには作成までの手順は載ってはいたのですが、ツールバーの位置を変更する処理はどうしても見つかりませんでした。 どなたかご存知の方いらっしゃいましたらご指導のほどよろしくお願い致します。

  • 縦になってしまったIMEツールバー

    縦になってしまったIMEツールバーを横に戻すにはどうしたらいいでしょうか?

  • Win32APIは覚えて損する?

    Win32APIは現在一般的に出回ってる32Bit版Windowsの ApplicationProgramingInterfaceですよね? これがそのうち一般的に出回るのが64Bit版Windowsに なったときもWin32APIを勉強したときの知識は役に たつのでしょうか? またWin16→Win32に変わったときはどのような感じだ ったんでしょうか? あと少々質問とずれてしまいますが○○Bit版Windowsの [○○Bit版]はどのような意味を持つのでしょうか? 暇なときにでも回答できたらお願いします ※ ○○=16 or 32 or 64 など

  • MFCなのかWin32APIなのか

    みなさんはじめまして。グフです。 これからWindows上でC/C++(VisualStudio.NET2003) にて、Windowsアプリケーション開発の勉強を始め ようとしています。 いろんなサイトや書籍を見ている中で、Windowsアプリ の開発方法としてMFCをつかうやり方と、Win32APIで 開発する方法の2つがあることがわかりました。 これからWindowsの勉強を行うにはどちらの方法で開発 するのが望ましいのでしょうか? ケース by ケースだとは思いますが、何かアドバイス いただければと思いまして、投稿させていただきました。 やはり基礎からおさえるのであれば、Win32APIの方が よろしいのでしょうか? 今後のWinFX環境を考えると、Win32APIでの知識が無駄 になってしまうということはないのでしょうか?

  • win32API

    win32APIと言うのを使えばオフィスの操作だけではなく windowsの操作も出来ると知ったのですが 何ができるか・どんなことができるのかの一覧を知りたいのですが そのようなURL、わかりますか?

  • .NET FrameworkとWin32 API

    趣味でプログラミングを始めた初心者です。 Win32 APIを習得しようとしていますが、Windows Vistaから.NET Frameworkが標準のAPIになると聞きました。Win32 APIは引き続き搭載するとのことですが、これが搭載されなくなれば、プログラミングを続けられなくなります。 いずれは、.NETのプログラミングを習得するつもりですが、早めに習得すべきでしょうか?それとも当面はWin32でも大丈夫でしょうか? 勝手な質問ですみません。

  • htmlのハイパーリンクをwin32apiで

    htmlのハイパーリンクをwin32apiで win32apiのアプリケーションにhtmlのハイパーリンクのようなコントロールを入れたいのですが、コモンコントロールにそういう物がないか探してみても見つかりません。 スタティックコントロールにあれこれ手を加えて自作するくらいしか方法はないのでしょうか? 沢山見るコントロールなだけに、win32apiの方でハイパーリンクコントロールを実現する物が用意されていないのが不思議です。 何か知っている方、回答お願いします。

  • MS-IME2000ツールバーが縦に表示されたのを、元に戻したい

    同僚が、お客様から質問されたのですが、 いろいろいじっているうちに、 MS-IME2000ツールバーが画面に縦に表示されてしまったので、 元の画面下端に横に表示させたいそうです。 プロパティのツールバータブで、画面左端をIMEツールバーのために確保するにチェックを入れて、わざと、縦に妙に長くさせてから、横に持ってきて、 もう一度、プロパティのツールバータブで、画面左端をIMEツールバーのために確保するにチェックを入れると、元に戻せる方法は発見したのですが、 もっと簡単に元に戻す方法はないでしょうか? OSはMeです。 よろしくお願いいたします。

  • ツールバーが...。

    WIN98を使用しています。子供がいたずらをしてしまったようで突然ツールバーの位置が変わってしまいました。今までは下にあったものが左に移動してしまいました。(左上にスタートキーがある状態です)ツールバーにカーソルを合わせると←→がでるのでドラッグすると横に広がるばかりで縦移動ができません。スタートキーの下に合わせると ↑↓が出るので移動させようとしてもどこにも移動しません。元通りに下にツールバーを出すにはどうしたらよいのでしょうか。

  • IME2002のツールバーを縦置き・・・できる?

    お世話になります。 初心者な質問で申し訳ないんですが、MS-IME2002のツールバー(言語バー)を縦置きにしたいのですが、以前、雑誌や2○ゃんねるなどで「できないぞ、ゴルァ!」とされていましたが、 http://www.zdnet.co.jp/help/tips/windows/w0572.html 上記サイトで縦置きにする方法が紹介されています。しかし、ウチの環境下(Windows98SEと2000+IE5.5+SP2+officeXP←SPの類は未導入)ではできません。というよりも、図示されている「縦置き(V)」が選択肢に現れません。 これはひょっとして、WindowsもXPでないと対応していないとか、officeのSP2まで導入しないとダメなんでしょうか

専門家に質問してみよう