Hello ;)
Another time I scratch my head in :::confusion:::
I have a dialog box... but while this dialog displays the code invoking this dialog keeps on running... Why's that?
I'm tired it's 1:33am... what did I forgot as the code running after depends on flags I set up in this dialog..
#whoosh#
Sorry, I had posted a message, but totally misread your question. :)
It's probably because you're stuck in an infinite (or nearly infinite) loop. Without any code to see, though, there's no way to make a diagnosis of exactly what's wrong with your programming. :) I would say, go through it step by step, keeping track of data and whatnot until you find the cause. Sometimes, it's a simple slip up (like using a local variable and thinking it's a global) that'll kill you. :)
This message was edited by Racso, on 3/22/2001 9:13:13 PM
"..the code invoking this dialog keeps on running"
Do you mean you wanted a Modal box?
"HEY, YOU DUMB USER THERE! Answer this box before you do anything else to my lovely program!"
That sort of thing?
You create a MODELESS dialog box by using the CreateDialog function. You create a MODAL dialog box by using the DialogBox function.
Which one did you use?
--------------------------
"Now, son, you don’t want to drink beer. That’s for daddys, and kids with fake I.D.s."
Yes.. I need a "Hey you DUMB User, set the Flags before the flow who invoked this Dialog can continue"
Basically a Modal one... which sounds easy.
I'll post what I tried...
If called in the main window loop
invoke DialogBoxParam,hInstance,ADDR JimmyDLGName,hwnd,ADDR JimmyDLGProc,NULL
invoke MessageBox,0,ADDR AppName,ADDR AppName,0
it first displays the dialog, then after closing - it displays the MessageBox.. exactly how I want it to be.
If I call the same in a procedure where I need it it continues happily it's code...
Here is the DialogProc:
JimmyDLGProc proc hDlg:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD
.IF uMsg==WM_INITDIALOG
invoke SetDlgItemText,hDlg,IDC_EDIT,ADDR szTemp
.ELSEIF uMsg==WM_CLOSE
mov GlobalFlag,FALSE
invoke EndDialog,hDlg,0
.ELSEIF uMsg==WM_COMMAND
mov eax,wParam
.IF eax==IDC_DoThis
mov GlobalFlag,0
invoke EndDialog,hDlg,0
.ELSEIF eax==IDC_DoThat
mov GlobalFlag,1
invoke EndDialog,hDlg,0
.ELSEIF eax==IDC_CANCEL
mov GlobalFlag,FALSE
invoke EndDialog,hDlg,0
.ENDIF
.ELSE
mov eax,FALSE
ret
.ENDIF
mov eax,TRUE
ret
JimmyDLGProc endp
(I know it's not really good looking right now with these EndDialogs but I tried to reduce it now as my Dialog proc is huge)
I see that it continues in the code as szTemp has always a different string in it which gets displayed at the EditField when getting the WM_INITDIALOG.
So, for the moment my App continues running lightning fast thru the code after invoking DialogBoxParam and popping up dialog boxes one after another.
Before I forget.. this is my DialogBox.rc
JimmyDlg DIALOG LOADONCALL PURE 9, 15, 171, 96
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | DS_CENTER
CAPTION "Choose Wisely My Friend..."
FONT 10, "Times New Roman"
{
PUSHBUTTON "DoThis", IDC_DoThis, 9, 62, 50, 11, WS_TABSTOP
PUSHBUTTON "DoThat", IDC_DoThat, 108, 62, 50, 11, WS_TABSTOP
CTEXT "What ya want to do today with it?", -1, 4, 9, 163, 8
EDITTEXT IDC_EDIT, 9, 26, 153, 15, ES_CENTER | WS_VISIBLE | WS_BORDER | ES_READONLY
CTEXT "Pushing Cancel will ignore options for now.", -1, 7, 48, 155, 8
PUSHBUTTON "CANCEL", IDC_CANCEL, 12, 80, 145, 11, WS_TABSTOP
}
I wonder why it works how I want it to be when invoked in the mainloop from a Menu (testing purposes) but acts completely different when invoked in my proc far far away from the mainloop.
This message was edited by JimmyClif, on 3/23/2001 9:50:49 AM
(I just made the lines smaller-ernie)
This message was edited by Ernie, on 3/23/2001 12:32:55 PM