PureBasic - форум

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

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


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Все о ResizeGadget


Все о ResizeGadget

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

1

Часто у меня возникают вопросы по изменению размеров гаджетов в тех или иных ситуациях. Следующий пример я нашел в код архиве и в нем при растяжении или уменьшении окна меняются размеры кнопки. Я так понял тут какой - то особый код с использованием Callback, что намного сложней. Может быть можно как нибудь по другому данную задачу решить?

Код:
Procedure WinCallback(Win,Msg,wParam,lParam) 
  Select Msg 
    Case #WM_SIZE 
      ResizeGadget(1,5,5,WindowWidth(0)-10,WindowHeight(0)-10) 
  EndSelect 
  ProcedureReturn #PB_ProcessPureBasicEvents 
EndProcedure 

OpenWindow(0,0,0,200,30,"Test",#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_SizeGadget) 
  
  ButtonGadget(1,5,5,190,20,"Button") 
  
SetWindowCallback(@WinCallback()) 

Repeat 
Until WaitWindowEvent() = #PB_Event_CloseWindow

0

2

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

Может быть можно как нибудь по другому данную задачу решить?

Можно в стандартном обработчике событий отслеживать событие #PB_Event_SizeWindow

Код:
OpenWindow(0,0,0,200,30,"Test",#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_SizeGadget) 
SmartWindowRefresh(0, 1) ; Это для уменьшения мерцаний окна, при изменении его размеров.
ButtonGadget(1,5,5,190,20,"Button") 

Repeat 
  Event=WaitWindowEvent()
  
  If Event=#PB_Event_SizeWindow
    ResizeGadget(1,5,5,WindowWidth(0)-10,WindowHeight(0)-10) 
  EndIf
  
Until Event=#PB_Event_CloseWindow

0

3

Последний вариант мне больше понравился. Но я вот не пойму, зачем необходимо вычитать 10  здесь WindowWidth(0)-10 и здесьWindowHeight(0)-10, если можно просто использовать #PB_Ignore

0

4

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

зачем необходимо вычитать 10  здесь WindowWidth(0)-10 и здесьWindowHeight(0)-10

Чтобы кнопка не выходила за пределы окна.

В качестве второго и третьего аргумента, действительно можно использовать #PB_Ignore

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Все о ResizeGadget