Вверх ↑
Этот топик читают: Гость
Ответов: 2125
Рейтинг: 159
#16: 2008-04-29 18:53:43 ЛС | профиль | цитата
Это вся схема, или только часть?
Если вся, то где определяются метки client, client.x и client.y?

Add(InlineCode,11711800,280,231)
{
WorkPoints=#14:doSetCursorPos|
DataPoints=#4:Horz|4:Vert|
Code=#24:PointWork doSetCursorPos|17: local Horz,Vert|41: ReadInt Vert,data,data_type,Self#.Vert,0|10: push Vert|41: ReadInt Horz,data,data_type,Self#.Horz,0|10: push Horz|20: call [SetCursorPos]|8:EndPoint|
link(Horz,3537694:Value,[(286,219)(265,219)])
link(Vert,11620596:Value,[(293,219)(314,219)])
}
Add(Button,634632,231,231)
{
Left=10
Top=15
Caption="Set"
link(onClick,11711800:doSetCursorPos,[])
}
Add(Memory,3537694,259,175)
{
Default=Integer(300)
}
Add(Memory,11620596,308,175)
{
Default=Integer(120)
}
Add(Button,11313855,231,287)
{
Left=105
Top=15
Caption="Get"
link(onClick,243475:doEvent1,[])
}
Add(InlineCode,2796686,350,287)
{
WorkPoints=#14:doGetCursorPos|
VarPoints=#1:X|1:Y|
Code=#4:Vars|20: Self#.Point dd 0,0|0:|24:PointWork doGetCursorPos|23: lea eax,[Self#.Point]|25: invoke GetCursorPos,eax|8:EndPoint|0:|19:PointVar X,data_int|27: result equ [Self#.Point] |8:EndPoint|0:|19:PointVar Y,data_int|29: result equ [Self#.Point+4] |8:EndPoint|
}
Add(FormatStr,5227561,350,336)
{
Mask="X=%1 Y=%2"
link(onFString,4073272:doMessage,[])
link(Str1,2796686:X,[])
link(Str2,2796686:Y,[])
}
Add(Hub,243475,280,287)
{
link(onEvent1,2796686:doGetCursorPos,[])
link(onEvent2,5227561:doString,[(331,300)(331,342)])
}
Add(Message,4073272,406,336)
{
}
карма: 1

