Страница 5 из 5
Резюме Для того, чтобы писать полноценные приложения под Win32 требуется не так много: - собственно компилятор и компоновщик (я использую связку TASM32 и TLINK32 из пакета TASM 5.0). Перед использованием рекомендую "наложить" patch, на данный пакет. Patch можно взять на site www.borland.com
- редактор и компилятор ресурсов (я использую Developer Studio и brcc32.exe);
- выполнить перетрансляцию header файлов с описаниями процедур, структур и констант API Win32 из нотации принятой в языке Си, в нотацию выбранного режима ассемблера: Ideal или MASM.
В результате у Вас появится возможность писать лёгкие и изящные приложения под Win32, с помощью которых Вы сможете создавать и визуальные формы, и работать с базами данных, и обслуживать коммуникации, и работать multimedia инструментами. Как и при написании программ под DOS, у Вас сохраняется возможность наиболее полного использования ресурсов процессора, но при этом сложность написания приложений значительно снижается за счёт более мощного сервиса операционной системы, использования более удобной системы адресации и весьма простого оформления программ. Приложение 1. Файлы, необходимые для первого примера Файл констант ресурсов resource.inc IDD_DIALOG=65; 101 IDR_NAME=3E8; 1000 IDC_STATIC=-1 Файл заголовков resource.h #define IDD_DIALOG 101 #define IDR_NAME 1000 #define IDC_STATIC Файл определений dlg.def NAMETEST DESCRIPTION'Demo dialog' EXETYPEWINDOWS EXPORTSDlgProc@1 Файл компиляции makefile # Make file for Demo dialog # make -B
NAME= dlg OBJS= $(NAME).obj DEF= $(NAME).def RES= $(NAME).res
TASMOPT=/m3 /mx /z /q /DWINVER=0400 /D_WIN32_WINNT=0400
!if $d(DEBUG) TASMDEBUG=/zi LINKDEBUG=/v !else TASMDEBUG=/l LINKDEBUG= !endif
!if $d(MAKEDIR) IMPORT=$(MAKEDIR)\..\lib\import32 !else IMPORT=import32 !endif
$(NAME).EXE: $(OBJS) $(DEF) $(RES) tlink32 /Tpe /aa /c $(LINKDEBUG) $(OBJS),$(NAME),, $(IMPORT), $(DEF), $(RES)
.asm.obj: tasm32 $(TASMDEBUG) $(TASMOPT) $&.asm
$(RES): $(NAME).RC BRCC32 -32 $(NAME).RC Приложение 2. Файлы, необходимые для второго примера Файл описания mylib.def LIBRARYMYLIB DESCRIPTION'DLL EXAMPLE, 1997' EXPORTSHex2Str@1 Файл компиляции makefile # Make file for Demo DLL# make -B# make -B -DDEBUG for debug information
NAME= mylib OBJS= $(NAME).obj DEF= $(NAME).def RES= $(NAME).res
TASMOPT=/m3 /mx /z /q /DWINVER=0400 /D_WIN32_WINNT=0400
!if $d(DEBUG) TASMDEBUG=/zi LINKDEBUG=/v !else TASMDEBUG=/l LINKDEBUG= !endif
!if $d(MAKEDIR) IMPORT=$(MAKEDIR)\..\lib\import32 !else IMPORT=import32 !endif
$(NAME).EXE: $(OBJS) $(DEF) tlink32 /Tpd /aa /c $(LINKDEBUG) $(OBJS),$(NAME),, $(IMPORT), $(DEF)
.asm.obj: tasm32 $(TASMDEBUG) $(TASMOPT) $&.asm
$(RES): $(NAME).RC BRCC32 -32 $(NAME).RC Приложение 3. Файлы, необходимые для третьего примера Файл описания dmenu.def NAMETEST DESCRIPTION'Demo menu' EXETYPEWINDOWS EXPORTSWndProc@1 Файл ресурсов dmenu.rc #include "resource.h "MyMenu MENU DISCARDABLE BEGIN POPUP "Files" BEGIN MENUITEM "Open", ID_OPEN MENUITEM "Save", ID_SAVE MENUITEM SEPARATOR MENUITEM "Exit", ID_EXIT END MENUITEM "Other", 65535 END Файл заголовков resource.h #define MyMenu 101 #define ID_OPEN 40001 #define ID_SAVE 40002 #define ID_EXIT 40003 Файл компиляции makefile # Make file for Turbo Assembler Demo menu # make -B # make -B -DDEBUG -DVERNfor debug information and version NAME= dmenu OBJS= $(NAME).obj DEF= $(NAME).def RES= $(NAME).res !if $d(DEBUG) TASMDEBUG=/zi LINKDEBUG=/v !else TASMDEBUG=/l LINKDEBUG= !endif
!if $d(VER2) TASMVER=/dVER2 !elseif $d(VER3) TASMVER=/dVER3 !else TASMVER=/dVER1 !endif
!if $d(MAKEDIR) IMPORT=$(MAKEDIR)\..\lib\import32 !else IMPORT=import32 !endif
$(NAME).EXE: $(OBJS) $(DEF) $(RES) tlink32 /Tpe /aa /c $(LINKDEBUG) $(OBJS),$(NAME),, $(IMPORT), $(DEF), $(RES)
.asm.obj: tasm32 $(TASMDEBUG) $(TASMVER) /m /mx /z /zd $&.asm
$(RES): $(NAME).RC BRCC32 -32 $(NAME).RC |