Реферат по предмету "Информатика, программирование"


Текстовий редактор під Windows

Міністерство освіти та науки України
Кіровоградський Державний Технічний університет
Кафедра програмного забезпечення
Курсова робота
з дисципліни “Програмування на мові ASM-86” на тему:
Текстовий редактор під Windows

Зміст
1. Вступ
2. Постановка задачі
3. Обґрунтування вибору методів розв’язку задачі
4. Алгоритм програми
5. Реалізація програми
6. Системні вимоги
7. Інструкція для користувача
8. Висновки
9. Використана література
Додаток
1. Вступ
Тепер комп’ютери відіграють у житті людини всебільшу та більш роль. Раніше, коли ще не було комп’ютерів, чи вони були малорозповсюдженні, все робилося вручну. Коли комп’ютери одержали широкерозповсюдження, комп’ютер став допомагати людині, бо він може багато операційробити набагато швидше, ніж людина.
Інформація — цінна річ, тому для її збереженняв сучасному суспільстві використовують все частіше персональний комп‘ютер. Приперегляді текстових файлів виникає потреба в зручних в користуванні тарозумінні програм переглядачів текстових файлів.
2. Постановка задачі
Розробити текстовий редактор під Windows (типуNotepad) на мові програмування ASM-86. Програма повинна виконувати основні діїнад введеним текстом.
 3. Обґрунтування вибору методіврозв’язку задачі
Отже, необхідно написати текстовий редакторпід Windows. Дана програма призначена для перегляду текстових файлів різногорозміру. Програма може бути використана будь яким користувачем ЕОМ дляперегляду потрібної інформації. При виборі алгоритму програми у мене не виникловаріантів. Тут все дуже просто. В Windows вже є функції API для роботи зтекстом, іх тільки потрібно правильно викликати. Ще потрібно правильно написатиобробники повідомлень.
 4. Алгоритм програми
Читаємо командний рядок.
Читаємо іконку та курсор з ресурсів.
Будування головного вікна.
Ініціалізація акселераторів.
Отримання повідомлення
Якщо це WM_QUIT, то перехід до пункту 11.
Перетворимо акселератори в IDM*
Перетворимо повідомлення від клавіш
Відішлемо назад.
Перехід до пункту 5.
Закінчити програму.
5. Реалізація програми
Програма написана на мові ASM-86 звикористанням команд процесора 386. Вона складається з головної програми, якачитає командний рядок, будує головне вікно, та організує головний цикл програми.Та з обробників повідомлень вікна, які і викликають функції для роботи зтекстом.
Вона працює на будь якій машині де WINDOWS. Принаписанні програми для реалізації роботи з текстом та файлом були використаніфункції API WINDOWS.
Програма компілюється Turbo Assembler,зв’язується за допомогою TLINK32, та компілюються ресурси за допомогою brcc32.
tasm /m /ml /D_TASM_ winpad. asm
brcc32 winpad. rc
tlink32 /Tpe /aa /c /x winpad. obj,,,,,winpad.res
 6. Системні вимоги
IBM сумісний комп’ютер із мікропроцесоромIntel 80386 або старшим.
Операційна система — Windows 3.1 або старша
Пам’ять — 2M і вище
 7. Інструкція для користувача
Для запуску текстового редактора під Windows,потрібно зайти в меню “Пуск", вибрати “Выполнить” та в командному рядку набратиNotepad. Exe та натиснути Enter. Також можна набрати ім’я файлу, який потрібноредагувати.
Після запуску програми з’являється оболонка, вякій вже можна набирати текст, причому, можна використовувати операції з блоком.Також, в програмі є меню, в якому є опції для читання файлу, для запису файлу,для операцій з буфером, та вивід інформації про програму.
8. Висновки
Отже, на мові ASM-86 створено текстовийредактор під Windows (типу Notepad). При постійній роботі з комп‘ютером доситьчасто потрібно переглянути файл. Тому дана програма є незамінною в роботі. Вонає простою в користуванні та розумінні. Під час написання цієї програми буврозібраний метод писання програм під Windows.
9. Використана література
1) “Програмування намові Асемблера ЕС ЕВМ" З.С. Брич, В.I. Воющ Москва 1989 р. ст. 166
2).“Програмування насучасних мовах програмування”. Москва 1990 р. ст. 206
3) “Основи мови”Асемблер” В.I. Криволап. Москва 1997р. ст.309
4) “Ассемблер дляпочаткiвцiв” М.П. Шукiн. Київ 1980р. ст.155
5) “Турбо Асемблер” Л.В.Захаров. Харків 1995 р ст.178
6) “Макро Асемблер” К.С.Кропiйко, О.Д. Богатирова. Київ — “Наука” 1991р.
7) Електроннийдовідник BOOK.
Додаток
 Лістинг програми
 
