purebasic.info

PureBasic forum
Текущее время: Пн янв 22, 2018 5:05 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Что за функция такая UseWindow(WINDOW)
СообщениеДобавлено: Сб окт 14, 2017 7:04 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 540
Благодарил (а): 53 раз.
Поблагодарили: 15 раз.
Пункты репутации: 5
Это из старых примеров, компилятор ругается на неё.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Что за функция такая UseWindow(WINDOW)
СообщениеДобавлено: Сб окт 14, 2017 10:35 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11080
Благодарил (а): 4 раз.
Поблагодарили: 386 раз.
Без кода сложно сказать чем ее можно заменить.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Что за функция такая UseWindow(WINDOW)
СообщениеДобавлено: Сб окт 14, 2017 11:54 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6224
Благодарил (а): 16 раз.
Поблагодарили: 173 раз.
Пункты репутации: 48
newJS писал(а):
Это из старых примеров, компилятор ругается на неё.

Рудимент. Выпилить из современного кода без замены.
В современном диалекте явно указывается нужное окно непосредственно внутри вызова процедуры.

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Что за функция такая UseWindow(WINDOW)
СообщениеДобавлено: Вс окт 15, 2017 8:17 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 540
Благодарил (а): 53 раз.
Поблагодарили: 15 раз.
Пункты репутации: 5
Код:
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
; English forum: http://purebasic.myforums.net/viewtopic.php?t=6719
; Author: eddy (updated for PB3.93 by ts-soft)
; Date: 25. June 2003
 
;- Procedure-Code
Global WINDOW_Requester
; /////////////////////
; Set position
; /////////////////////
 
Procedure SetRequesterPosition(x,y)
  ;create the invisible window which defines the position of requester
  If WINDOW_Requester = 0
;  текст не там
;WINDOW_Requester=OpenWindow(#PB_Any,x,y,0,0,#PB_Window_BorderLess|#PB_Window_Invisible,"Temp Hidden Window",WindowID())
 
WINDOW_Requester=OpenWindow(#PB_Any,x,y,0,0,"",#PB_Window_BorderLess|#PB_Window_Invisible,WindowID(0))
 
 
  EndIf
 
  If WindowID(WINDOW_Requester)        
    UseWindow(WINDOW_Requester); сюда ругается
    MoveWindow(x,y)    
  EndIf
EndProcedure  
 
 
;- Example-Code
GetCursorPos_(@pt.POINT)
SetRequesterPosition(pt\x,pt\y) ; здесь исправить
c = ColorRequester()
 



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Что за функция такая UseWindow(WINDOW)
СообщениеДобавлено: Вс окт 15, 2017 9:57 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6224
Благодарил (а): 16 раз.
Поблагодарили: 173 раз.
Пункты репутации: 48
Ну всё как я и сказал. Вот как это выглядит в современном виде. ResizeWindow уже содержит явное указание на окно.

Код:
1
2
3
4
 
  If  IsWindow(WINDOW_Requester)
       ResizeWindow(WINDOW_Requester, x, y, #PB_Ignore, #PB_Ignore)
  EndIf


_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Что за функция такая UseWindow(WINDOW)
СообщениеДобавлено: Вс окт 15, 2017 10:03 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6224
Благодарил (а): 16 раз.
Поблагодарили: 173 раз.
Пункты репутации: 48
И по крайней мере в у меня в W7 с невидимым окном не работает код.
Вызов ColorRequester() независимо от курсора в позиции 0,0
а вот так работает:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
;- Procedure-Code
Global WINDOW_Requester
; /////////////////////
; Set position
; /////////////////////
 
Procedure SetRequesterPosition(x,y)
  If WINDOW_Requester = 0
      WINDOW_Requester=OpenWindow(#PB_Any,x,y,0,0,"",#PB_Window_BorderLess)
 EndIf
 If  IsWindow(WINDOW_Requester)
       ResizeWindow(WINDOW_Requester, x, y, #PB_Ignore, #PB_Ignore)
 EndIf
EndProcedure  
 
;- Example-Code
GetCursorPos_(@pt.POINT)
 
SetRequesterPosition(pt\x,pt\y)
c = ColorRequester()


_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Что за функция такая UseWindow(WINDOW)
СообщениеДобавлено: Вт окт 17, 2017 6:19 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 540
Благодарил (а): 53 раз.
Поблагодарили: 15 раз.
Пункты репутации: 5
всё хорошо, одно плохо.
открываем нужный Requester по указанным координатам, не из POINT, а по своим
закрываем
перемещаем окно программы, развернуть, свернуть, переместить...
ещё раз открываем Requester и он открывается на предыдущем месте несмотря на заданные новые координаты, вспомагательное окошко перемещается в новое место, Requester не хочет, его координаты фиксируются до закрытия программы
где винда прячет его координаты?

весь сыр-бор, подсунуть Requester под кнопку его открывающею


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Что за функция такая UseWindow(WINDOW)
СообщениеДобавлено: Вт окт 17, 2017 10:35 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6224
Благодарил (а): 16 раз.
Поблагодарили: 173 раз.
Пункты репутации: 48
newJS писал(а):
всё хорошо, одно плохо.
где винда прячет его координаты?

Тут поможет API - стандартное диалоговое окно выбора цвета.
Его надо инициализировать каждый раз по новой при нажатии на кнопку, тогда и координаты будут всегда новые.
Код:
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
52
53
54
55
56
57
58
59
60
61
62
 
;{ Windows
Enumeration
  #Window_0
EndEnumeration
;}
;{ Gadgets
Enumeration
  #Button_0
EndEnumeration
;}
Structure COLORREF
  RGB.l[16]
EndStructure
Define COLORREF.COLORREF
Define CHOOSECOLOR.CHOOSECOLOR
;}
Procedure OpenWindow_Window_0()
  If OpenWindow(#Window_0, 733, 38, 400, 400, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
          ButtonGadget(#Button_0, 225, 275, 155, 40, "Color")
     EndIf
EndProcedure
 
OpenWindow_Window_0()
 
;{- Event loop
Repeat
  Event = WaitWindowEvent()
  Select Event
    ; ///////////////////
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      If EventGadget = #Button_0
               ; Ecли каждый раз инициализировать заново  
          CHOOSECOLOR\LStructSize = SizeOf(CHOOSECOLOR)
          CHOOSECOLOR\hwndOwner = WindowID(#Window_0)    ; - вот тут привязка к окну!!!
          CHOOSECOLOR\rgbResult = 0 ; nothing selected
          CHOOSECOLOR\lpCustColors = COLORREF
          CHOOSECOLOR\flags = #CC_ANYCOLOR | #CC_FULLOPEN | #CC_RGBINIT
                     
          If ChooseColor_(@CHOOSECOLOR)
            SelectedClipResult.s = Str(CHOOSECOLOR\rgbResult)
            SetClipboardText(SelectedClipResult.s)
            Debug "Color Selected: " + CHOOSECOLOR\rgbResult
              Else
            Debug "No color was selected."
          EndIf
       
      EndIf
    ; ////////////////////////
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Window_0
        CloseWindow(#Window_0)
        Break
      EndIf
  EndSelect
ForEver
;
;}
 


_________________
read-only


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB