Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2014, 09:25   #1
Кунгр
 
Регистрация: 24.01.2014
Сообщений: 6
Сообщение Меню и диалог

Текст на языке ассемблер нужна на с++
.386
model flat,STDCALL
include win32.inc
CM_ITEM1 equ 102
CM_ITEM equ 101
IDD_DIALOG1 equ 10
IDC_EDIT1 equ 1001
IDC_STATICTEXT1 equ 1002
extrn ShellExecuteA:PROC
extrn CloseHandle:PROC
extrn BeginPaint:PROC
extrn CreateWindowExA:PROC
extrn DefWindowProcA:PROC
extrn DispatchMessageA:PROC
extrn ExitProcess:PROC
extrn GetMessageA:PROC
extrn GetModuleHandleA:PROC
extrn InvalidateRect:PROC
extrn LoadCursorA:PROC
extrn LoadIconA:PROC
extrn MessageBoxA:PROC
extrn PostQuitMessage:PROC
extrn RegisterClassExA:PROC
extrn ShowWindow:PROC
extrn TranslateMessage:PROC
extrn UpdateWindow:PROC
extrn CreateEventA:proc
extrn GetStdHandle:proc
extrn GetDlgItemTextA:proc
extrn GetDlgItem:proc
extrn EndDialog:proc
extrn SetFocus:proc
extrn DialogBoxParamA:proc
.data
hfn dd 0
hed dd 0
menu_name db 'menu',0
newhwnd dd 0
lppaint PAINTSTRUCT <?>
msg MSGSTRUCT <?>
wc WNDCLASSEX <?>
hInst dd 0
szTitleName db 'Диалоговые окна',0
szClassName db 'ASMCLASS32',0
szClassName1 db 'EDIT',0
szUser db 260 dup (0)
npad db 'notepad.exe',0
wpad db 'wordpad.exe',0
cmnd db 'open',0
fname db 'c:\\1.txt',0
.code
start:
push 0
call GetModuleHandleA
mov [hInst], eax
reg_class:
mov [wc.cbSize], size WNDCLASSEX
mov [wc.style], CS_HREDRAW + CS_VREDRAW; + CS_GLOBALCLASS
mov [wc.lpfnWndProc], offset WndProc
mov [wc.cbClsExtra], 0
mov [wc.cbWndExtra], 0
mov eax, [hInst]
mov [wc.hInstance], eax
push IDI_APPLICATION
push 0
call LoadIconA
mov [wc.hIcon], eax
push IDC_ARROW
push 0
call LoadCursorA
mov [wc.hCursor], eax
mov [wc.hbrBackground], COLOR_WINDOW + 1
mov dword ptr [wc.lpszMenuName],offset menu_name
mov dword ptr [wc.lpszClassName], offset szClassName
mov dword ptr [wc.hIconSm],0
push offset wc
call RegisterClassExA
push 0
push [hInst]
push 0
push 0
push 240
push 320
push CW_USEDEFAULT ; y
push CW_USEDEFAULT ; x
push WS_OVERLAPPEDWINDOW ; Style
push offset szTitleName
push offset szClassName ; Class name
push WS_EX_CLIENTEDGE ; extra style
call CreateWindowExA
mov [newhwnd], eax
push SW_SHOWNORMAL
push [newhwnd]
call ShowWindow
push [newhwnd]
call UpdateWindow
msg_loop:
push 0
push 0
push 0
push offset msg
call GetMessageA
cmp ax, 0
je end_loop
push offset msg
call TranslateMessage
push offset msg
call DispatchMessageA
jmp msg_loop
end_loop:
push [hfn]
call CloseHandle
push [msg.msWPARAM]
call ExitProcess
WndProc proc uses ebx edi esi, hwnd:DWORD, wmsg:DWORD,\
wparam:DWORD, lparam:DWORD
LOCAL theDC:DWORD
cmp [wmsg], WM_DESTROY
je wmdestroy
cmp [wmsg], WM_SIZE
je wmsize
cmp [wmsg], WM_CREATE
je wmcreate
cmp [wmsg],WM_COMMAND
je wmcommand
jmp defwndproc
wmcommand:
mov eax,lparam
cmp ax,0
jne wmc1
mov eax,wparam
cmp ax,CM_ITEM1
je notepad
cmp ax,CM_ITEM
je wordpad
jp wmc1
notepad:
call DialogBoxParamA,[hInst],IDD_DIALOG1,[newhwnd],offset DWNDPROC,0
cmp eax,IDOK
je d1
jmp wmc1
d1:
call ShellExecuteA,0,offset cmnd, offset npad, offset szUser, 0, SW_SHOWNORMAL
jp wmc1
wordpad:
call DialogBoxParamA,[hInst],IDD_DIALOG1,[newhwnd],offset DWNDPROC,0
cmp eax,IDOK
je d11
jmp wmc1
d11:
call ShellExecuteA,0,offset cmnd, offset wpad, offset szUser, 0, SW_SHOWNORMAL
jp wmc1
wmc1:
mov eax,0
jmp finish
wmcreate:
push 0
push [hInst]
push 1
push [hwnd]
push 0
push 0
push 0 ; y
push 0 ; x
push WS_VISIBLE or WS_CHILD or ES_LEFT OR ES_MULTILINE or\
ES_AUTOHSCROLL or ES_AUTOVSCROLL ; Style
push 0
push offset szClassName1 ; Class name
push 0
call CreateWindowExA
mov [hed],eax
mov eax, 0
jmp finish
defwndproc:
push [lparam]
push [wparam]
push [wmsg]
push [hwnd]
call DefWindowProcA
jmp finish
wmdestroy:
push 0
call PostQuitMessage
mov eax, 0
jmp finish
wmsize:
mov eax, 0
finish:
ret
WndProc endp
DWNDPROC proc uses ebx edi esi,hDlg:dword,imsg:dword,wpar:dwor d,lpar:dword
mov eax,[imsg]
cmp eax,WM_INITDIALOG
je init
cmp eax,WM_COMMAND
jne ret_false
mov eax,[wpar]
cmp eax,IDOK
jne ret_false
call GetDlgItemTextA,hDlg,IDC_EDIT1,offs et szUser,260
mov eax,IDOK
call EndDialog,hDlg,eax
ret_false:
xor eax,eax
ret
init:
call GetDlgItem,hDlg,IDC_EDIT1
call SetFocus,eax
jmp ret_false
DWNDPROC endp
public WndProc
public DWNDPROC
ends
end start
Кунгр вне форума Ответить с цитированием
Старый 21.02.2014, 09:27   #2
Кунгр
 
Регистрация: 24.01.2014
Сообщений: 6
По умолчанию

Программа запрашивает данные через диалоговое окно и использует их, как аргумент для запуска внешнего приложения
Кунгр вне форума Ответить с цитированием
Старый 21.02.2014, 09:39   #3
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Ну нужно. Ну на с++. И чо?

Наработки/оплата?
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Диалог Garmon Visual C++ 0 26.10.2012 17:06
Меню codrops (стильное меню), Как сделать чтобы текст не смещался в блоке? AlienNation HTML и CSS 2 28.09.2011 13:17
Меню с Items в виде набора Bitmap (как меню редактирования в Word'е) chandrasecar Мультимедиа в Delphi 7 14.01.2009 09:20
Диалог Михаил Юрьевич Общие вопросы Delphi 2 26.04.2008 22:35