; winpad. asm
; Графическое win32-приложение — текстовыйредактор
;
; Компиляция TASM
; tasm /m /ml /D_TASM_ winpad. asm
; brcc32 winpad. rc
; tlink32 /Tpe /aa /c /x winpad. obj,,,,,winpad.res
include def32. inc
include user32. inc
include kernel32. inc
include comdlg32. inc
ID_MENUequ700h
ID_ACCELequ701h
ID_ABOUTequ702h
MAXSIZE equ 260; максимальное имя файла
MEMSIZEequ 65535; максимальный размервременного буфера в памяти
EditIDequ 1
.386
. model flat
. const
c_w_namedb 'Asmpad95',0; это и имя класса и имяосновного окна
edit_classdb 'edit',0; предопределённое имякласса для редактора
changes_msgdb 'Save changes? ',0
filter_stringdb 'All Files',0,'*. *',0; маскидля Get*FileName
db 'Text Files',0,'*. txt',0,0
. data
; структура, использующаяся Get*FileName
ofnOPENFILENAME
; стурктура, описывающая наш основной класс
wcWNDCLASSEX
flag_untitleddb1; = 1 если имя файла неопределено (новый файл)
. data?
h_editwindowdd?; идентификатор окна редактора
h_acceldd?; идентификатор массиваакселераторов
p_memorydd?; адрес буфера в памяти
SizeReadWritedd?
msg_MSG
recRECT
bufferdbMAXSIZE dup (?); имя файла
window_titledbMAXSIZE dup (?), 12 dup (?)
. code
_start:
callGetCommandLine; получим нашу команднуюстроку
movedi,eax
moval,' '
movecx,MAXSIZE
repnescasb; найдём конец имени нашей программы
cmpbyte ptr [edi],0
jecmdline_empty
movesi,edi
movedi,offset buffer
repmovsb
movflag_untitled,0
cmdline_empty:
; подготовим и зарегистрируем класс
xorebx,ebx
callGetModuleHandle; определим нашидентификатор
movesi,eax
movwc. hInstance,eax; и сохраним его в wc. hInstance
movofn. _hInstance,eax
pushIDI_APPLICATION; или IDI_ICON если иконкаесть в ресурсах
pushebx; или esi если иконка есть в ресурсах
callLoadIcon
movwc. hIcon,eax
pushIDC_ARROW; предопределённый курсор (стрелка)
pushebx
callLoadCursor
movwc. hCursor,eax
pushoffset wc
callRegisterClassEx
; создадим основное окно
pushebx
pushesi
pushebx
pushebx
push400
push600
pushCW_USEDEFAULT
pushCW_USEDEFAULT
pushWS_OVERLAPPEDWINDOW
pushoffset c_w_name
pushoffset c_w_name
pushWS_EX_CLIENTEDGE
callCreateWindowEx
pusheax; для pop esi перед message_loop
pusheax
pushSW_SHOWNORMAL
pusheax
callShowWindow
callUpdateWindow
; инициализируем акселераторы
pushID_ACCEL
pushesi
callLoadAccelerators
movh_accel,eax
; цикл ожидания сообщения
popesi; ESI — идентификатор основного окна
movedi,offset msg_; EDI — структура ссообщением от него
message_loop:
pushebx
pushebx
pushebx
pushedi
callGetMessage; получим сообщение
testeax,eax; если это WM_QUIT
jzexit_msg_loop; выйти из цикла
pushedi
pushh_accel
pushesi; hWnd
callTranslateAccelerator; преобразуемакселераторы в IDM*
testeax,eax
jnzmessage_loop
pushedi
callTranslateMessage; преобразуем сообщения отклавиш
pushedi
callDispatchMessage; и отошлём обратно
jmp short message_loop
exit_msg_loop:
pushmsg_. wParam
callExitProcess; конец программы
; процедура win_proc
;
; процедура не должна изменять регистрыEBP,EDI,ESI и EBX!
win_proc proc near
; параметры (с учётом push ebp)
wp_hWnd equ dword ptr [ebp+08h]
wp_uMsg equ dword ptr [ebp+0Ch]
wp_wParam equ dword ptr [ebp+10h]
wp_lParam equ dword ptr [ebp+14h]
; инициализируем стековый кадр
pushebp
movebp,esp; создадим стековый кадр
pusha; сохраним все регистры
xorebx,ebx; 0 для команд push 0
movesi,wp_hWnd; для команд push hWnd
moveax,wp_uMsg
; обработаем пришедшее сообщение
cmpeax,WM_CREATE
jeh_wm_create
cmpeax,WM_SIZE
jeh_wm_size
cmpeax,WM_DESTROY
jeh_wm_destroy
cmpeax,WM_COMMAND
jeh_wm_command
cmpeax,WM_ACTIVATE
jeh_wm_activate
cmpeax,WM_CLOSE
jeh_wm_close
def_proc:
popa
leave; если это ненужное сообщение
jmpDefWindowProc; оставить его обработчику поумолчанию
;
; обработчик WM_CLOSE
; если нужно, спрашивает, сохранить ли файл
h_wm_close:
callsave_contents
jmp short def_proc
;
; обработчик WM_CREATE
;
h_wm_create:
; здесь также можно создать toolbar иstatusbar
; создадим окно редактора
pushebx
pushwc. hInstance; идентификатор основнойпрограммы
pushEditID
pushesi; hWnd
pushebx; 0
pushebx; 0
pushebx; 0
pushebx; 0
pushWS_VISIBLE or WS_CHILD or ES_LEFT orES_MULTILINE or ES_AUTOHSCROLL or ES_AUTOVSCROLL
pushebx; 0
pushoffset edit_class
pushebx; 0
callCreateWindowEx
movh_editwindow,eax
; передадим ему фокус
pusheax
callSetFocus
cmpflag_untitled,1
jecontinue_create
callskip_getopen; откроем файл, указанный вкомандной строке
continue_create:
callset_title
jmp end_wm_check
;
; обработчик WM_COMMAND
;
h_wm_command:
moveax,wp_wParam
cwde; low word contains IDM_*
subeax,100h
jbdef_proc
; обработаем сообщения от пунктов меню
call dword ptr menu_handlers [eax*4]
jmp end_wm_check
menu_handlersdd offset h_idm_new,offseth_idm_open,offset h_idm_save
dd offset h_idm_saveas,offseth_idm_exit,offset h_idm_about
dd offset h_idm_undo, offset h_idm_cut, offseth_idm_copy
dd offset h_idm_paste, offset h_idm_clear,offset h_idm_setsel
; сообщения от пунктов меню должны бытьописаны в win95pad. rc именно в таком
; порядке — от IDM_NEW 100h до IDM_CLEAR 10Ah
h_idm_setsel:
push-1; — 1
pushebx; 0
pushEM_SETSEL; выделить весь текст
pushh_editwindow
callSendMessage
ret
; обработчики сообщений из меню EDIT:
h_idm_clear:
moveax,WM_CLEAR
jmp short send_to_editor
h_idm_paste:
moveax,WM_PASTE
jmp short send_to_editor
h_idm_copy:
moveax,WM_COPY
jmp short send_to_editor
h_idm_cut:
moveax,WM_CUT
jmp short send_to_editor
h_idm_undo:
moveax,EM_UNDO
send_to_editor:
pushebx; 0
pushebx; 0
pusheax
pushh_editwindow
callSendMessage
ret
; обработчик IDM_NEW
h_idm_new:
callsave_contents; запишем файл если нужно
movbyte ptr flag_untitled,1
callset_title; отметим что файл не назван
pushebx
pushebx
pushWM_SETTEXT
pushh_editwindow
callSendMessage; пошлём пустой WM_SETTEXTредактору
ret
; обработчик IDM_ABOUT
h_idm_about:
pushebx; 0
pushoffset about_proc
pushesi; hWnd
pushID_ABOUT
pushwc. hInstance
callDialogBoxParam
ret
; обработчик IDM_SAVEAS и IDM_SAVE
h_idm_save:
cmpflag_untitled,1; если файл назван
jneskip_getsave; пропустим вызовGetSaveFileName
h_idm_saveas:
; спросим имя файла
movofn. Flags,OFN_EXPLORER orOFN_OVERWRITEPROMPT
pushoffset ofn
callGetSaveFileName
testeax,eax
jzfile_save_failed
skip_getsave:
; создадим его
pushebx
pushFILE_ATTRIBUTE_ARCHIVE
pushCREATE_ALWAYS
pushebx
pushFILE_SHARE_READ or FILE_SHARE_WRITE
pushGENERIC_READ or GENERIC_WRITE
pushoffset buffer
callCreateFile
movedi,eax
; выделим память
pushMEMSIZE
pushGMEM_MOVEABLE or GMEM_ZEROINIT
callGlobalAlloc
pusheax; hMemory для GlobalFree
pusheax; hMemory для GlobalLock
callGlobalLock
movesi,eax; адрес буфера в ESI
; заберём текст из редактора
pushesi
pushMEMSIZE-1
pushWM_GETTEXT
pushh_editwindow
callSendMessage
; запишем в файл
pushesi; pMemory
calllstrlen
pushebx
pushoffset SizeReadWrite
pusheax; размер буфера
pushesi; адрес буфера
pushedi; идентификатор файла
callWriteFile
pushesi; pMemory
callGlobalUnlock
callGlobalFree; hMemory уже в стеке
pushedi; идентификатор файла
callCloseHandle
; сбросим флаг модификации в редакторе
pushebx
pushebx
pushEM_SETMODIFY
pushh_editwindow
callSendMessage
movbyte ptr flag_untitled,0
callset_title
file_save_failed:
pushh_editwindow
callSetFocus
ret
; обработчик IDM_OPEN
h_idm_open:
callsave_contents
; вызовем стандартный диалог выбора именифайла
movofn. Flags, OFN_FILEMUSTEXIST orOFN_PATHMUSTEXIST or OFN_EXPLORER
pushoffset ofn
callGetOpenFileName
testeax,eax
jzfile_open_failed
skip_getopen:
; откроем выбранный файл
pushebx
pushFILE_ATTRIBUTE_ARCHIVE
pushOPEN_EXISTING
pushebx
pushFILE_SHARE_READ or FILE_SHARE_WRITE
pushGENERIC_READ or GENERIC_WRITE
pushoffset buffer
callCreateFile
movedi,eax; идентификатор для ReadFile
; выделим память
pushMEMSIZE
pushGMEM_MOVEABLE or GMEM_ZEROINIT
callGlobalAlloc
pusheax; hMemory для GlobalFree
pusheax; hMemory для GlobalLock
callGlobalLock; получим адрес выделеннойпамяти
pusheax; pMemory для GlobalUnlock
pusheax; pMemory для SendMessage
; прочитаем файл
pushebx
pushoffset SizeReadWrite
pushMEMSIZE-1
pusheax; pMemory для ReadFile
pushedi
callReadFile
; пошлём окну редактора сообщение wm_settextчтобы он забрал текст из буфера
pushebx; pMemory уже в стеке
pushWM_SETTEXT
pushh_editwindow
callSendMessage
; а теперь можно закрыть файл и освободитьпамять
callGlobalUnlock; pMemory уже в стеке
callGlobalFree; hMemory уже в стеке
pushedi; hFile
callCloseHandle;
movbyte ptr flag_untitled,0
callset_title
file_open_failed:
pushh_editwindow
callSetFocus
ret
; обработчик IDM_EXIT
h_idm_exit:
callsave_contents
pushesi; hWnd
callDestroyWindow; уничтожить наше окно
ret
;
; обработчик WM_SIZE
;
h_wm_size:
; здесь также надо послать WM_SIZE окнамtoolbar и statusbar
; изменим размер окна редактора так чтобы онопо-прежнему было на всё окно
pushoffset rec
pushesi; hWnd
callGetClientRect
push1; true
pushrec. bottom; height
pushrec. right; width
pushebx; y
pushebx; x
pushh_editwindow
callMoveWindow
jmp short end_wm_check
;
; обработчик WM_ACTIVATE
;
h_wm_activate:
pushh_editwindow
callSetFocus
jmp short end_wm_check
;
; обработчик WM_DESTROY
;
h_wm_destroy:
pushebx
callPostQuitMessage; послать WM_QUIT основнойпрограмме
end_wm_check:
popa
xor eax,eax; вернуть 0
leave
ret16
; процедура set_title
; устанавливает новый заголовок для основногоокна
set_title:
pushesi
pushedi
movedi,offset window_title
cmpbyte ptr flag_untitled,1; если у файла нетимени
jeuntitled; использовать Untitled
movesi,ofn. lpstrFile; [ESI] — имя файла спутём
movzxeax,ofn. nFileOffset; eax — начало именифайла
addesi,eax
copy_filename:
lodsb; скопирем файл побайтово в название окна
testal,al
jzadd_progname; пока не встретится ноль
stosb
jmp short copy_filename
add_progname:
movdword ptr [edi],' — '; припишем минус
addedi,3
movesi,offset c_w_name
movecx,9; и название программы
rep movsb
popedi
popesi
pushoffset window_title
pushesi; идентификатор окна
callSetWindowText
ret
untitled:
movdword ptr [edi],'itnU'; допишем «Unti»
movdword ptr [edi+4],'delt'; допишем «tled»
addedi,8
jmp short add_progname
; процедура save_contents
; EBX=0, ESI=hWnd
save_contents:
; спросим редактор, изменялся ли текст
pushebx
pushebx
pushEM_GETMODIFY
pushh_editwindow
callSendMessage
testeax,eax
jznot_modified
; спросим пользователя, сохранять ли его
pushMB_YESNO + MB_ICONWARNING
pushoffset c_w_name
pushoffset changes_msg
pushesi
callMessageBox
cmpeax, IDYES
jnenot_modified
; сохраним его
callh_idm_save
not_modified:
ret
win_proc endp
about_proc proc near
; параметры (с учётом push ebp)
ap_hDlg equ dword ptr [ebp+08h]
ap_uMsg equ dword ptr [ebp+0Ch]
ap_wParam equ dword ptr [ebp+10h]
ap_lParam equ dword ptr [ebp+14h]
pushebp
movebp,esp; создадим стековый кадр
cmpap_uMsg,WM_COMMAND
jnedont_proceed
cmpap_wParam, IDOK
jnedont_proceed
push1
pushap_hDlg
callEndDialog
dont_proceed:
xoreax,eax; not processed
leave
ret 16
about_proc endp
end_start
; comdlg32. inc
; включаемый файл с определениями функций изcomdlg32. dll
;
ifdef _TASM_
includelib import32. lib
; имена используемых функций
extrnGetOpenFileNameA: near
extrnGetSaveFileNameA: near
; присваивания для облегчения читаемости кода
GetOpenFileNameequGetOpenFileNameA
GetSaveFileNameequGetSaveFileNameA
else
includelib comdlg32. lib
; истинные имена используемых функций
extrn__imp__GetOpenFileNameA@4: dword
extrn__imp__GetSaveFileNameA@4: dword
; присваивания для облегчения читаемости кода
GetOpenFileNameequ__imp__GetOpenFileNameA@4
GetSaveFileNameequ__imp__GetSaveFileNameA@4
Endif
; def32. inc
; файл с определениями констант и типов дляпримеров под win32
; из winbase. h
STD_OUTPUT_HANDLEequ-11
OPEN_EXISTINGequ3
CREATE_ALWAYSequ2
GMEM_MOVEABLEequ2
GMEM_ZEROINITequ40h
; из windef. h
RECTstruc
leftdd?
topdd?
rightdd?
bottomdd?
RECTends
; из winerror. h
NO_ERRORequ0
ERROR_NO_MORE_ITEMSequ259
; из winnetwk. h
RESOURCEUSAGE_CONNECTABLEequ 1
RESOURCETYPE_ANYequ0
RESOURCE_CONNECTEDequ1
NTRESOURCE struc
dwScopedd?
dwTypedd?
dwDisplayTypedd?
dwUsagedd?
lpLocalNamedd?
lpRemoteNamedd?
lpCommentdd?
lpProviderdd?
NTRESOURCE ends
; из winnt. h
GENERIC_READequ80000000h
GENERIC_WRITEequ40000000h
FILE_SHARE_READequ1
FILE_SHARE_WRITEequ2
FILE_ATTRIBUTE_ARCHIVEequ20h
; из winuser. h
MB_OKequ0
MB_ICONINFORMATIONequ40h
IDC_ARROWequ32512
IDI_APPLICATIONequ32512
WS_OVERLAPPEDWINDOW equ0CF0000h
WM_DESTROYequ2
WM_COMMANDequ111h
WM_INITDIALOGequ110h
WM_CLOSEequ10h
CS_HREDRAWequ2
CS_VREDRAWequ1
CW_USEDEFAULTequ80000000h
SW_SHOWNORMALequ1
COLOR_WINDOWequ5
BN_CLICKEDequ0
WNDCLASSEXstruc
cbSizedd?
styledd?
lpfnWndProcdd?
cbClsExtradd?
cbWndExtradd?
hInstancedd?
hIcondd?
hCursordd?
hbrBackgrounddd?
lpszMenuNamedd?
lpszClassNamedd?
hIconSmdd?
WNDCLASSEXends
MSGstruc
hwnddd?
messagedd?
wParamdd?
lParamdd?
timedd?
ptdd?
MSGends
; из winuser. h
WM_CREATEequ1
WM_ACTIVATEequ6
WM_SETTEXTequ0Ch
WM_GETTEXTequ0Dh
WM_CUTequ300h
WM_COPYequ301h
WM_PASTEequ302h
WM_CLEARequ303h
WM_UNDOequ304h
WM_SIZEequ5
WS_VISIBLEequ10000000h
WS_CHILDequ40000000h
WS_EX_CLIENTEDGE equ200h
ES_LEFTequ0
ES_MULTILINEequ4
ES_AUTOHSCROLLequ80h
ES_AUTOVSCROLLequ40h
EM_GETHANDLEequ0BDh
EM_GETMODIFYequ0B8h
EM_SETMODIFYequ0B9h
EM_UNDOequ0C7h
EM_SETSELequ0B1h
MB_YESNOequ4
MB_ICONWARNINGequ30h
IDOKequ1
IDYESequ6
; из commdlg. h
OFN_PATHMUSTEXISTequ800h
OFN_FILEMUSTEXISTequ1000h
OFN_EXPLORERequ80000h
OFN_OVERWRITEPROMPTequ2
OPENFILENAMEstruc
lStructSizedd?
hwndOwnerdd?
_hInstancedd?
lpstrFilterdd?
lpstrCustomFilter dd?
nMaxCustFilterdd?
nFilterIndexdd?
lpstrFiledd?
nMaxFiledd?
lpstrFileTitledd?
nMaxFileTitledd?
lpstrInitialDirdd?
lpstrTitledd?
Flagsdd?
nFileOffsetdw?
nFileExtensiondw?
lpstrDefExtdd?
lCustDatadd?
lpfnHookdd?
lpTemplateNamedd?
OPENFILENAMEends
; user32. inc
; включаемый файл с определениями функций изuser32. dll
;
ifdef _TASM_
includelib import32. lib
; имена используемых функций
extrnMessageBoxA: near
extrnDispatchMessageA: near
extrnTranslateMessage: near
extrnGetMessageA: near
extrnLoadIconA: near
extrnUpdateWindow: near
extrnShowWindow: near
extrnCreateWindowExA: near
extrnDefWindowProcA: near
extrnPostQuitMessage: near
extrnRegisterClassExA: near
extrnLoadCursorA: near
extrnLoadMenuA: near
extrnDestroyWindow: near
extrnDialogBoxParamA: near
extrnGetDlgItem: near
extrnSetFocus: near
extrnGetDlgItemTextA: near
extrnSetDlgItemTextA: near
extrnEndDialog: near
extrnLoadAcceleratorsA: near
extrnTranslateAccelerator: near
extrnSendMessageA: near
extrnSetWindowTextA: near
extrnMoveWindow: near
extrnGetClientRect: near
extrnGlobalUnlock: near
; присваивания для облегчения читаемости кода
MessageBoxequMessageBoxA
DispatchMessageequDispatchMessageA
GetMessageequGetMessageA
LoadIconequLoadIconA
CreateWindowExequCreateWindowExA
DefWindowProcequDefWindowProcA
RegisterClassExequRegisterClassExA
LoadCursorequLoadCursorA
LoadMenuequLoadMenuA
DialogBoxParamequDialogBoxParamA
GetDlgItemTextequGetDlgItemTextA
SetDlgItemTextequSetDlgItemTextA
LoadAccelerators equLoadAcceleratorsA
SendMessageequSendMessageA
SetWindowTextequSetWindowTextA
else
includelib user32. lib
; истинные имена используемых функций
extrn__imp__MessageBoxA@16: dword
extrn__imp__DispatchMessageA@4: dword
extrn__imp__TranslateMessage@4: dword
extrn__imp__GetMessageA@16: dword
extrn__imp__LoadIconA@8: dword
extrn__imp__UpdateWindow@4: dword
extrn__imp__ShowWindow@8: dword
extrn__imp__CreateWindowExA@48: dword
extrn__imp__DefWindowProcA@16: dword
extrn__imp__PostQuitMessage@4: dword
extrn__imp__RegisterClassExA@4: dword
extrn__imp__LoadCursorA@8: dword
extrn__imp__LoadMenuA@8: dword
extrn__imp__DestroyWindow@4: dword
extrn__imp__DialogBoxParamA@20: dword
extrn__imp__GetDlgItem@8: dword
extrn__imp__SetFocus@4: dword
extrn__imp__GetDlgItemTextA@16: dword
extrn__imp__SetDlgItemTextA@12: dword
extrn__imp__EndDialog@8: dword
extrn__imp__LoadAcceleratorsA@8: dword
extrn__imp__TranslateAccelerator@12: dword
extrn__imp__SendMessageA@16: dword
extrn__imp__SetWindowTextA@8: dword
extrn__imp__MoveWindow@24: dword
extrn__imp__GetClientRect@8: dword
extrn__imp__GlobalUnlock@4: dword
; присваивания для облегчения читаемости кода
MessageBoxequ__imp__MessageBoxA@16
DispatchMessageequ__imp__DispatchMessageA@4
TranslateMessage equ__imp__TranslateMessage@4
GetMessageequ__imp__GetMessageA@16
LoadIconequ__imp__LoadIconA@8
UpdateWindowequ__imp__UpdateWindow@4
ShowWindowequ__imp__ShowWindow@8
CreateWindowExequ__imp__CreateWindowExA@48
DefWindowProcequ__imp__DefWindowProcA@16
PostQuitMessageequ__imp__PostQuitMessage@4
RegisterClassExequ__imp__RegisterClassExA@4
LoadCursorequ__imp__LoadCursorA@8
LoadMenuequ__imp__LoadMenuA@8
DestroyWindowequ__imp__DestroyWindow@4
DialogBoxParamequ__imp__DialogBoxParamA@20
GetDlgItemequ__imp__GetDlgItem@8
SetFocusequ__imp__SetFocus@4
GetDlgItemTextequ__imp__GetDlgItemTextA@16
SetDlgItemTextequ__imp__SetDlgItemTextA@12
EndDialogequ__imp__EndDialog@8
LoadAccelerators equ__imp__LoadAcceleratorsA@8
TranslateAccelerator equ__imp__TranslateAccelerator@12
SendMessageequ__imp__SendMessageA@16
SetWindowTextequ__imp__SetWindowTextA@8
MoveWindowequ__imp__MoveWindow@24
GetClientRectequ__imp__GetClientRect@8
GlobalUnlockequ__imp__GlobalUnlock@4
Endif
 // winpad95. rc
 // файл ресурсов для программы winpad95. asm
 //
 // идентификаторы сообщений от пунктов меню
