purebasic.info

PureBasic forum
Текущее время: Ср апр 25, 2018 1:44 pm

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




Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: как получить радителя в линуксе
СообщениеДобавлено: Сб фев 22, 2014 8:44 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вс дек 09, 2012 9:02 pm
Сообщений: 771
Откуда: Дагестан
Благодарил (а): 0 раз.
Поблагодарили: 11 раз.
Пункты репутации: 0
На подобие этого (для виндовс)
Код:
1
GetProp_(GetParent_(GadgetID(Gadget)),"PB_WindowID")-1



Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс фев 23, 2014 12:38 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вс дек 09, 2012 9:02 pm
Сообщений: 771
Откуда: Дагестан
Благодарил (а): 0 раз.
Поблагодарили: 11 раз.
Пункты репутации: 0
Вот нашел кое что
Код:
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
    ;:==========================================
    ;:- GetParent(Gadget)
    ;:- Author          : RASHAD
    ;:- Date            : 10 15, 2013
    ;:- Compiler        : PureBasic 5.1x - 5.20 LTS
    ;:- Target OS       : Cross Platform (Should be)
    ;:==========================================
 
    Global Dim Gad(1,0)
    Global Dim Wind(0)
    Global Countw,Countg,Parent,Win ,Obj$,Run
 
   
  CompilerIf #PB_Compiler_OS=#PB_OS_Windows
    Import ""
      PB_Object_EnumerateAll(iD,hWnd,vData)
      PB_Object_Count(*obj)
      PB_Gadget_Objects.i
      PB_Window_Objects.i
    EndImport
 
    Procedure PB_Object_Window_CallBack(iD,hWnd,vData)
     wind(Countw) = id
      Countw+1
      ProcedureReturn 1
    EndProcedure
 
    Procedure PB_Object_Gadget_CallBack(iD,hWnd,vData)
      Gad(0,Countg) = id
      Gad(1,Countg) = GadgetType(id)
      Countg+1
      ProcedureReturn 1
    EndProcedure
 
  CompilerElse
    ImportC ""
      PB_Object_EnumerateAll(iD,hWnd,vData)
      PB_Object_Count(*obj)
      PB_Gadget_Objects.i
      PB_Window_Objects.i
    EndImport
 
    ProcedureC PB_Object_Window_CallBack(iD,hWnd,vData)
    wind(Countw) = id
      Countw+1
      ProcedureReturn 1
    EndProcedure
 
    ProcedureC PB_Object_Gadget_CallBack(iD,hWnd,vData)
      Gad(0,Countg) = id
      Gad(1,Countg) = GadgetType(id)
      Countg+1
      ProcedureReturn 1
    EndProcedure
  CompilerEndIf
 
 
    Procedure GetParent(Gadget)
      If Run = 0    
         Run + 1
         wc = PB_Object_Count(PB_Window_Objects)
         gc = PB_Object_Count(PB_Gadget_Objects)
         ReDim Wind(wc)
         ReDim Gad(1,gc)
         PB_Object_EnumerateAll(PB_Window_Objects,@PB_Object_Window_CallBack(),0)
         PB_Object_EnumerateAll(PB_Gadget_Objects,@PB_Object_Gadget_CallBack(),0)
      EndIf
      For w = 0 To Countw - 1
          iw = Wind(w)
          X1 = GadgetX(Gadget,#PB_Gadget_ScreenCoordinate)
          ResizeWindow(iw,WindowX(iw)+10,#PB_Ignore, #PB_Ignore, #PB_Ignore)
          X2 = GadgetX(Gadget,#PB_Gadget_ScreenCoordinate)
          ResizeWindow(iw,WindowX(iw)-10,#PB_Ignore, #PB_Ignore, #PB_Ignore)
          If X1 <> X2
              For g = 0 To Countg - 1
                  If Gad(1,g) = 11 Or Gad(1,g) = 16 Or Gad(1,g) = 28
                     ig = Gad(0,g)
                     X1 = GadgetX(Gadget,#PB_Gadget_WindowCoordinate)
                     ResizeGadget(ig,GadgetX(ig)+10,#PB_Ignore, #PB_Ignore, #PB_Ignore)
                     X2 = GadgetX(Gadget,#PB_Gadget_WindowCoordinate)
                     ResizeGadget(ig,GadgetX(ig)-10,#PB_Ignore, #PB_Ignore, #PB_Ignore)
                     If X1 <> X2
                        Obj$ = "Gadget"
                        Parent = ig
                        Break        
                     EndIf
                  Else
                      Obj$ = "Window"
                      Parent = iw
                  EndIf
               Next
          EndIf
      Next
    EndProcedure
 
    win1 = OpenWindow(#PB_Any,0,0,400,300,"Test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered| #PB_Window_SizeGadget)
 
    PanelGadget     (0, 8, 8, 306, 203)
      AddGadgetItem (0, -1, "Panel 1")
        PanelGadget (1, 5, 5, 290, 166)
          AddGadgetItem(1, -1, "Sub-Panel 1")
          AddGadgetItem(1, -1, "Sub-Panel 2")
          AddGadgetItem(1, -1, "Sub-Panel 3")
        CloseGadgetList()
      AddGadgetItem (0, -1,"Panel 2")
        ButtonGadget(2, 10, 15, 80, 24,"Button 1")
        ButtonGadget(3, 95, 15, 80, 24,"Button 2")
    CloseGadgetList()
 
    ContainerGadget(5,10,220,62,22,#PB_Container_Flat )
        ButtonGadget(6,0,0,60,20,"Test")
    CloseGadgetList()
 
    ButtonGadget(8,10,250,60,20,"Run Test")
 
    OpenWindow(1, 200, 200, 400, 300, "Window 1", #PB_Window_SystemMenu)
    ButtonGadget(10, 10, 10, 80, 20, "Button 1")
 
    OpenWindow(2, 700, 200, 400, 300, "Window 2", #PB_Window_SystemMenu)
    ButtonGadget(20, 10, 10, 80, 20, "Button 2")
 
    UseGadgetList(WindowID(1))
    ButtonGadget(30, 10, 30, 80, 20, "Button 3")
 
    GetParent(2)
    Debug "Parent of Gadget 2  is : "+ Obj$ + " : "+Str(Parent)
    Debug ""
 
    GetParent(6)
    Debug "Parent of Gadget 6  is : "+ Obj$ + " : "+Str(Parent)
    Debug""
 
    GetParent(8)
    Debug "Parent of Gadget 8  is : "+ Obj$ + " : "+Str(Parent)
    Debug""
 
    GetParent(10)
    Debug "Parent of Gadget 10  is : "+ Obj$ + " : "+Str(Parent)
    Debug ""
 
    GetParent(20)
    Debug "Parent of Gadget 20  is : "+ Obj$ + " : "+Str(Parent)
    Debug ""
 
    GetParent(30)
    Debug "Parent of Gadget 30  is : "+ Obj$ + " : "+Str(Parent)
 
 
    Repeat
      Select WaitWindowEvent()
         
          Case #PB_Event_CloseWindow
                Quit = 1    
               
      EndSelect
 
    Until Quit = 1
    End
 



Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс фев 23, 2014 9:41 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
Нашёл вот эту функцию:
Код:
1
gtk_widget_get_parent_window_(widget)


_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс фев 23, 2014 3:51 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вс дек 09, 2012 9:02 pm
Сообщений: 771
Откуда: Дагестан
Благодарил (а): 0 раз.
Поблагодарили: 11 раз.
Пункты репутации: 0
Как нашел и главное где? Очень надо, научите меня искать:-(


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс фев 23, 2014 4:16 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вт апр 26, 2011 8:18 pm
Сообщений: 263
Откуда: Волгоград
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
mestnyi писал(а):
научите меня искать

http://bit.ly/1bYwJ23
Как-то так.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс фев 23, 2014 5:40 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
mestnyi писал(а):
Как нашел и главное где? Очень надо, научите меня искать:-(

Вот так: http://bit.ly/1h1gVel. И открываешь страницы, там находишь

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс фев 23, 2014 6:52 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вс дек 09, 2012 9:02 pm
Сообщений: 771
Откуда: Дагестан
Благодарил (а): 0 раз.
Поблагодарили: 11 раз.
Пункты репутации: 0
Код:
1
2
3
*widget.GTKWidget=GadgetID(2)
    Debug *widget\parent
   

вот так что то получаю но как это на номер пурика переводит не знаю.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс фев 23, 2014 9:23 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вт апр 26, 2011 8:18 pm
Сообщений: 263
Откуда: Волгоград
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
В лине я не спец, но логика подсказывает вот такое вот:
Код:
1
2
3
4
 
widget=GadgetID(2)
Debug gtk_widget_get_parent_window_(widget)
 



Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс фев 23, 2014 10:01 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
Да не, этот код возвращает хендл (hwnd). А ему нужно получить номер (#Window)

Местный, надо искать аналог GetProp_() для линя

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн фев 24, 2014 6:52 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вс дек 09, 2012 9:02 pm
Сообщений: 771
Откуда: Дагестан
Благодарил (а): 0 раз.
Поблагодарили: 11 раз.
Пункты репутации: 0
Цитата:
Местный, надо искать аналог GetProp_() для линя
это я знаю но не нахожу, нужные запросы не умею делать.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн фев 24, 2014 7:01 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
Нашел это:
Код:
1
gtk.Widget.get_data(widget, "prefixes")


Но как это на пурик перевести, хз. Это C++

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн фев 24, 2014 7:56 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт дек 17, 2009 4:49 pm
Сообщений: 1230
Откуда: г. Ангарск
Благодарил (а): 2 раз.
Поблагодарили: 15 раз.
Пункты репутации: 10
mestnyi писал(а):
На подобие этого

Что это? Ты без матов скажи, что ты хочешь получить в результате? Как полученный результат будешь использовать? Окно родитель - это окно твоей программы или чужой?
Вообще хендлы родителей и детей сидят в структурах создаваемых гаджетов. Посмотри структуру widget, там в полях структуры должен быть указан родитель. После ответов на мои вопросы, можно будет поискать ответы, а так твой вопрос для меня не понятен.

_________________
.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн фев 24, 2014 1:38 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вс дек 09, 2012 9:02 pm
Сообщений: 771
Откуда: Дагестан
Благодарил (а): 0 раз.
Поблагодарили: 11 раз.
Пункты репутации: 0
Цитата:
а так твой вопрос для меня не понятен
А так, понятней?
Код:
1
2
3
4
5
6
7
8
9
10
11
12
ProcedureDLL GetGadgetParentWindow(Gadget.i) ;(В) 
 CompilerIf #PB_Compiler_OS = #PB_OS_Windows
  If IsGadget(Gadget)
    ProcedureReturn GetProp_(GetParent_(GadgetID(Gadget)),"PB_WindowID")-1
  EndIf  
 CompilerElseIf #PB_Compiler_OS = #PB_OS_Linux
  If IsGadget(Gadget)
    ProcedureReturn ;вот здесь надо получит номер окна, на котором расположен гаджет
  EndIf  
 CompilerEndIf  
EndProcedure
 



Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн фев 24, 2014 2:18 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вс дек 09, 2012 9:02 pm
Сообщений: 771
Откуда: Дагестан
Благодарил (а): 0 раз.
Поблагодарили: 11 раз.
Пункты репутации: 0
Никита Однороб, а это именно то что мне нужно? Я имею в виду "GetProp() из хендла получает номер", а это "gtk.Widget.get_data(widget, "prefixes")" тоже самое. почему "prefixes"? не понятно, ссылку на нее если можно дай.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн фев 24, 2014 4:53 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
В Windows это так:
Код:
1
GetProp_(Gadget, "PB_ID")



В лине пробуй так:
Код:
1
gtk_Widget_get_data(Gadget, "PB_ID")


_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу 1, 2, 3  След.

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


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

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


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

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