
- •2014 Содержание
- •1. Назначение и область применения
- •2. Технические характеристики
- •2.1. Постановка задачи на разработку программы
- •2.2. Описание алгоритма и функционирования программы
- •2.2.1. Описание алгоритма работы программы
- •2.2.2. Алгоритм функционирования программы
- •2.3. Описание и обоснование выбора метода организации входных и выходных данных
- •3. Листинг программы
- •3.1. Листинг файла rsrc.Rc
- •3.2. Листинг файла qikpad.Asm
- •3.3. Листинг файла qikpad.Inc
- •3.4. Листинг файла toolbar.Asm
- •3.5. Листинг файла tbmacros.Asm
- •3.6. Листинг файла statusbr.Asm
- •3.7. Листинг файла filedlgs.Asm
- •3.8 Листинг make-файла
- •4. Результаты моделирования программы на эвм
3.5. Листинг файла tbmacros.Asm
TBextraData MACRO
mov tbb.fsState, TBSTATE_ENABLED
mov tbb.dwData, 0
mov tbb.iString, 0
ENDM
; ------------------------------
TBbutton MACRO bID, cID
mov tbb.iBitmap, bID
mov tbb.idCommand, cID
mov tbb.fsStyle, TBSTYLE_BUTTON
invoke SendMessage,hToolBar,TB_ADDBUTTONS,1,ADDR tbb
ENDM
; ------------------------------
TBblank MACRO
mov tbb.iBitmap, 0
mov tbb.idCommand, 0
mov tbb.fsStyle, TBSTYLE_SEP
invoke SendMessage,hToolBar,TB_ADDBUTTONS,1,ADDR tbb
ENDM
; ------------------------------
Create_Tool_Bar MACRO Wd, Ht
szText tbClass,"ToolbarWindow32"
invoke CreateWindowEx,0,
ADDR tbClass,
ADDR szDisplayName,
WS_CHILD or WS_VISIBLE,
0,0,500,40,
hWin,NULL,
hInstance,NULL
;; or TBSTYLE_FLAT
mov hToolBar, eax
invoke SendMessage,hToolBar,TB_BUTTONSTRUCTSIZE,sizeof TBBUTTON,0
mov ecx,Wd
mov eax,Ht
shl eax,16
mov ax, cx
mov bSize, eax
invoke SendMessage,hToolBar,TB_SETBITMAPSIZE,0,bSize
invoke SetBmpColor,hTbBmp
mov hTbBmp,eax
mov tbab.hInst, 0
m2m tbab.nID, hTbBmp
invoke SendMessage,hToolBar,TB_ADDBITMAP,12,ADDR tbab
invoke SendMessage,hToolBar,TB_SETBUTTONSIZE,0,bSize
ENDM
3.6. Листинг файла statusbr.Asm
Do_Status PROTO :DWORD
.data
hStatus dd 0
.code
; ##########################################################################
Do_Status proc hParent:DWORD
LOCAL sbParts[4] :DWORD
invoke CreateStatusWindow,WS_CHILD or WS_VISIBLE or \
SBS_SIZEGRIP,NULL, hParent, 200
mov hStatus, eax
mov [sbParts + 0], 125
mov [sbParts + 4], 250
mov [sbParts + 8], -1
invoke SendMessage,hStatus,SB_SETPARTS,3,ADDR sbParts
ret
Do_Status endp
3.7. Листинг файла filedlgs.Asm
GetFileName PROTO :DWORD, :DWORD, :DWORD
SaveFileName PROTO :DWORD, :DWORD, :DWORD
FillBuffer PROTO :DWORD, :DWORD, :BYTE
.data
szFileName db 260 dup(0)
ofn OPENFILENAME <> ; structure
.code
; ########################################################################
GetFileName proc hParent:DWORD,lpTitle:DWORD,lpFilter:DWORD
mov ofn.lStructSize, sizeof OPENFILENAME
m2m ofn.hWndOwner, hParent
m2m ofn.hInstance, hInstance
m2m ofn.lpstrFilter, lpFilter
m2m ofn.lpstrFile, offset szFileName
mov ofn.nMaxFile, sizeof szFileName
m2m ofn.lpstrTitle, lpTitle
mov ofn.Flags, OFN_EXPLORER or OFN_FILEMUSTEXIST or \
OFN_LONGNAMES
invoke GetOpenFileName,ADDR ofn
ret
GetFileName endp
; #########################################################################
SaveFileName proc hParent:DWORD,lpTitle:DWORD,lpFilter:DWORD
mov ofn.lStructSize, sizeof OPENFILENAME
m2m ofn.hWndOwner, hParent
m2m ofn.hInstance, hInstance
m2m ofn.lpstrFilter, lpFilter
m2m ofn.lpstrFile, offset szFileName
mov ofn.nMaxFile, sizeof szFileName
m2m ofn.lpstrTitle, lpTitle
mov ofn.Flags, OFN_EXPLORER or OFN_LONGNAMES
invoke GetSaveFileName,ADDR ofn
ret
SaveFileName endp
FillBuffer proc lpBuffer:DWORD,lenBuffer:DWORD,TheChar:BYTE
push edi
mov edi, lpBuffer ; address of buffer
mov ecx, lenBuffer ; buffer length
mov al, TheChar ; load al with character
rep stosb ; write character to buffer until ecx = 0
pop edi
ret
FillBuffer endp