I have so far tried message box with yesno option
And seen there is dialog boxes with 3 buttons
So is it subclass one dialog box, to Get 4-5 custom buttons
I seen you can get exclamation mark,also possible to choose any icon?
I have console mode code that input 4-5 differ options from text menu,by key presses
Or maybe option to show/hide usual buttons when needed?
Message pump,is it possible to subclass it or something else, to have basic simple one in the main asm file and in different usage of window in. Inc files?
For example a paint program, has several different windows,acting very different, so my guess they have each their own "event handler", otherwise a single big wndproc will turn out messy switches and IF s nested
Magnus,
A MessageBox() is generally not accessible for subclassing, I have long ago seen hack that seemed to work but they are ugly and unreliable. You will do much better with a dialog editor where you can more or less do anything you like. They are easy enough to code in both 32 and 64 bit so its no big deal.
Quote from: hutch-- on May 15, 2020, 11:01:37 PM
Magnus,
A MessageBox() is generally not accessible for subclassing, I have long ago seen hack that seemed to work but they are ugly and unreliable. You will do much better with a dialog editor where you can more or less do anything you like. They are easy enough to code in both 32 and 64 bit so its no big deal.
Thanks
Hi daydreamer,
You can subclass a message box but Hutch is right, it's better to prefer a dialog box. Attached is a quick example.
Quote from: Vortex on May 15, 2020, 11:29:13 PM
Hi daydreamer,
You can subclass a message box but Hutch is right, it's better to prefer a dialog box. Attached is a quick example.
thanks
Hi daydreamer,
Thanks. Again, defining a dialog box is more precise and practical. My example is just a coding exercise.
Custom message box with Windows hooks :
http://www.catch22.net/tuts/win32/custom-messagebox#
Quote from: Vortex on May 16, 2020, 06:13:27 PM
Hi daydreamer,
Thanks. Again, defining a dialog box is more precise and practical. My example is just a coding exercise.
Custom message box with Windows hooks :
http://www.catch22.net/tuts/win32/custom-messagebox#
thanks for the link :thumbsup:
apparantly you can do all kinds of things with popup window,tiny image instead of ok,multiple lines of text,something that looks like richedit control with scroll bar for lots of text
popup window with text mixed with several images
(inspiration from HMM III game)
Hi daydreamer
Maybe this post is what you're looking for, or at least it comes close.
http://masm32.com/board/index.php?topic=8560.0 (http://masm32.com/board/index.php?topic=8560.0)
Biterider
dont know why button gets blank
first try at generate random items and gold in a chest,probably can do better ways todo it
sometimes funny mix of random items/materials
align 16
tchest db " ",13,10
tchest2 db "random item2 ",13,10
tchest3 db "random item3 ",13,10
tchest4 db "random item4 ",13,10
tmoney db "0000 gold ",13,10
db 0,0,0,0
quest1 db "Collect 00x Game pieces",13,10
db "dropped in dungeon by M"
qsolved1 db 0,0 ;0,0 replaced with 13,10 when quest is solved
db "solved quest ",13,10
db "reward",13,10
db "200 gold",13,10
db "gold key",13,10
db 0,0
;--------------------------------------------------------------------------------------------
;Messagebox captions
;--------------------------------------------------------------------------------------------
szDisplayquest db "Quest",0
szDisplaychest db "treasure chest",0
szDisplayhammer db "Hammer",0
szDisplayinvent db "Inventory",0
;--------------------------------------------------------------------------------------------
;random items
;--------------------------------------------------------------------------------------------
align 16
randitem db "cloak " ;0 random items list
db "boots "
db "armour "
db "helmet "
db "shield "
db "sword "
db "necklace"
db "flute "
db "potion "
db "spirits "
db "beer "
db "wine "
db "water "
db "ring "
db "bracelet"
db "dress "
db "bones "
randmat db "platinum" ;0 random material list
db "leather "
db "bronze "
db "iron "
db "steel "
db "silk "
db "magic "
db "gold "
db "tin "
db "flashy "
db "sparkly "
db "wood "
db "wool "
db "mighty "
db "volfram "
db "Diamond "
db "ordinary"
db 256 dup(32)
.code
tchestp proc
LOCAL cnt:DWORD
LOCAL tmpchest:DWORD
LOCAL tmpgold:DWORD
mov cnt,4
lea eax,tchest
mov tmpchest,eax
rdtsc
invoke nseed, eax
invoke nrandom,999999999
lea ebx,tmoney
;mov [ebx],eax
and eax,0F0F0F0Fh ;mask out to get lower nibbles
add eax,"0000" ;ascii gold
mov ecx,eax
and ecx,07070707h;balance numbers
add ecx,"0000"
;add ecx,01010101h
rol ecx,16
.IF al>"9"
sub al,6
;mov al,"9"
.ENDIF
.IF ah>"9"
sub ah,6
.ENDIF
rol ecx,16
rol eax,16
.IF al>"9"
sub al,6
.ENDIF
.IF ah>"9"
sub ah,6
.ENDIF
lea esi,tmoney
mov [esi],eax
@@L1:
invoke nrandom,999999999
and eax,0F0F0F0Fh ;nibbles
;.IF al>7 ;conditionals if less than 16 items/materials
;mov al,8
;.ENDIF
;.IF ah>7
;mov ah,8
;.ENDIF
mov ebx,0
mov edx,0
mov bl,al
mov dl,ah
.IF cnt==3
lea edi,tchest3
.ENDIF
.IF cnt==2
lea edi,tchest2
.ENDIF
.IF cnt==1
lea edi,tchest
.ENDIF
.IF cnt==4
lea edi,tchest4
.ENDIF
;lea edi,tchest ;tmpchest ;tchest
lea eax,[randmat+ebx*8]
movq XMM0,[eax] ;random material for item
movq [edi],XMM0
add edi,8
lea eax,[randitem+edx*8]
movq XMM1,[eax]
movq [edi],XMM1
dec cnt
jne @@L1
invoke MessageBox,hWnd,
ADDR tchest,
ADDR szDisplaychest,MB_OK
lea ebx,tmoney
mov eax,[ebx]
sub eax,"0000"
bswap eax ;swap lowest digits with highest digits
mov esi,eax
and eax,0f0fh ;lowest digit(s)
aad ;ah*10+al
mov ebx,goldc
add ebx,eax ;add digit 1 and 2
mov eax,esi
rol eax,16
and eax,0f0fh
aad ;ah*10+al
mov edi,100
xor edx,edx
mul edi
add ebx,eax ;add digit 3 and 4
mov goldc,ebx
mov eax,numberit
add eax,4
mov numberit,eax
ret
tchestp endp