Тема: AHK:GUI, DllCall и еще кое-какие вопросы...
Добрый день, форумчане. Накопилось множество вопросов на которые я не нашел ответы на нашем (да и на забугорном) форуме.
1) Как в GUI нарисовать линии? Требуется рисовать линии в Gui, в котором содержатся кнопки, картинки, прогресбары и т.д. То есть мне требуется на ряду с обычными элементами Gui, рисовать и линии или прямоугольники.
2) Можно ли сделать регистрацию drag and drop по картинке? То есть таскать картинку (Да и вообще любой контрол.) в Gui мышкой?
3) Как можно отображать данные объекта во всплывающем окне по клику на картинку (Gui элемент) класса? Как только я не мучался, и в классе инициализировал второе окно, и в начале скрипта, ничего не получается.
;Инициализацию второго ГУИ я делал в начале скрипта.
class Valve{
x:=0, y:=0, db:=0
__New(x,y,name){
this.name:=name
this.x:=x
this.y:=y
Gui, Add, Picture, w30 h-1 x%x% y%y% BackgroundTrans gValve.TEST hwndV1, C:\Users\vic\Pictures\Val-Grey.emf
this.V1:=V1
x2:=x+30
y2:=y+25
gui, add, text, x%x2% y%y2% hwnddbg, text000
this.dbg:=dbg
x3:=x+30
y3:=y+0
gui, add, text, x%x3% y%y3% cRed hwndMan, te
this.Man:=Man
}
update(db){
this.db:=db
GuiControl,, % this.dbg, % this.name
if (db==0)
GuiControl,, % this.V1, C:\Users\vic\Pictures\Val-Grey.emf
else if (db==1) or (db==5)
GuiControl,, % this.V1, C:\Users\vic\Pictures\Val-Green.emf
else if (db==2) or (db==6)
GuiControl,, % this.V1, C:\Users\vic\Pictures\Val-Red.emf
else if (TicTak==1) and ((db==3) or (db==7))
GuiControl,, % this.V1, C:\Users\vic\Pictures\Val-Green.emf
Else if (TicTak==0) and ((db==3) or (db==7))
GuiControl,, % this.V1, C:\Users\vic\Pictures\Val-Grey.emf
else if (TicTak==1) and ((db==4) or (db==8))
GuiControl,, % this.V1, C:\Users\vic\Pictures\Val-Red.emf
else if (TicTak==0) and ((db==4) or (db==8))
GuiControl,, % this.V1, C:\Users\vic\Pictures\Val-Grey.emf
GuiControl,2:, % this.TT1, % db
if (db=5) or (db=6) or (db=7) or (db=8)
GuiControl,, % this.Man, M
else GuiControl,, % this.Man,
}
;тестирование открытия окна по клику на клапан. Открываться должны с данными клапана.
;какие только варианты не были испробованы...
TEST() {
;gui, 2:Submit
;Gui, 2:add, text,hwndTT1, text
;this.TT1:=TT1
;GuiControl,2:, % this.TT1, % db
;this.TEST:=TEST
gui, 2:show, h100 w100
}
}
4) Можно ли как то перевернуть картинку на 90 градусов?
5) Ну и последний вопрос, как правильно отправлять числа в DllCall? Именно числа. У меня отправляются символы. Вместо 1 отправляется 49, что является кодом числа 1 в ASCII.
WriteDB(obj, db, start, size, data){
SetFormat,Integer,DEC
DllCall("snap7.dll\Cli_DBWrite", "Ptr", obj, "Int", db, "int", start, "int", size, "ptr", &data)
return
}