Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Не хочу меню


Автор: Phantom 27.8.2003, 17:59
Как избавиться от меню т.е. убрать насовсем?

Автор: Baa 27.8.2003, 19:33
Какое меню? Какой тип приложения? Какая среда разработки? Мы ж это... не провидцы...

Автор: Baa 27.8.2003, 20:13
Попробую догадаться... Наверное системное меню у программы (по заголовку и значку сверху)
Тогда это делается довольно просто.
У меня приложение на основе диалога. Я просто выставил в среде разработки свойство диалога System Menu в False
Или же можно отредактировать ресурс, в котором храниться диалог и там найти строку с выставлением стиля, у меня она после редактирования стала такой:
Код

DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION

Исчезла WS_SYSTEMMENU
Если я все же не угадал, то пиши - уберем и другие меню wink.gif

Автор: Phantom 27.8.2003, 20:17
Это было близко smile.gif
Только вредное меню - то которое File->New, Save, Open вклучая Edit и Help, ваще убрать бы.
И не в диалоге а в View, в котором оно по умолчанию

Автор: mr.DUDA 27.8.2003, 21:13
Хех, да это же проще простого - убрать меню:
Код

// в WinAPI:
SetMenu(hWnd, NULL);   //  где hWnd - дескриптор окна

// в MFC:
SetMenu(NULL);  // в любой функции окна (например, в OnCreate)

Автор: Peter 2.9.2003, 08:44
Ресурсы почистить - тоже можно.

Автор: Baa 2.9.2003, 09:00
Peter, одних ресурсов будет мало, потому как программа будет пытаться выставить несуществующее меню, а сие её точно выбросит.

Автор: Peter 2.9.2003, 09:46
Нет, это я понимаю. Но когда неопытный человек удалит ресурсы, ему компилятор выдаст руганку, укажет, что еще надо удалить smile.gif

Автор: Baa 2.9.2003, 10:14
Peter, скорее всего неопытного это еще сильней запутает.

Автор: mr.DUDA 2.9.2003, 10:21
Цитата
Нет, это я понимаю. Но когда неопытный человек удалит ресурсы, ему компилятор выдаст руганку, укажет, что еще надо удалить


Не факт. Если скажем в VC++ кильнуть меню IDR_MAINFRAME, то останется еще иконка IDR_MAINFRAME, одноименный тулбар, таблицы акселераторов и строк. Получается, идентификатор ресурса останется, прога скомпилится, а работать не будет. Думаю, Builder'у тож плохо станет...

ЗЫ, Неужели так сложно поставить SetMenu(NULL) ? confused.gif

ЗЫ(2), Или в билдере не работает ? mad.gif

Автор: Peter 3.9.2003, 13:22
На самом прямом (без наворотов) сишном компиляторе: Dev-C++. На всякие Вижи и Билдеры денег нема.

Автор: mr.DUDA 3.9.2003, 13:27
Ну так что, что Dev-C... Ты ж используешь WinAPI, вот и вставь SetMenu куда-нибудь, где главное окно приложения уже создано, и известен (или можно получить) его дескриптор HWND. Например:
Код
HWND  hMyWindow = ...
SetMenu(hMyWindow, NULL);

Автор: RAN 3.9.2003, 13:52
Цитата
На всякие Вижи и Билдеры денег нема.
smile.gif

Автор: mr.DUDA 3.9.2003, 22:22
Если есть бабки на Инет, значит хватит и на CD с VC6/Builder.

Автор: Nastya 4.9.2003, 08:49
Цитата
Если есть бабки на Инет, значит хватит и на CD с VC6/Builder.


VS.NET 2003 and MSDN Universal from CodeProject Prices start at $1,950 for MSDN (US), $899 for Visual Studio .NET 2003.


Извеняюсь за офтопик

Автор: mr.DUDA 4.9.2003, 09:48
То-ж самое стоит от силы $6-8 за все CD
"старый добрый" VisualC++ 6.0 на одном диске можно купить за $2

Автор: Voker57 6.9.2003, 16:51
Цитата
VS.NET 2003 and MSDN Universal from CodeProject Prices start at $1,950 for MSDN (US), $899 for Visual Studio .NET 2003.

Фирменное конечно!

Автор: Peter 8.9.2003, 16:18
Цитата(Nastya @ 4.9.2003, 08:49)
VS.NET 2003 and MSDN Universal from CodeProject Prices start at $1,950 for MSDN (US), $899 for Visual Studio .NET 2003.

Да, Nastya, именно это я и имею в виду.
А воровством чужой интеллектуальной собственности не все занимаются.

Автор: mr.DUDA 8.9.2003, 16:20
Оффтопик пошел.
Меню-то получилось убрать ?

Автор: Peter 11.9.2003, 14:21
Цитата(mr @ 3.9.2003, 13:27)
Ну так что, что Dev-C... Ты ж используешь WinAPI, вот и вставь SetMenu куда-нибудь, где главное окно приложения уже создано, и известен (или можно получить) его дескриптор HWND. Например:
Код
HWND  hMyWindow = ...
SetMenu(hMyWindow, NULL);

Тот, кто пользуется Dev-C++, уже не думает, как ему убрать меню, а думает, как добавить. Если что, то в этой среде есть встроенный шаблон оконного приложения без меню. Очевидно, там SetMenu(...) какое надо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)