Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / [WinAPI] Создание динамического меню.

[WinAPI] Создание динамического меню.

Страницы: 1 2 Следующая »
PanurПостоялецwww11 авг. 20182:52#0
Помогите пожалуйста с примерами кода.

Нужно сделать меню как на скриншоте:

+ Показать

Правка: 13 авг. 2018 3:13

ZabПостоялецwww11 авг. 20183:07#1
В чем проблема то? Там все вызовы очень простые.
CreateMenu - создает основное меню.
CreatePopupMenu - создает выпадающие сегменты.
AppendMenu - добавляет пункты.
SetMenu - зафигачивает всю созданную конструкцию в окно.
innuendoПостоялецwww11 авг. 20188:23#2
Panur
> Нужно сделать меню как на скриншоте:

CryEngine?

PanurПостоялецwww11 авг. 201813:26#3
innuendo

скриншот меню редакторов игр: Crysis 2 и Rage.

внешне редакторы практически одинаковые.

оба редактора написанны на winapi.

* код диалоговых окон, можно посмотреть - ResHacker:  http://www.angusj.com/resourcehacker/

* информацию об окнах можно посмотреть инструментами из этого списка: http://www.manhunter.ru/underground/1035_programmi_dlya_raboti_s_… lozheniy.html

p.s.

вот решил попробовать состряпать своё, на их примере.

только ниразу такими вещами не занимался, отсюда и вопрос.

ХаусПостоялецwww11 авг. 201814:49#4
Panur

В Delphi это очень просто делается.

KolyaLПостоялецwww11 авг. 201815:16#5
Panur
возьми QT и не трать зря время на вин апи
PanurПостоялецwww11 авг. 201816:22#6
короче, то что на скриншоте, сделанно с помощью библиотеки - ToolkitPro: http://www.codejock.com/products/toolkitpro/?2yn6s14z=zsp

* это вроде как обертка над MFC.

  • всего 6000 бакинских рублей за лицензию.
  • Правка: 13 авг. 2018 3:12

    ZabПостоялецwww11 авг. 201817:39#7
    Ты спрашивал про WinAPI, вроде как... При чем тут всякие обертки? На чистом WinAPI с меню все просто.
    ХаусПостоялецwww11 авг. 201818:54#8
    KolyaL
    > возьми QT и не трать зря время на вин апи

    +2

    foxesПостоялецwww11 авг. 201823:15#9
    KolyaL
    > возьми QT и не трать зря время на вин апи
    Да, трать время не на api с двумя командами, а на установку qt. И пользователям это передай.
    Хаус
    > +2
    +2 метра к однокилобайтному приложению, правильно я понимаю?

    Правка: 11 авг. 2018 23:18

    PanurПостоялецwww12 авг. 20181:49#10
    пока всё очень печально и выглядет очень уныло:
    + Показать

    * с Qt конечно веселее и в 100500 раз быстрее.

    p.s.

    еще я не понимаю как редактировать свойства меню: размер шрифта, высоту меню и т.д.

    как измень цвет того места подменю, где ставятся галочки ?

    PanurПостоялецwww12 авг. 20183:01#11
    еще такой вопрос: как изменить рамку окна ?

    хочется угловатую ( как на первом скрине ), а у меня округлая:

    + Показать
    foxesПостоялецwww12 авг. 20183:08#12
    Panur
    > еще я не понимаю как редактировать свойства меню: размер шрифта, высоту меню и
    > т.д.
    Вообще стандартное меню рисуется стандартным обработчиком и там все настройки стиля берутся из системы. Но есть варианты используя разные подходы.
    HFONT hFont = CreateFont (10, 0, 0, 0, 0, 0, 0, 0, RUSSIAN_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, L"Tahoma");
    SendMessage (hMenu, WM_SETFONT, (WPARAM)hFont, (LPARAM)TRUE);

    или используя MF_OWNERDRAW обрабатывать paint самостоятельно.

    Panur
    > еще такой вопрос: как изменить рамку окна ?
    Это задается на этапе создания окна флагами стиля, также можно его полностью рисовать самостоятельно, перехватывая и обрабатывая соответственные события. Также насколько я помню можно задать шрифт меню указав соответствующий шрифт при создании окна - это будет применено ко всем gui элементам, но это не точно.

    http://www.tdoc.ru/c/programming/win32/win32-menu-page22.html

    Правка: 12 авг. 2018 3:24

    PanurПостоялецwww13 авг. 20183:24#13
    вот и угловатые рамки окон получились ( прямо как у крайтеков xD ):
    + Показать
    AsaqПользовательwww13 авг. 20183:59#14
    Panur
    На скриншоте #11 вокруг меню рамка, WinAPI не позволяет просто взять и рисовать в этой области.
    Если задача создания меню второстепенная, используй готовые компоненты. Иначе правильнее написать свои меню, а не красить системные.
    Какой ЯП используешь ?
    Страницы: 1 2 Следующая »

    / Форум / Программирование игр / Общее

    2001—2018 © GameDev.ru — Разработка игр