0
Ответов: 82
Рейтинг: 2
#17: 2008-04-29 19:04:53 ЛС | профиль | цитата
tsdima, в строке:
result equ [Self#.Point+4]
+4 - что означает?
карма: 0

0
Ответов: 2125
Рейтинг: 159
#18: 2008-04-29 21:40:34 ЛС | профиль | цитата
Как что? То что берётся следующий DWORD

Self#.Point это адрес первого DWORD
[Self#.Point] это первый DWORD, там будет координата X
Self#.Point+4 это адрес второго DWORD
[Self#.Point+4] это второй DWORD, там будет координата Y

DWORD занимает 4 байта.

Я что-то не пойму, то ты хочешь разобраться с "трёхэтажными" макросами, то спрашиваешь такие простые вещи.
Опыт-то програмирования под asm есть?

карма: 1

0
Ответов: 82
Рейтинг: 2
#19: 2008-04-30 12:10:55 ЛС | профиль | цитата
tsdima писал(а):
Опыт-то програмирования под asm есть?

Нет, 3 недели назад начал изучать asm.
[Parent#.hwnd] - это хэндл окна?

карма: 0

0
Ответов: 2125
Рейтинг: 159
#20: 2008-04-30 15:18:54 ЛС | профиль | цитата
Да. Окна-контейнера.
карма: 1

0
Ответов: 82
Рейтинг: 2
#21: 2008-05-03 07:58:11 ЛС | профиль | цитата
Как мне запустить код, чтобы он сработал при запуске программы, но не проводя линий, например в схемке code_8961.txt код:

invoke LoadLibrary,dllname
invoke GetProcAddress,eax,namein
mov [Self#.Func],eax
по идее должен сработать при запуске программы
карма: 0

0
файлы: 1code_8961.txt [1.1KB] [269]
Ответов: 2125
Рейтинг: 159
#22: 2008-05-03 11:36:01 ЛС | профиль | цитата
Для этих целей можно использовать секцию Create

Add(InlineCode,819390,189,140)
{
Code=#10:LocalConst|31: PCharConst Self#.msg, 'Hello'|31: PCharConst Self#.capt, 'Test'|2: |6:Create|48: invoke MessageBox,0,Self#.msg,Self#.capt,MB_OK|2: |
}
карма: 1

1
Голосовали:Алексей
Ответов: 82
Рейтинг: 2
#23: 2008-05-03 12:26:36 ЛС | профиль | цитата
Ага, спасибо.
А вообще, какие секции еще существуют в HiAsm'е?
карма: 0

0
Ответов: 2125
Рейтинг: 159
#24: 2008-05-03 15:39:50 ЛС | профиль | цитата
Алексей писал(а):
А вообще, какие секции еще существуют в HiAsm'е?

Ну, как бы, не в HiAsm в целом, а в пакете FASM для HiAsm в частности.

Следующие секции включаются в исходник один раз, независимо от количества компонент данного типа (в котором они встречаются):
GlobalConst
GlobalProc
GlobalVars
GlobalInit
GlobalDone
Ясно, что в этих секциях Self и Parent неопределены.

Другие секции создаются каждый раз при использовании компонент - сколько раз компонент использовался, столько раз и будет присутствовать секция в исходнике. Чтобы не было повторяющихся имён, необходимо в именах использовать Self#
LocalConst
LocalProc
Vars
Create
Destroy
PostInit
Events
MessageMap

PostInit имеет смысл только для контейнеров (MultiElement-ов), выполняется после того, как выполнились все Create элементов данного контейнера, в том числе и его самого.

Events и MessageMap могут встречаться только у визуальных компонент. Способ их использования лучше подсмотреть в исходных кодах элементов.


карма: 1

0
Ответов: 82
Рейтинг: 2
#25: 2008-05-20 12:02:09 ЛС | профиль | цитата
tsdima писал(а):
В пакете FASM для HiAsm в частности.

Ну я это и имел в виду

tsdima, спасибо за развернутый ответ
------------ Дoбавленo:

Ругается:

call [ShellExecute]
error: undefined symbol.


Add(InlineCode,11906990,280,154)
{
WorkPoints=#6:doPage|
Code=#10:LocalConst|42: Self#.Page db "http://win32asm.cjb.net",0|36: ;Self#.Mail db "ates@anet.net.tr",0|28: Self#.Operation db "open",0|0:|16:PointWork doPage|19: push SW_SHOWNORMAL|7: push 0|7: push 0|16: push Self#.Page|21: push Self#.Operation|20: push [Parent#.hwnd]|20: call [ShellExecute]|8:EndPoint|0:|17:;PointWork doMail|81:; invoke ShellExecute,[Parent#.hwnd],Self#.Operation,Self#.Mail,0,0,SW_SHOWNORMAL|9:;EndPoint|
}
Add(Button,12400702,168,154)
{
Left=15
Top=10
Width=80
Height=25
Caption="Page"
link(onClick,11906990:doPage,[])
}
Add(Button,7303902,168,189)
{
Left=15
Top=45
Width=80
Height=25
Caption="Mail"
}
карма: 0

0
Ответов: 2125
Рейтинг: 159
#26: 2008-05-20 12:11:50 ЛС | профиль | цитата
shell32.dll до сих пор не была никому нужна Кстати, это последняя неподключённая длл-ка, для которой есть .inc в стандартной поставке компилятора FASM.
Подключается очень просто, в самом конце файла hiasmRT.inc

library kernel32,'KERNEL32.DLL',\
        user32,  'USER32.DLL',\
gdi32, 'GDI32.DLL',\
ole32, 'OLE32.DLL',\
advapi32,'ADVAPI32.DLL',\
comctl32,'COMCTL32.DLL',\
comdlg32,'COMDLG32.DLL',\
shell32, 'SHELL32.DLL',\
wsock32, 'WSOCK32.DLL'

include 'INCLUDE\APIA\KERNEL32.INC'
include 'INCLUDE\APIA\USER32.INC'
include 'INCLUDE\APIA\GDI32.INC'
include 'INCLUDE\APIA\OLE32.INC'
include 'INCLUDE\APIA\ADVAPI32.INC'
include 'INCLUDE\APIA\COMCTL32.INC'
include 'INCLUDE\APIA\COMDLG32.INC'
include 'INCLUDE\APIA\SHELL32.INC'
include 'INCLUDE\APIA\WSOCK32.INC'
карма: 1

1
Голосовали:Алексей
Ответов: 82
Рейтинг: 2
#27: 2008-05-20 12:27:32 ЛС | профиль | цитата
Ага, все работает

tsdima писал(а):
shell32.dll до сих пор не была никому нужна

ИМХО: Это наверно потому, что на асме мало кто программирует
карма: 0

0
Ответов: 2125
Рейтинг: 159
#28: 2008-05-20 14:16:51 ЛС | профиль | цитата
Алексей писал(а):
на асме мало кто программирует

Ага, ты первый

карма: 1

0
28
Сообщение
...
Прикрепленные файлы
(файлы не залиты)