[MASM] DialogBox verschijnt niet

Pagina: 1
Acties:

  • BoomSmurf
  • Registratie: Maart 2003
  • Laatst online: 13-06-2025
Ik heb hier een een .asm bestand wat ik aan de praat moet krijgen. Heb zelf alleen asm kennis als korte loops met veel data optimizen met mmx/sse als inline assembler in Delphi, geen dingen als dit. Ik zou een schermpje moeten krijgen wat effe wacht op een bepaalde window en dan wordt er wat code uitgevoerd. Ik krijg het schermpje echter al niet. De 'uit te voeren code', timers, etc heb ik er dus uitgerukt en geprobeerd puur de DialogBox tevoorschijn te toveren en zelfs dat gebeurd niet (ik neem dus ook aan dat hier de fout zit). Met vkdebug blijkt dat DlgProc zelfs totaal niet aangeroepen wordt dus ik vermoed verder dat de fout in 'invoke DialogBoxParam...' zit. Iemand enig idee wat het probleem is?

GAS:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
.386                                                  
.model flat,stdcall                                   
option casemap:none                                   
                                                      
include \masm32\include\windows.inc                 
include \masm32\include\user32.inc                   
include \masm32\include\kernel32.inc                
                                                      
includelib \masm32\lib\user32.lib                   
includelib \masm32\lib\kernel32.lib                 

DlgProc PROTO :DWORD,:DWORD,:DWORD,:DWORD             

.data

hInstance dd 0                                        
sometext  db "Some text",0                        

.data?

.const

IDM_EXIT        equ 32002                              

.code

start:

invoke GetModuleHandle, NULL                                       
mov    hInstance,eax                                                
invoke DialogBoxParam, hInstance, 100,NULL,addr DlgProc,NULL        
invoke ExitProcess,eax                                             

DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM    
    
.IF uMsg==WM_INITDIALOG                                           
                                                                                                                                                                                                           
  invoke SetDlgItemText, hWnd, 668, offset sometext                  
                 
.ELSEIF uMsg==WM_CLOSE

  invoke SendMessage,hWnd,WM_COMMAND,IDM_EXIT,0
                       
.ELSEIF uMsg==WM_COMMAND
               
  mov eax,wParam
     
  .IF ax==102
  
       invoke ExitProcess,0 
    
  .ENDIF

     
.ELSE

  mov eax,FALSE
  ret

.ENDIF
                                  
  mov eax,TRUE
  ret

DlgProc endp


end start

  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 20-04 15:44
Wat is de return waarde van DialogBoxParam? Wat geeft GetLastError als foutcode? Misschien is de resource niet goed gelinkt.

Verwijderd

Je programma die exit meteen na het aanmaken van je dialog (je programma heeft geen message loop).

voor wat uitleg zie iczelions tutorial over een dialog in win32asm

[ Voor 10% gewijzigd door Verwijderd op 01-11-2005 18:07 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

rremzie: DialogBoxParam spawnt een modal dialogbox met een eigen message loop. De functie returnt niet eerder dan de dialogbox is afgesloten. Dat er geen message loop is is dus logisch en heeft niets te maken met het probleem dat BoomSmurf heeft.

BoomSmurf: luister naar matthijsln, controleer gewoon even de return value van DialogBoxParam om een beter idee te krijgen wat er nou fout gaat.

[ Voor 51% gewijzigd door .oisyn op 01-11-2005 18:23 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • BoomSmurf
  • Registratie: Maart 2003
  • Laatst online: 13-06-2025
- effe niet nagedacht -

[ Voor 102% gewijzigd door BoomSmurf op 01-11-2005 19:37 . Reden: <-- n00b ]