Сейчас на форуме: ut2004, vsv1 (+6 невидимых)

 eXeL@B —› Вопросы новичков —› как сделать?
Посл.ответ Сообщение

Ранг: 1.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 26 августа 2006 16:47
· Личное сообщение · #1

Не имею понятия как сделать Edit в fasme смотрел в папке examples исходник там какбы он есть
но я не вьехал в чем смысл . Если можно поподробней. Просто везде статьи на masme на фасме редко.
Так изучаю по исходникам(успешно)
Сам исходник:
format PE GUI 4.0
entry start

include 'include\win32a.inc'

ID_CAPTION =100
ID_MESSAGE =101
ID_ICONERROR =103
ID_ICONINFORMATION =104
ID_ICONQUESTION =105
ID_ICONWARNING =106
ID_TOPMOST =107

section '.data' data readable writeable

flags dd ?
caption rb 40h
message rb 100h

section '.code' code readable executable

start:

invoke GetModuleHandle,0
invoke DialogBoxParam,eax,36,HWND_DESKTOP,DialogProc,0; Ñîçäàåò áëîê ìîäàëüíîãî äèàëîãà, îïpåäåëåííîãî TemplateName, è ïåpåä òåì,
; êàê îòîápàæàòü äèàëîã, ïîñûëàåò ñîîáùåíèå wm_InitDialog. Òàêæå ïîçâîëÿåò
; ïåpåäàâàòü ôóíêöèè îápàòíîãî âûçîâà íà÷àëüíûé ïàpàìåòp.
or eax,eax;èëè eax îáíóëÿåì
jz exit;âûõîäèì åñëè 0
invoke MessageBox,HWND_DESKTOP,message,caption,[flags];âûçûâàåì Îêíî.
exit:
invoke ExitProcess,0

proc DialogProc hwnddlg,msg,wparam,lparam
push ebx esi edi
cmp [msg],WM_INITDIALOG ;wm_initdialog-Óâåäîìëÿåò ïpèêëàäíóþ çàäà÷ó î òîì, ÷òî áëîê äèàëîãà ãîòîâ ê îòîápàæåíèþ è
; äîëæåí áûòü èíèöèàëèçèpîâàí.
je wminitdialog
cmp [msg],WM_COMMAND; wm_command-Óâåäîìëÿåò îêíî, ÷òî äîëæåí áûòü âûápàí ýëåìåíò ìåíþ, äîëæíà áûòü òpàíñëèpîâàíà
; êëàâèøà àêñåëåpàòîpà èëè îò äî÷åpíåãî îpãàíà óïpàâëåíèÿ åìó äîëæíî áûòü ïåpåäàíî
; ñîîáùåíèå.
je wmcommand
cmp [msg],WM_CLOSE;wm_close-óâåäîìëÿåò îêíî ÷òî îíî áóäåò çàêðûòî
je wmclose
xor eax,eax
jmp finish
wminitdialog:
invoke CheckRadioButton,[hwnddlg],ID_ICONERROR,ID_ICONWARNING,ID_ICONINFORMAT ION
jmp processed
wmcommand:
cmp [wparam],BN_CLICKED shl 16 + IDCANCEL
je wmclose
cmp [wparam],BN_CLICKED shl 16 + IDOK
jne processed
invoke GetDlgItemText,[hwnddlg],ID_CAPTION,caption,40h;GetDlgItemText- Ñ÷èòûâàåò òåêñò îpãàíà óïpàâëåíèÿ.
invoke GetDlgItemText,[hwnddlg],ID_MESSAGE,message,100h
mov [flags],MB_OK
invoke IsDlgButtonChecked,[hwnddlg],ID_ICONERROR
cmp eax,BST_CHECKED
jne iconerror_ok
or [flags],MB_ICONERROR
iconerror_ok:
invoke IsDlgButtonChecked,[hwnddlg],ID_ICONINFORMATION;IsDlgButtonChecked- Îïpåäåëÿåò, îòìå÷åí èëè íåò áëîê óïpàâëåíèÿ êíîïêè.
cmp eax,BST_CHECKED; BST_CHECKED-Ìåòèò èëè ñíèìàåò ìåòêó ñ îpãàíà óïpàâëåíèÿ êíîïêîé èëè èçìåíÿåò ñîñòîÿíèå òpåõêíîïî÷íîãî îpãàíà óïpàâëåíèÿ.


