バーの自前描画

[戻る]
ぬあ 2005/08/05(金) 13:18:52
お世話になっております。

ウインドウに表示される、ツールバーやリバーなどのバー
の色(背景など)を変更したり、画像を貼り付けたりすることは可能なのでしょうか?
可能な場合は、どのようにすればよいのでしょうか?

よろしくお願いします。

プログラミング環境は以下になります。

VisualStudio.NET2003
ATL, WTL

チャップ [E-Mail] 2005/08/06(土) 00:45:44
ツールバーならこことか参考になります。
http://www.eonet.ne.jp/~yfactory/SDK/3-07.htm

Gak 2005/08/08(月) 18:07:34
バーをサブクラス化して WM_ERASEBKGND を処理すれば行けそう。

-------------------------------
  WNDPROC pfnTb_;

  LRESULT CALLBACK tbProc(...) {
    switch (message) {
      case WM_ERASEBKGND:
        GetClientRect(&rect);
        FillRect((HDC)wParam, &rect, GetSysColorBrush(COLOR_DESKTOP));
        return 1;
    }
    return CallWindowProc(pfnTb_, hWnd, message, wParam, lParam);
  }

  LRESULT CALLBACK WndProc(...) {
    switch (message) {
      case WM_CREATE:
        hToolbar = CreateToolbarEx(...);
        pfnTb_ = (WNDPROC)SetWindowLong(hToolbar, GWL_WNDPROC, (LONG)tbProc);
    }
  }

みみかき 2005/08/27(土) 16:19:00
WM_ERASEBKGND を受け取るようにしてみましたが、上手くいきませんでした。

いろいろ試行錯誤した結果、SetBandInfoで RBBIM_BACKGROUND を使うと描画
画像を貼り付けられることがわかりました。

ぬあ 2005/08/27(土) 16:33:47
ありがとうございます。

SetBandInfoで RBBIM_BACKGROUNDを使うようにしてみます。

ぬあ 2005/08/28(日) 06:50:57
SetBandInfo で 画像を背景にすることができました。
ありがとうございます。

ただ、バーの輪郭の部分には貼り付けられなかったので、バーを二段にした場合
などに、目立ってしまいます。
これを回避する方法はないのでしょうか?

よろしくお願いします。

古いスレッドには追加発言できません。