Создание главного меню с "нуля"

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Hawk, Romeo, Eugie

Ответить
ТВиктор
Сообщения: 5
Зарегистрирован: 14 авг 2007, 00:32

Недавно начал изучать программирование под Windows и столкнулся во с такой проблемкой, а как написать главное меню (menubar) на чистом WINAPI без использования resource.

Изображение

Если есть у кого нибудь исходник или статейка поднлитесь очень буду благодарен =)
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Использование ресурсов при создании меню (тем более с таким количеством айтемов, как указано на рисунке) - это не только общепринятая, но ещё и наиболее идеологически выверенная схема. Советую использовать именно её, иначе все строки придётся хранить прямо в коде в качестве строковых констант, что крайне неудобно. К тому же возникнут дополнительные трудности при содании акселераторов. Если всё равно есть необходимость создать меню не использую ресурсы, то копай в строну функций CreateMenu, InsertMenuItem и других. Ссылка на дукументацию есть: лучшая документация - это MSDN. Начинать следует вот с этой старницы и далее двигаться по ссылкам:

http://msdn2.microsoft.com/en-us/librar ... 85%29.aspx
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
ТВиктор
Сообщения: 5
Зарегистрирован: 14 авг 2007, 00:32

У меня ещё один вопросик не относящийся к этой теме
В чем отличие между:
int APIENTRY WinMain
и
int WINAPI WinMain

Что вообще они обозначают и для чего они ?
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

А леший его знает чем они отличаются :) Может раньше и отличались, но сейчас это одно и тоже. Я прошёлся по всем хедерам студии - везде APIENTRY лишь синоним WINAPI.

Для чего нужен WINAPI? Это вего лишь define, который включает в себе все спецификации (calling convention, far/near keyword), которые присущи для API функций данной версии Windows. Не стоит, думаю, говорить о том, что для разных версий Windows эти параметры могут отличаться, потому для увеличения переносимости кода следует писать именно WINAPI, а не far pascal, который подразумевается под этим define'ом, если у тебя Windows старше 95.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить