PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Как отключить у окна выпадающее системное меню


Как отключить у окна выпадающее системное меню

Сообщений 1 страница 10 из 10

1

Привет,
подскажите, пож, как можно у окна, созданного командой OpenWindow
отключить   выпадающее системное меню с Restore, Move, Size, minimize и т.д?
Т.е. если ткнуть мышкой в левый верхний угол, вот эта менюшка вылезает. А я там ничего не хочу видеть за исключением титла окна и значков свернуть/закрыть.

А еще возникла интересная проблема, когда вдруг перестает работать фнкция WaitWindowEvent(), на ней моя программа может зависнуть. Происходит такое часто, но не всегда. Программа играет музыку, в окне есть таймеры времени, вообщем, иногда все хорошо работает. А иногда нет.  Код приводить не буду, потому что умышленно эмулировать ситуацию не получается, так только происходит внутри моей программы, а там все плохо)). Но методом научного тыка выяснил, что жизнь в окне замирает именно когда программа спотыкается о WaitWindowEvent(), а реакция есть только на клавиши стрелок. При их нажатии выскакивает системная менюшка окна(от которой я хочу избавиться) и это все, что работает в окне. Однако стоит мышкой ткнуть по окну, все оживает как ни в чем не бывало и продолжает работать.

Отредактировано Goga (06.05.2022 14:41:20)

0

2

Код:
If OpenWindow(0, 0, 0, 220, 100, "Пример...",  #PB_Window_ScreenCentered)
	ButtonGadget (1, 190, 0, 30, 30, "X")

	Repeat
    Select WaitWindowEvent()
    	Case #PB_Event_Gadget
        Select EventGadget()
        	Case 1
            CloseWindow(0)
            End
        EndSelect
    	Case #PB_Event_CloseWindow
        CloseWindow(0)
        End
    EndSelect
	ForEver
EndIf

Ещё #PB_Window_Tool можно использовать.

Другие варианты видимо не подходят, попытка удалить меню просто очищает от левых пунктов, но я и предполагал, что системное меню не разрушить оно одно на все окна.

Код:
hMenu = GetSystemMenu_(WindowID(0), 0)
DestroyMenu_(hMenu)

Попытка уменьшить высоту пунктов до 0 не избавляет от существования меню, только лишь его не будет видно, так что даже не пробовал, там ещё структуру делать надо.
Может есть какое то событие показа меню для Callback и просто там сделать закрытие... По крайней мере попробовал WM_MENUSELECT, при нажатии вызова системного меню сработало событие (смотрю свое пример на AutoIt3). Можно попробовать на любое событие WM_MENUSELECT высылать нажатие клавиши "Esc".

Отредактировано AZJIO (06.05.2022 20:27:32)

0

3

Спасибо. что постарались помочь. Значок сворачивания и закрытия окна нужны, ибо не солидно. Однако, выяснил, что  WaitWindowEvent() перестает зависать, когда системное меню окна отключено. Видимо, какая-то глубинная ошибка толи в PB, толи в самой ОС есть. Ладно, попробую в папе-форуме спросить.
Вот сейчас обратил внимание, что в окне окна телеграмма именно так, как я и хочу- значки справа есть , а злобного меню окна нет.

0

4

Goga написал(а):

что в окне окна телеграмма именно так

окно телеграмма безрамочное!
Всё остальное, что похоже на стандартные кнопки и прочее нарисовано самостоятельно.
И в настройках есть выбор использовать системную рамку окна или свою.

p.s. Павлик не мучается и вам не рекомендует )))

Отредактировано useful (08.05.2022 05:51:13)

0

5

а чем оно помешало?   или тебе клики по заголовку нужны?
вещь бесполезная, непонятно зачем нужная, но вроде не мешает

0

6

useful написал(а):

окно телеграмма безрамочное!
Всё остальное, что похоже на стандартные кнопки и прочее нарисовано самостоятельно.
И в настройках есть выбор использовать системную рамку окна или свою.

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

newJS написал(а):

а чем оно помешало?   или тебе клики по заголовку нужны?

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

===
Эх, на папа-форуме тоже все оказалось тщетно.

Отредактировано Goga (08.05.2022 09:28:35)

0

7

Goga написал(а):

как грамотно нарисовать

Я не очень понимаю, причём тут грамотно.
Окно без рамки, канвас прижатый к верху окна, рисуй на нём что хочешь и отслеживай сам перемещения мыши по областям отведённым под активные действия(кнопки)
т.е. небольшая но таки кучка дополнительной работы.
Это как в современном вебе который очень похож на расцвет dos-графики. Каждый лепил как считал "ГРАМОТНО"

Отредактировано useful (08.05.2022 17:45:09)

0

8

Goga написал(а):

Эх, на папа-форуме тоже все оказалось тщетно

Ожидаемо. Грамотно это найти причину. Отключать куски кода, нажимать меню и смотреть на каком участке отключенного кода пропадёт сбой. Есть ли в цикле опроса событий левые действия?

0

9

useful написал(а):

Окно без рамки, канвас прижатый к верху окна, рисуй на нём что хочешь и отслеживай сам перемещения мыши по областям отведённым под активные действия(кнопки)

я спросил, когда писал ответ, потом уж, уже отбежав от компа и сам сообразил, что можно тупо все нарисовать. Короче, так и придется делать. Хотя жаль, что отключение этой штуки не предусмотрено простыми методами. Сейчас уже обратил внимание, что почти везде нет этой штуки. Т.е. отключение этого безобразия весьма востребовано.

AZJIO написал(а):

Ожидаемо. Грамотно это найти причину. Отключать куски кода, нажимать меню и смотреть на каком участке отключенного кода пропадёт сбой. Есть ли в цикле опроса событий левые действия?

Много работы потребуется, много кода, проще выключить бар и нарисовать вместо него все, что нужно. Тем более все остальное работает нормально.

Отредактировано Goga (09.05.2022 08:21:29)

0

10

Goga написал(а):

Т.е. отключение этого безобразия весьма востребовано.

Это безобразие, выпускать программы под ту или иную систему игнорирующие принципы этой системы.
А программы без системных рамок это веб приложения маскирующиеся под приложения системы.
https://habr.com/ru/company/oleg-bunin/blog/319888/

p.s. https://ru.webix.com/?_gl=1*d4guqm*_ga* … A4MDkxNi4w
Кстати на англоязычном форуме обсуждалось не раз и примеры есть.

p.p.s. И стоит эта красота сущие копейки начиная с  $848 :cool:

Отредактировано useful (09.05.2022 10:26:04)

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Как отключить у окна выпадающее системное меню