Автор: Пользователь скрыл имя, 15 Октября 2013 в 21:46, курсовая работа
Тепер комп'ютери відіграють у житті людини все більшу та більш роль. Раніше, коли ще не було комп'ютерів, чи вони були мало розповсюдженні, все робилося вручну. Коли комп'ютери одержали широке розповсюдження, комп'ютер став допомагати людині, бо він може багато операцій робити набагато швидше, ніж людина.
Інформація - цінна річ, тому для її збереження в сучасному суспільстві використовують все частіше персональний комп`ютер. При перегляді текстових файлів виникає потреба в зручних в користуванні та розумінні програм переглядачів текстових файлів.
1. Вступ
2. Постановка задачі
3. Обґрунтування вибору методів розв'язку задачі
4. Алгоритм програми
5. Реалізація програми
6. Системні вимоги
7. Інструкція для користувача
8. Висновки
9. Використана література
Додаток
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
; присваивания для облегчения читаемости кода
GetOpenFileNameequGetOpenFileN
GetSaveFileNameequGetSaveFileN
else
includelib comdlg32. lib
; истинные имена используемых функций
extrn__imp__GetOpenFileNameA@4
extrn__imp__GetSaveFileNameA@4
; присваивания для облегчения читаемости кода
GetOpenFileNameequ__imp__
GetSaveFileNameequ__imp__
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
DispatchMessageequDispatchMess
GetMessageequGetMessageA
LoadIconequLoadIconA
CreateWindowExequCreateWindowE
DefWindowProcequDefWindowProcA
RegisterClassExequRegisterClas
LoadCursorequLoadCursorA
LoadMenuequLoadMenuA
DialogBoxParamequDialogBoxPara
GetDlgItemTextequGetDlgItemTex
SetDlgItemTextequSetDlgItemTex
LoadAccelerators equLoadAcceleratorsA
SendMessageequSendMessageA
SetWindowTextequSetWindowTextA
else
includelib user32. lib
; истинные имена используемых функций
extrn__imp__MessageBoxA@16: dword
extrn__imp__DispatchMessageA@4
extrn__imp__TranslateMessage@4
extrn__imp__GetMessageA@16: dword
extrn__imp__LoadIconA@8: dword
extrn__imp__UpdateWindow@4: dword
extrn__imp__ShowWindow@8: dword
extrn__imp__CreateWindowExA@48
extrn__imp__DefWindowProcA@16: dword
extrn__imp__PostQuitMessage@4: dword
extrn__imp__RegisterClassExA@4
extrn__imp__LoadCursorA@8: dword
extrn__imp__LoadMenuA@8: dword
extrn__imp__DestroyWindow@4: dword
extrn__imp__DialogBoxParamA@20
extrn__imp__GetDlgItem@8: dword
extrn__imp__SetFocus@4: dword
extrn__imp__GetDlgItemTextA@16
extrn__imp__SetDlgItemTextA@12
extrn__imp__EndDialog@8: dword
extrn__imp__LoadAcceleratorsA@
extrn__imp__
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__
DispatchMessageequ__imp__
TranslateMessage equ__imp__TranslateMessage@4
GetMessageequ__imp__
LoadIconequ__imp__LoadIconA@8
UpdateWindowequ__imp__
ShowWindowequ__imp__
CreateWindowExequ__imp__
DefWindowProcequ__imp__
PostQuitMessageequ__imp__
RegisterClassExequ__imp__
LoadCursorequ__imp__
LoadMenuequ__imp__LoadMenuA@8
DestroyWindowequ__imp__
DialogBoxParamequ__imp__
GetDlgItemequ__imp__
SetFocusequ__imp__SetFocus@4
GetDlgItemTextequ__imp__
SetDlgItemTextequ__imp__
EndDialogequ__imp__EndDialog@8
LoadAccelerators equ__imp__LoadAcceleratorsA@8
TranslateAccelerator equ __imp__TranslateAccelerator@12
SendMessageequ__imp__
SetWindowTextequ__imp__
MoveWindowequ__imp__
GetClientRectequ__imp__
GlobalUnlockequ__imp__
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 <winuser. h>
#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 for Windows 95 written entirely in assembly language",
IDC_STATIC,45,10,70,45,WS_
DEFPUSHBUTTON"OK", IDOK,40,60,40,12
}