jne iconinformation_ok
or [flags],MB_ICONINFORMATION
iconinformation_ok:
invoke IsDlgButtonChecked,[hwnddlg],ID_ICONQUESTION
cmp eax,BST_CHECKED
jne iconquestion_ok
or [flags],MB_ICONQUESTION
iconquestion_ok:
invoke IsDlgButtonChecked,[hwnddlg],ID_ICONWARNING
cmp eax,BST_CHECKED
jne iconwarning_ok
or [flags],MB_ICONWARNING
iconwarning_ok:
invoke IsDlgButtonChecked,[hwnddlg],ID_TOPMOST
cmp eax,BST_CHECKED
jne topmost_ok
or [flags],MB_TOPMOST
topmost_ok:
invoke EndDialog,[hwnddlg],1
jmp processed
wmclose:
invoke EndDialog,[hwnddlg],0
processed:
mov eax,1
finish:
pop edi esi ebx
ret
endp

section '.idata' import data readable writeable

library kernel,'KERNEL32.DLL',\
user,'USER32.DLL'

import kernel,\
GetModuleHandle,'GetModuleHandleA',\
ExitProcess,'ExitProcess'

import user,\
DialogBoxParam,'DialogBoxParamA',\
CheckRadioButton,'CheckRadioButton',\
GetDlgItemText,'GetDlgItemTextA',\
IsDlgButtonChecked,'IsDlgButtonChecked',\
MessageBox,'MessageBoxA',\
EndDialog,'EndDialog'

section '.rsrc' resource data readable

directory RT_DIALOG,dialogs

resource dialogs,\
37,LANG_ENGLISH+SUBLANG_DEFAULT,demonstration

dialog demonstration,'Create message box',70,70,190,175,WS_CAPTION+WS_POPUP+WS_SYSMENU+DS_MODALFRAME
dialogitem 'STATIC','&Caption:',-1,10,10,70,8,WS_VISIBLE
dialogitem 'EDIT','',ID_CAPTION,10,20,170,13,WS_VISIBLE+WS_BORDER+WS_TABSTOP
dialogitem 'STATIC','&Message:',-1,10,40,70,8,WS_VISIBLE
dialogitem 'EDIT','',ID_MESSAGE,10,50,170,13,WS_VISIBLE+WS_BORDER+WS_TABSTOP+ES_A UTOHSCROLL
dialogitem 'BUTTON','&Icon',-1,10,70,80,70,WS_VISIBLE+BS_GROUPBOX
dialogitem 'BUTTON','&Error',ID_ICONERROR,20,82,60,13,WS_VISIBLE+BS_AUTORADIOBUTT ON+WS_TABSTOP+WS_GROUP
dialogitem 'BUTTON','I&nformation',ID_ICONINFORMATION,20,95,60,13,WS_VISIBLE+BS_A UTORADIOBUTTON
dialogitem 'BUTTON','&Question',ID_ICONQUESTION,20,108,60,13,WS_VISIBLE+BS_AUTORA DIOBUTTON
dialogitem 'BUTTON','&Warning',ID_ICONWARNING,20,121,60,13,WS_VISIBLE+BS_AUTORADI OBUTTON
dialogitem 'BUTTON','&Style',-1,100,70,80,70,WS_VISIBLE+BS_GROUPBOX
dialogitem 'BUTTON','&Top most',ID_TOPMOST,110,82,60,13,WS_VISIBLE+WS_TABSTOP+BS_AUTOCHECKBOX
dialogitem 'BUTTON','OK',IDOK,85,150,45,15,WS_VISIBLE+WS_TABSTOP+BS_DEFPUSHBUTTON
dialogitem 'BUTTON','C&ancel',IDCANCEL,135,150,45,15,WS_VISIBLE+WS_TABSTOP+BS_PUS HBUTTON
enddialog



Ранг: 389.6 (мудрец)
Активность: 0.150
Статус: Участник

Создано: 27 августа 2006 07:38
· Личное сообщение · #2

Lukar1 пишет:
Просто везде статьи на masme на фасме редко.

mythrillus.land.ru/tajga-tut/preproc.html <--

-----
TBR




Ранг: 1.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 27 августа 2006 16:58
· Личное сообщение · #3

Спасибо. За инфу. С вопросом разобрался сам.


 eXeL@B —› Вопросы новичков —› как сделать?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати