I am trying to make a toolbar with dynamic buttons which change the image of the button when the user clicks on it. More specifically to change the index of the iBitmap in TBButton. So far I've been trying to use TB_SETBUTTONINFO but without much luck, so far the message fails with...here's the code so far: I have the toolbar setup and buttons setup as follows: Code: //Globals: TBBUTTON tbb[2]; HWND hTool = NULL; HIMAGELIST imagelist; //WM_CREATE: // Create Toolbar hTool = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hwnd, (HMENU)IDC_MAIN_TOOL, GetModuleHandle(NULL), NULL); if(hTool == NULL) MessageBox(hwnd, TEXT("Could not create tool bar."), TEXT("Error"), MB_OK | MB_ICONERROR); // Send the TB_BUTTONSTRUCTSIZE message, which is required for // backward compatibility. SendMessage(hTool, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0); imagelist = ImageList_Create(32, 32, ILC_COLOR32, 3, 3); HBITMAP hToolIcons = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_TOOLBAR)); ImageList_Add(imagelist, hToolIcons, NULL); SendMessage(hTool, TB_SETIMAGELIST, 0, (LPARAM)(HIMAGELIST)imagelist); ZeroMemory(tbb, sizeof(tbb)); tbb[0].iBitmap = 0; tbb[0].fsState = TBSTATE_ENABLED; tbb[0].fsStyle = TBSTYLE_BUTTON; tbb[0].idCommand = ID_FILE_CONNECT; tbb[1].iBitmap = 2; tbb[1].fsState = TBSTATE_ENABLED; tbb[1].fsStyle = TBSTYLE_BUTTON; tbb[1].idCommand = ID_FILE_SELECTSERVER; SendMessage(hTool, TB_ADDBUTTONS, sizeof(tbb)/sizeof(TBBUTTON), (LPARAM)&tbb); //and when the user clicks on the button I have the following code: case ID_FILE_CONNECT: { if(!g_CONNECTED) { CreateNewMDIChild(g_hMDIClient); TBBUTTONINFO tbInfo; tbInfo.cbSize = sizeof(tbInfo); tbInfo.dwMask = TBIF_IMAGE; tbInfo.iImage = 1; //tbb[0].iBitmap = 1; int i = SendMessage(hwnd, TB_SETBUTTONINFO,(WPARAM)ID_FILE_CONNECT, (LPARAM)&tbInfo); if(i == NULL) MessageBox(hwnd, TEXT("Could not update tool bar."), TEXT("Error"), MB_OK | MB_ICONERROR); } } break; } break; Can anyone help? maybe Im doing something wrong.
Hi, I've never worked with toolbars but I had similar problems with other controls. I think the problem is that you do not any value for "idCommand" in the tbInfo structure, while managing the message. Try to add something like Code: tbInfo.idCommand = ID_FILE_CONNECT; I think this may be the solution for your problem becouse of the info found at http://msdn.microsoft.com/en-us/library/bb760476(VS.85).aspx I hope this can help you