How to change the toolbar button's Bitmap in win32?

2.4k views Asked by At

I have created a toolbar with some controls on it using ReBar within a window. Can anyone please tell me,

  1. How to get the HWND of a buttons/combobox/etc (not normal buttons in a window) if I know (only) the Id of it ?
  2. How to obtain the HBITMAP if I know the id of the resource ?
  3. How to set the bitmap to the controller ?

    SendDlgItemMessageW(hWnd, nId, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap);

This isn't working for toolbars, isn't it ? I couldn't find a way to do it, please help me. Thank you...

Regards

EDIT: Anyone please ? :(

EDIT: Ok. it seems everyone is busy these days. :( Btw, is it a wrong question ?

2

There are 2 answers

0
default On BEST ANSWER

You could download ControlSpy and try it in there to get a feel for it.
I checked the Rebar and saw that RB_SETBANDINFO (under Messages) could be what you are looking for.

0
Mark Ransom On

GetDlgItem will work just as well with a Rebar as it does with a Dialog.

You can use the GetDlgItem function with any parent-child window pair, not just with dialog boxes. As long as the hDlg parameter specifies a parent window and the child window has a unique identifier (as specified by the hMenu parameter in the CreateWindow or CreateWindowEx function that created the child window), GetDlgItem returns a valid handle to the child window.

You can use LoadImage to load a bitmap from a resource and return the HBITMAP.

Finally, SendMessage(hWndButton, BM_SETIMAGE, (WPARAM) IMAGE_BITMAP, (LPARAM) hBitmap);