#define IDM_NEW0x100L
#define IDM_OPEN0x101L
#define IDM_SAVE0x102L
#define IDM_SAVEAS0x103L
#define IDM_EXIT0x104L
#define IDM_ABOUT0x105L
#define IDM_UNDO0x106L
#define IDM_CUT0x107L
#define IDM_COPY0x108L
#define IDM_PASTE0x109L
#define IDM_CLEAR0x10AL
#define IDM_SETSEL0x10BL
 // идентификаторы основных ресурсов
#define ID_MENU0x700L
#define ID_ACCEL 0x701L
#define ID_ABOUT0x702L
 // если есть иконка — можно раскомментироватьследующие две строки
 // #define ID_ICON 0x703L
 // ID_ICON ICON «winpad95. ico»
 // основное меню
ID_MENU MENU DISCARDABLE {
POPUP "&File" {
MENUITEM "&New\tCtrl+N", IDM_NEW
MENUITEM "&Open… \tCtrl+O", IDM_OPEN
MENUITEM "&Save\tCtrl+S", IDM_SAVE
MENUITEM «Save &As… \tCtrl+Shift+S»,IDM_SAVEAS
MENUITEM SEPARATOR
MENUITEM «E&xit\tCtrl+Q», IDM_EXIT
}
POPUP "&Edit" {
MENUITEM "&Undo\tCtrl-Z", IDM_UNDO
MENUITEM SEPARATOR
MENUITEM «Cu&t\tCtrl-X», IDM_CUT
MENUITEM "&Copy\tCtrl-C", IDM_COPY
MENUITEM "&Paste\tCtrl-V", IDM_PASTE
MENUITEM "&Delete\tDel", IDM_CLEAR
MENUITEM SEPARATOR
MENUITEM «Select &All\tCtrl-A», IDM_SETSEL
}
POPUP "&Help" {
MENUITEM «About», IDM_ABOUT
}
}
 // комбинации клавиш
