Assembler - язык неограниченных возможностей


Полноценное приложение - часть 2


// все эти определения можно заменить на #include <winuser.h> #define DS_MODALFRAME 0x80L #define DS_3DLOOK 4 #define WS_POPUP 0x80000000L #define WS_CAPTION 0xC00000L #define WS_SYSMENU 0x80000L #define IDOK 1 #define IDC_STATIC -1 #define IDI_APPLICATION 32512 #define WS_BORDER 0x800000L

// стандартный диалог "About" ID_ABOUT DIALOG DISCARDABLE 0, 0, 125, 75 STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "About Asmpad95" { ICON IDI_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_BORDER DEFPUSHBUTTON "OK",IDOK,35,60,40,10 }

Теперь рассмотрим текст программы:

; winpad95.asm ; графическое win32-приложение - текстовый редактор ; include def32.inc include user32.inc include kernel32.inc include comdlg32.inc

ID_MENU equ 700h ID_ACCEL equ 701h ID_ABOUT equ 702h

MAXSIZE equ 260 ; максимальное имя файла MEMSIZE equ 65535 ; максимальный размер временного буфера в памяти

EditID equ 1

.386 .model flat .const c_w_name db "Asmpad95",0 ; это и имя класса, и имя основного окна edit_class db "edit",0 ; предопределенное имя класса для редактора changes_msg db "Save changes?",0 filter_string db "All Files",0,'*.*',0 ; маски для Get * FileName db "Text Files",0, '*.txt',0,0

.data ; структура, использующаяся Get * FileName ofn OPENFILENAME <SIZE ofn,?,?,offset filter_string,?,?,?,offset buffer,\ MAXSIZE,0,?,?,?,?,?,?,0,?,?,?> ; структура, описывающая наш основной класс wc WNDCLASSEX <SIZE WNDCLASSEX,CS_HREDRAW or CS_VREDRAW,offset win_proc,0,\ 0,?,?,?,COLOR_WINDOW+1,ID_MENU,offset c_w_name,0> flag_untitled db 1 ; = 1, если имя файла не определено (новый файл)

.data? h_editwindow dd ? ; идентификатор окна редактора h_accel dd ? ; идентификатор массива акселераторов p_memory dd ? ; адрес буфера в памяти SizeReadWrite dd ? msg_ MSG <> rec RECT <> buffer db MAXSIZE dup(?) ; имя файла window_title db MAXSIZE dup(?), 12 dup(?)




Начало  Назад  Вперед