Jeg er i gang med at lave en lille editor, og jeg er stødt på et problem, som jeg ikke rigtig kan finde en løsning på. Det frustrerende ved det er, at jeg mener at have stødt på samme problem før OG at have løst det, men jeg må enten have glemt, hvad jeg gjorde, eller også husker jeg forkert... Jeg har Googlet uden resultat.
Jeg har en toolbar, hvilken jeg har tilknyttet en HIMAGELIST. Indtil videre har jeg to ikoner, page.ico og disk.ico, som viser henholdsvis et papir og en diskette. Problemet er, at selvom jeg loader begge disse ikoner med LoadIcon og tilføjer dem hver især med ImageList_AddIcon, så er det kun det første ikon, papiret, der bliver vist. Eller rettere sagt, det første ikon bliver vist på begge knapper, som om den ikke kan finde disk.ico og derfor bare viser det første ikon om og om igen.
Her er min funktion til at oprette toolbar'en (bemærk at jeg har prøvet forskellige fremgangsmåder, så hvis den der er i koden på det tidspunkt jeg oprettede denne tråd ikke virker af en åbenlys grund, så husk venligst på jeg har forsøgt på mange andre måder).
- void CreateRebar(HWND hwnd)
- {
- hRebar = CreateWindowEx(0L, REBARCLASSNAME, NULL,
- WS_CHILD | WS_VISIBLE | WS_BORDER | CCS_NODIVIDER,
- 0, 0, 100, 25,
- hwnd, NULL, NULL, NULL);
-
- REBARBANDINFO bandinfo;
-
- hToolbar = CreateWindowEx(0L, TOOLBARCLASSNAME, NULL,
- WS_CHILD | WS_VISIBLE | TBSTYLE_FLAT | CCS_NODIVIDER,
- 0, 0, 0, 0,
- hwnd, NULL, NULL, NULL);
-
- // Get the size of the tool bar
- dwSize = SendMessage(hToolbar, TB_GETBUTTONSIZE, 0, 0);
-
- // Add buttons
- TBBUTTON buttons[2];
- memset(&buttons, 0, sizeof(buttons));
-
- buttons[0].fsState = TBSTATE_ENABLED;
- buttons[0].fsStyle = TBSTYLE_BUTTON;
- buttons[1].fsState = TBSTATE_ENABLED;
- buttons[1].fsStyle = TBSTYLE_BUTTON;
-
- SendMessage(hToolbar, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0);
- SendMessage(hToolbar, TB_AUTOSIZE, 0, 0);
-
- UINT uNumBtns = sizeof(buttons) / sizeof(TBBUTTON);
- SendMessage(hToolbar, TB_ADDBUTTONS, uNumBtns, (LPARAM)buttons);
-
- bandinfo.cbSize = sizeof(REBARBANDINFO);
- bandinfo.cyMinChild = LOWORD(dwSize);
- bandinfo.cx = HIWORD(dwSize);
- bandinfo.fMask = RBBIM_CHILD | RBBIM_CHILDSIZE;
- bandinfo.hwndChild = hToolbar;
-
- SendMessage(hRebar, RB_INSERTBAND, 0, (LPARAM)&bandinfo);
-
- // apply imagelist
- HIMAGELIST himl = ImageList_Create(16, 16, ILC_COLOR32, 3, 0);
- HINSTANCE hInst = GetModuleHandle(0);
- HICON hIcon;
-
- hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_PAGE));
- ImageList_AddIcon(himl, hIcon);
- DeleteObject(hIcon);
-
- hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_DISK));
- ImageList_AddIcon(himl, hIcon);
- DeleteObject(hIcon);
-
- //ImageList_AddIcon(himl, LoadIcon(hInst, MAKEINTRESOURCE(IDI_DISK)));
- SendMessage(hToolbar, TB_SETIMAGELIST, 0, (LPARAM)himl);
- }
I kan se problemet her:
http://m99.dk/editor.pngSom I kan se, bliver IDI_PAGE vist to gange, hvor IDI_DISK bliver fuldstændig ignoreret.