I am using the winAPI tutorial by the forger and I have created an editing window above which I now wish to put a toolbar. I have tried to incorporate the code from the website into my program, the code I have put into the WindProc function under WM_CREATE is as follows:
I have then used the following code (from the website) to designate space for the toolbar:Code:hTool = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hwnd, (HMENU)IDC_MAIN_TOOL, GetModuleHandle(NULL), NULL); SendMessage(hTool, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0); TBBUTTON tbb; TBADDBITMAP tbab; tbab.hInst = HINST_COMMCTRL; tbab.nID = IDB_STD_SMALL_COLOR; SendMessage(hTool, TB_ADDBITMAP, 0, (LPARAM)&tbab); ZeroMemory(tbb, sizeof(tbb)); tbb.iBitmap = STD_FILENEW; tbb.fsState = TBSTATE_ENABLED; tbb.fsStyle = TBSTYLE_BUTTON; tbb.idCommand = ID_FILE_NEW; tbb.iBitmap = STD_FILEOPEN; tbb.fsState = TBSTATE_ENABLED; tbb.fsStyle = TBSTYLE_BUTTON; tbb.idCommand = ID_FILE_OPEN; tbb.iBitmap = STD_FILESAVE; tbb.fsState = TBSTATE_ENABLED; tbb.fsStyle = TBSTYLE_BUTTON; tbb.idCommand = ID_FILE_SAVEAS; SendMessage(hTool, TB_ADDBUTTONS, sizeof(tbb)/sizeof(TBBUTTON), (LPARAM)&tbb);
I have included commctrl.h and linked to comctl32.lib in the linker options. All the ID's are defined ok and the program compiles with no errors. The problem is that when the program runs, there is a toolbar sitauted in the correct position but there are no buttons. The website also says that it is necessary to call InitCommonControls() before you can use common controls. I am not sure how to use this function so I simply putCode:HWND hTool; RECT rcTool; int iToolHeight; HWND hStatus; RECT rcStatus; int iStatusHeight; HWND hEdit; int iEditHeight; RECT rcClient; // Size toolbar and get height hTool = GetDlgItem(hwnd, IDC_MAIN_TOOL); SendMessage(hTool, TB_AUTOSIZE, 0, 0); GetWindowRect(hTool, &rcTool); iToolHeight = rcTool.bottom - rcTool.top; // Size status bar and get height hStatus = GetDlgItem(hwnd, IDC_MAIN_STATUS); SendMessage(hStatus, WM_SIZE, 0, 0); GetWindowRect(hStatus, &rcStatus); iStatusHeight = rcStatus.bottom - rcStatus.top; // Calculate remaining height and size edit GetClientRect(hwnd, &rcClient); iEditHeight = rcClient.bottom - iToolHeight - iStatusHeight; hEdit = GetDlgItem(hwnd, IDC_MAIN_EDIT); SetWindowPos(hEdit, NULL, 0, iToolHeight, rcClient.right, iEditHeight, SWP_NOZORDER);
InitCommonControls(); at the beginning of WinMain(). It compiles fine but still there are no buttons.
If anyone could shed some light on this problem I would be extremely grateful, thanks.