Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/12: Рейтинг темы: голосов - 12, средняя оценка - 4.58
23 / 23 / 8
Регистрация: 03.12.2013
Сообщений: 202

Как убрать строку меню (MenuBar) в простом WinAPI проекте

01.09.2018, 17:50. Показов 4180. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На картинке выше показано меню, которое нужно убрать.



Заранее спасибо за помощь.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.09.2018, 17:50
Ответы с готовыми решениями:

Как в листе Exel на форме в проекте убрать его меню при активизации?
Всем привет! Ребята, меня интересует такой вопрос. Как в листе Exel на форме в проекте убрать его меню при активизации и как сделать...

как убрать строку из контекстного меню
помогите пожалуйста как то раз установил прогу tuneup utilities так называемая "чистильщик компа" после её удаления не могу убрать...

Как убрать строку из меню загрузчика GRUB?
Привет! Есть еще вопрос по загрузчику. Во время загрузки появляются две дополнительные строки выбора: WinXP SP3 WinXP SP3 ...

15
Software Developer
 Аватар для fastb1t
315 / 229 / 113
Регистрация: 03.05.2017
Сообщений: 1,336
01.09.2018, 18:32
Doctor123, убрал
Миниатюры
Как убрать строку меню (MenuBar) в простом WinAPI проекте  
0
Software Developer
 Аватар для fastb1t
315 / 229 / 113
Регистрация: 03.05.2017
Сообщений: 1,336
01.09.2018, 18:41
Если есть исходники, то есть два варианта:
1 - меню может создаваться программно и устанавливаться функцией SetMenu(...) (её и всё что с ней связано можно просто стереть).
2 - меню создаётся в ресурсах программы, и указывается в поле lpszMenuName, структуры WNDCLASS/WNDCLASSEX (в этом случае нужно в lpszMenuName указывать NULL).

Если без исходников, то нужно редактировать сам бинарник.

В обеих случаях Вам нужно предоставить материал (исходник/бинарник), иначе мы все зря теряем время...
1
23 / 23 / 8
Регистрация: 03.12.2013
Сообщений: 202
01.09.2018, 20:40  [ТС]
Устанавливаю меню программно: SetMenu(hWnd, hMenu[1]);
Но хочу оставить возможность программно удалить MenuBar.
В справочнике и с помощью поиска пока не нашёл нужную функцию.
0
Software Developer
 Аватар для fastb1t
315 / 229 / 113
Регистрация: 03.05.2017
Сообщений: 1,336
01.09.2018, 21:00
Лучший ответ Сообщение было отмечено Doctor123 как решение

Решение

Doctor123, делается это так
C++
1
SetMenu(дескриптор_окна, NULL);
в описании SetMenu
Цитата Сообщение от msdn
If this parameter is NULL, the window's current menu is removed.
1
23 / 23 / 8
Регистрация: 03.12.2013
Сообщений: 202
01.09.2018, 21:15  [ТС]
СПАСИБО! Вроде промелькнуло это раньше, но ушёл рыть не в ту сторону.
Заработало.
0
2 / 2 / 0
Регистрация: 30.01.2025
Сообщений: 18
11.02.2025, 00:18
Всем привет! У меня такая же задача нужно убрать меню.
Я не разбираюсь в программировании, только на днях научился собирать проект, и что менять не понимаю, для меня он как китайская грамота.
Вот исходник - github.com/QSPFoundation/qspgui/releases

Нашел строку - SetMenu(...) и закомментировал ее как в 1 совете, но нечего не произошло, меню не ушло. Помогите понять что нужно изменить, чтобы оно пропало.

Заранее спасибо.
Миниатюры
Как убрать строку меню (MenuBar) в простом WinAPI проекте   Как убрать строку меню (MenuBar) в простом WinAPI проекте  
0
2 / 2 / 0
Регистрация: 30.01.2025
Сообщений: 18
11.02.2025, 09:41
В файле frame.cpp закомментировал эти строки -

Code
1
2
3
4
5
6
/*
menuBar->Append(m_fileMenu, wxT("-"));
menuBar->Append(m_gameMenu, wxT("-"));
menuBar->Append(m_settingsMenu, wxT("-"));
menuBar->Append(helpMenu, wxT("-"));
*/
меню пропало, но функционал походу в мести с ним, так как фон не меняется, а стоит голубой по умолчанию и все настройки упали в дефолт...

Подскажите что нужно еще сделать (а то я наугад меняю все)?

Думаю нужно каким-то образом скрыть wxT("-"), но у меня одни ошибки когда я удаляю эту строку, может есть какая-то пустая заглушка, или что с ней сделать я даже не знаю...?
0
 Аватар для Наталья8
523 / 373 / 66
Регистрация: 09.03.2016
Сообщений: 3,966
11.02.2025, 11:51
Некоторые находят удовлетворение, когда в ихнем мусоре все станут ковыряться.
Нету здесь меню.. Нету и всё...

C++
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
#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASSEXA wc;
MSG msg;
 
