Как в winapi убрать кнопки "справка" и "файл"?

97
11 февраля 2022, 14:00

Даже с стилем WS_POPUP остаются эти мерзкие кнопки и заголовок с названием окна, мне нужно и то и другое убрать(желательно без использования WS_POPUP)

Окно я сейчас создаю так:

   HWND hWnd = CreateWindowW(szWindowClass, (LPCWSTR)"MyGameComplete",
WS_OVERLAPPEDWINDOW ^ WS_THICKFRAME^WS_SYSMENU,
          CW_USEDEFAULT, 0, 1280, 720, nullptr, nullptr, hInstance, nullptr);

вот как окно выглядит сейчас(цветное это мои кнопки) https://imgur.com/LiLBS0D

Answer 1

Для начала, как я вам уже говорил, это не кнопки у окна, а меню, вы его убрали, теперь что бы убрать рамку у окна, убираем стили у окна после его создания:

// Код который создает окно
::DWORD styles = ::GetWindowLongW(hwnd, GWL_STYLE);
styles &= ~(WS_CAPTION | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU);
styles = ::SetWindowLongW(hwnd, GWL_STYLE, styles);
// Здесь уже начинаем обрабатывать оконные сообщения

Получаем окно без рамки:

P.S. Если вы не смотрели на значение макроса WS_OVERLAPPED оно равно 0x00000000L, что аналогично NULL.

WS_OVERLAPPED == WS_TILED : Окно является перекрывающимся окном. Перекрывающее окно имеет строку заголовка и границу. То же, что и стиль WS_OVERLAPPED.

READ ALSO
C++ DirectX: С чего начать?

C++ DirectX: С чего начать?

Недавно появилось сильное желание погрузится в изучение DirectX, по итогу этого изучения хотелось бы написать какую-нибудь простенькую игрушкуПроблема...

78
Указатели при работе с файлами. Проблема с объектами пользовательского класса

Указатели при работе с файлами. Проблема с объектами пользовательского класса

По этому коду я уже задавал вопросВозникли новые ошибки

104
LoadLibrary бросает исключение

LoadLibrary бросает исключение

Пишу свойdll файл, при импорте функций из библиотеки функция LoadLibrary выкидывает исключение о нарушении прав доступа при чтении

71
Как задать свой путь к dll-файлу?

Как задать свой путь к dll-файлу?

Программа зависит от двух dll-ок, и чтобы не пихать все вместе, я хочу положить их в папку dlls, напримерЧто нужно сделать, чтобы программа работала...

99