; include windows.inc ;Konstanten-Definitionen
IDEAL
Char equ <Byte>
PChar equ <DWord>
THandle equ <Word>
HWnd equ <Word>
model small,windows pascal
P286
procdesc InitTask far
procdesc WaitEvent far Task:THandle
procdesc InitApp far Task:THandle
procdesc MessageBox far Parent:HWnd, Text:PChar, Title:PChar, MB_:Word
includelib "kernel"
includelib "user"
DATASEG
wZero dw ? ;Diese Variablen MSSEN sich
OldSP dw ? ;am Anfang des automatischen
OldSS dw ? ;Datensegmentes befinden,
LocalHeap dw ? ;da InitTask() hierhin diverse
AtomTable dw ? ;Werte kopiert
StackTop dw ?
StackMin dw ?
StackBottom dw ?
HInstance dw ? ;Diese globalen Variablen
HPrevInst dw ? ;sind einfach zweckmig
CmdLine dd ? ;(Pascal-like)
PrefixSeg = Word $-2 ;Man knnte sie aber auch gePUSHt
CmdShow dw ? ;einer WinMain()-Funktion bergeben
Hello$ db 'Hallo Welt!',0
CODESEG
proc Main
call far InitTask ;Task-Parameter holen
;Es scheint ein Bug zu sein, da im IDEAL-Modus das FAR erforderlich ist,
;ansonsten kommen leider die seltsamsten Fehlermeldungen.
;Aber ich wollte keinesfalls zurck zum MASM-Modus
or ax,ax
jz @@e
mov [HInstance],di ;sollte =DS sein
mov [HPrevInst],si
mov [CmdShow],dx
mov [word LOW CmdLine],bx
mov [word HIGH CmdLine],es
call far WaitEvent,0
; call far InitApp,[HInstance] ;Warteschlange einrichten
;Da unter Windows 3.1 [HInstance] = DS gilt, ist auch mglich:
call far InitApp,ds
or ax,ax
jz @@e
call far MessageBox,0,ds offset Hello$,[CmdLine],0
@@e: mov ax,4c00h
int 21h
endp
end Main
Vorgefundene Kodierung: UTF-8 | 0
|