ID_ACCEL ACCELERATORS DISCARDABLE {
«N», IDM_NEW, CONTROL, VIRTKEY
«O», IDM_OPEN, CONTROL, VIRTKEY
«S», IDM_SAVE, CONTROL, VIRTKEY
«S», IDM_SAVEAS, CONTROL, SHIFT,VIRTKEY
«Q», IDM_EXIT, CONTROL, VIRTKEY
«Z», IDM_UNDO, CONTROL, VIRTKEY
«A», IDM_SETSEL, CONTROL, VIRTKEY
}
 // все эти определения можно заменить на#include
#define DS_MODALFRAME0x80L
#define DS_3DLOOK4
#define WS_POPUP0x80000000L
#define WS_CAPTION0xC00000L
#define WS_SYSMENU0x80000L
#define IDOK1
#define IDC_STATIC-1
#define IDI_APPLICATION 32512
#define WS_BORDER0x800000L
 // стандартный диалог «About»
ID_ABOUT DIALOG DISCARDABLE 0,0,125,75
STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP |WS_CAPTION | WS_SYSMENU
CAPTION «About Asmpad95»
{
ICONIDI_APPLICATION, IDC_STATIC,12,15,21, 20
CTEXT«Asmpad95», IDC_STATIC,0,30,40,8
CTEXT«Prototype notepad-style editor forWindows 95 written entirely in assembly language»,
IDC_STATIC,45,10,70,45,WS_BORDER
DEFPUSHBUTTON«OK», IDOK,40,60,40,12
}


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :

Реферат Работа выпрямителей
Реферат Экологический мониторинг атмосферного воздуха, состояние биоты и перспективы формирования защитных озеленительных посадок на антропогенных территориях города
Реферат Сущность,структура и функции семьи.
Реферат Проектне фінансове планування
Реферат Культура понятие и сущность
Реферат Статистика фондового рынка
Реферат Печатные излучатели
Реферат Расчет трехкорпусной выпарной установки непрерывного действия
Реферат Факторы формирования, регуляции и саморегуляции индивидуального стиля деятельности (ИСД)
Реферат Анализ основных средств предприятия на примере ОАО Находка - Торгмротранс Сервис
Реферат Macbeth Essay Research Paper William ShakespeareWilliam Shakespeare
Реферат Дело царевича Алексея
Реферат Joke Essay Research Paper Theres a penguin
Реферат Билеты госэказамена
Реферат Articles Of Confederation Essay Research Paper Soon