//Registering the Window Class
wc.cbSize        = sizeof(WNDCLASSEX);
wc.style         = 0;
wc.lpfnWndProc   = WndProc;
wc.cbClsExtra    = 0;
wc.cbWndExtra    = 0;
wc.hInstance     = hInstance;
wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName  = NULL;
wc.lpszClassName = "myWindowClass";
wc.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);
RegisterClassExA(&wc);
 
//Creating the Window 
CreateWindowExA(WS_EX_CLIENTEDGE,"myWindowClass","Simple Window", WS_VISIBLE 
      | WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT, 240, 120, NULL, NULL, hInstance, NULL);
 
//The Message Loop
while(GetMessage(&msg, NULL, 0, 0) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
 
//WndProc procedure. Application acts on messages
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProcA(hwnd, msg, wParam, lParam);
}
return 0;
}
0
2 / 2 / 0
Регистрация: 30.01.2025
Сообщений: 18
11.02.2025, 12:43
Извините, я не программист и немного запутался. Что значит меню нет и что это за код?
Его куда-то вставлять нужно или это для чего?
0
 Аватар для MallSerg
91 / 58 / 14
Регистрация: 16.11.2018
Сообщений: 274
11.02.2025, 14:14
Цитата Сообщение от Artem1703 Посмотреть сообщение
Нашел строку - SetMenu(...) и закомментировал ее как в 1 совете,
Советовали не закомментировать ее а вызвать с аргументом NULL.
0
2 / 2 / 0
Регистрация: 30.01.2025
Сообщений: 18
11.02.2025, 14:24
(её и всё что с ней связано можно просто стереть)
Закомментировать и стереть это вить одно и тоже.

Как ее вызвать с аргументом?

Это вить она? -
C++
1
void SetMenu(wxMenu* menu) { m_parentMenu = menu; }
куда тут запихнуть NULL?
0
Чугунные скороходы
 Аватар для ARRAYBOW
17 / 16 / 3
Регистрация: 25.12.2022
Сообщений: 367
11.02.2025, 15:02
Цитата Сообщение от Artem1703 Посмотреть сообщение
Как ее вызвать с аргументом?
У вас wxWidgets, а здесь тема про WinApi. И код тоже. Минимальная документация есть. Заходите на https://wiki.wxwidgets.org/ и ищите

Добавлено через 1 минуту
И тем более, то что вы закомментировали, это файл библиотеки. Оставьте файл в покое
1
 Аватар для MallSerg
91 / 58 / 14
Регистрация: 16.11.2018
Сообщений: 274
11.02.2025, 15:08
Цитата Сообщение от Artem1703 Посмотреть сообщение
Это вить она? -
Нет.
Это другая функция с таким же именем но другими параметрами.

Не важно где будет вызвана эта функция достаточно что бы эта функция применялась к необходимому окну за это отвечает первый параметр функции (HWND).
Ну и не стоит забывать за порядок вызовов т.е. сначала нужно чтобы меню было создано у окна, и только потом удалено. Если порядок вызовов будет другим то желаемый результат не будет достигнут.
1
Чугунные скороходы
 Аватар для ARRAYBOW
17 / 16 / 3
Регистрация: 25.12.2022
Сообщений: 367
11.02.2025, 15:20
Цитата Сообщение от Artem1703 Посмотреть сообщение
Я не разбираюсь в программировании, только на днях научился собирать проект, и что менять не понимаю, для меня он как китайская грамота.
И вообще, вы для игр не ту библиотеку используете. Попробуйте для начала SFML, а если научитесь, то можно переходить на OpenGL + OpenAL, Vulkan или DirectX
1
2 / 2 / 0
Регистрация: 30.01.2025
Сообщений: 18
11.02.2025, 17:53
У вас wxWidgets, а здесь тема про WinApi.
Понял, спасибо, что сказали. Думал все просто будет, всего-то хотел меню убрать и цвет окна изменить, а оказывается не всё так просто.

Ну хоть значок с названием окна получилось за 5 минут найти как сменить уже хорошо. Пойду искать как это сделать...

Добавлено через 2 часа 23 минуты
Поискал, как я понял цвет рамки окна изменить не возможно на С++, это только для WinForms под C#.
С меню такая же беда, не получиться убрать так, чтоб не задеть функционал =( печаль.
Спасибо, что помогали.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.02.2025, 17:53
Помогаю со студенческими работами здесь

Как убрать строку меню ' Файл Правка Вид ...' в Excel?
Пожалуйста!!! 1. Как убрать строку меню ' Файл Правка Вид ...' в Excel 2. Как закрыть форму при нажатии кнопки ESC

Unresolved External в простом консольном проекте
Здравствуйте. Решил написать простой консольный проект в RAD Studio 2010 (С++ Builder). ...

Как убрать синий фон в проекте?
как ни странно не нашел инфы, где убрать этот чертов синий фон .уже и скайбокс убрал и все по отключал вместе с глобальным освещением....

Как на главной странице в меню убрать класс active из меню
В меню есть ссылка с якорем для div, на главной странице. Из-за этого этот пункт меню выделяется. Вопрос простой, как на главной странице...

В простом окне создать меню
В простом окне создать меню, с помощью которого можно выбрать цвет заливки текстового окна. Пункты меню: 1. Красный цвет 2. Зеленый...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru