powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как в меню добавить картинки к определенным пунктам???
7 сообщений из 7, страница 1 из 1
Как в меню добавить картинки к определенным пунктам???
    #32236351
Hunter_eea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как в меню добавить картинки к определенным пунктам???
...
Рейтинг: 0 / 0
Как в меню добавить картинки к определенным пунктам???
    #32236441
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SetMenuItemBitmaps() или CMenu::SetMenuItemBitmaps() (это если MFC).
Замечание: bitmap, о котором там идёт речь, должно существовать во время отображения меню.

Ещё можно через owner draw.
...
Рейтинг: 0 / 0
Как в меню добавить картинки к определенным пунктам???
    #32236649
Hunter_eea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это не совсем то, так по одной картинке,
у меня есть Bitmap где нарисованы уже все кнопки(для тулбара), вот как из нее эти картинки приляпать
...
Рейтинг: 0 / 0
Как в меню добавить картинки к определенным пунктам???
    #32236742
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты же про это ничего не писал, так что это уже второй вопрос :)

У меня тоже картинки в тулбаре, я создаю упомянутые bitmap с помощью CImageList::ExtractIcon() и DrawIconEx(). Image list получаю с помощью CToolBarCtrl::GetImageList().

Всё понятно? :)) показать текст, который это делает?
...
Рейтинг: 0 / 0
Как в меню добавить картинки к определенным пунктам???
    #32236825
Hunter_eea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да если можно кусочек кода
...
Рейтинг: 0 / 0
Как в меню добавить картинки к определенным пунктам???
    #32236889
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
www.codeproject.com

зело рекомендую туда со всеми подобными вопросами, просто сборник решебников по всевозможным вопросам.
Конкретно по твоему смотри раздел MFC Menu, - 10-ки решений.
...
Рейтинг: 0 / 0
Как в меню добавить картинки к определенным пунктам???
    #32236893
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большой получился кусок... спрашивай.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
int CMainFrame::AssignMenuImages()
{
    //меню
    CMenu menu;
    menu.LoadMenu(IDM_...);

    CToolBar* pIconBar = NULL;
    //список идентификаторов тулбаров в ресурсах
    UINT aIconBarID[] =
    {
        IDT_...,
        IDT_...,
        ...
    }, nIconBars = sizeof(aIconBarID)/sizeof(UINT),nBarID;
    DWORD dwToolStyle   = WS_CHILD | CBRS_TOOLTIPS;
    DWORD dwToolExStyle = TBSTYLE_FLAT | TBSTYLE_TRANSPARENT | TBSTYLE_DROPDOWN;
    CRect rn = CRect( 0 , 0 , 0 , 0 );

    CBrush brush ((COLORREF)RGB( 255 , 255 , 255 ));
    TBBUTTON bt;
    BOOL kz;

    for(UINT nIconBar= 0 ; nIconBar<nIconBars; nIconBar++)
    {
        nBarID = aIconBarID[nIconBar];
        pIconBar = new CToolBar;
        pIconBar->CreateEx(this,dwToolExStyle,dwToolStyle,rn,nBarID);
        pIconBar->LoadToolBar(nBarID);

        CToolBarCtrl& toolBar = pIconBar->GetToolBarCtrl();
        CImageList* pIL = toolBar.GetImageList();
        if(pIL == NULL)
            continue;

        UINT nImages = pIL->GetImageCount();
        UINT nButtons = toolBar.GetButtonCount();
        for(UINT nButton =  0 ; nButton < nButtons; nButton++)
        {
            toolBar.GetButton(nButton,&bt);
            if(bt.iBitmap < nImages && bt.idCommand !=  0 )
            {
                HICON hIcon = pIL->ExtractIcon(bt.iBitmap);

                CClientDC wDC(this);

                CDC dc;
                dc.CreateCompatibleDC(&wDC);

                CBitmap* pbmp  = new CBitmap;
                pbmp ->CreateCompatibleBitmap(&wDC, 20 , 20 );

                CBitmap* pbmpOld = dc.SelectObject(pbmp);
                DrawIconEx(dc.m_hDC, 0 , 0 ,hIcon, 20 , 20 , 0 ,brush,DI_IMAGE);

                kz = menu.SetMenuItemBitmaps(bt.idCommand,MF_BYCOMMAND,pbmp,NULL);
                if(!kz)
                    delete pbmp;

                //тут надо ещё записать pbmp в список, чтобы не забыть потом delete

                dc.SelectObject(pbmpOld);

                BOOL l = DestroyIcon(hIcon);
            }
        }

        delete pIconBar;
    }

    return  0 ;
}
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как в меню добавить картинки к определенным пунктам???
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]