I did the test.  I changed the OK ‘button’ to a ‘flatbutton’.  I also had to 
change “action” to “flat_action”.  It didn’t make any difference.  The 
application appeared to have received a WM_QUIT message when you click the OK 
button, exactly as before.

 

Couple more things: I wondered if setting the NATIVEPARENT window handle of the 
dialog would make a difference.  I was able to get that to work using 
“iup.SetAttribute(dlg, "NATIVEPARENT", hWnd)”, but it didn’t make any 
difference to the problem.

 

I said in an earlier email that code following dlg:destroy never gets called if 
you click the OK button.  I now think that that’s wrong.  I think the code does 
get called, but it’s hard to tell and hard to test because the application is 
dying fast (as the WM_QUIT message has already been posted).  So the fact that 
the lua_pcallk command rets 0 (no error) is probably of no significance.

 

For interest, if I run the script under a debugger, I have to crank the message 
pump myself, so I call CMyApp::PumpMessage at various points so that the 
editor/debugger gets a chance to process messages.  The code tests to see if 
CMyApp::PumpMessage returns false.  It should only do this if a WM_QUIT message 
has been received.  And if you click the OK button, CMyApp::PumpMessage does 
indeed return false, seemingly during the call to dlg:destroy (i.e. before the 
next script line has been processed, as far as I can see).

 

If I don’t run the script under the debugger, I don’t crank the message pump.  
Instead there’s a message loop in the bowels of the MFC.  But that calls 
CWinApp::ExitInstance if the PumpMessage call returns false.  I can put a 
breakpoint in my applications ExitInstance method call and this seemingly gets 
called exactly when you would expect – i.e. in the same circumstances that 
CMyApp::PumpMessage in the editor’s message crank would return false.

 

In my view, the big clue is that iup.GetParam  and iup.Alarm both work fine 
with no problems.  What is it that they are doing which is different to what my 
script is doing?

 

Simon

 

 

From: Antonio Scuri [mailto:[email protected]] 
Sent: 19 June 2019 8:33 PM
To: IUP discussion list.
Subject: Re: [Iup-users] FW: IUP crash in Debug Mode

 

  Ok. 

 

  Can you make a simple test? To replace IupButton by IupFlatButton and check 
if there is any difference?

 

Best,

Scuri

 

 

Em qua, 19 de jun de 2019 às 15:05, Simon Orde 
<[email protected]> escreveu:

… sorry – yet more clarification.  

 

When I said “if I modify the script to add something (a message box) say, after 
the call to “dlg:destroy()”, the message box code never gets called if I call 
dlg:destroy.”  

 

Again – what I meant is that if you click on the ‘OK’ button in the dialog, the 
script exits at the call to dlg:destroy().  But it doesn’t exit there if I 
closed the dialog by clicking on the ‘X’ in the dialog’s top-right corner.  In 
that case, the script continues to execute after the call to dlg:destroy() and 
the message box is displayed.

 

Simon

 

 

From: Simon Orde [mailto:[email protected]] 
Sent: 19 June 2019 6:57 PM
To: 'IUP discussion list.'
Subject: RE: [Iup-users] IUP crash in Debug Mode

 

To be precise, when I said “If I run the iup dialog script from my previous 
post… in (Visual C++) debug mode … it will close the application”, I meant: “… 
it will close the application if you click on the OK button in the dialog”.  It 
will not close the application if you click on the ‘X’ in the dialog’s 
top-right corner.   Just wanted to be 100% clear about that.

 

Simon

_______________________________________________
Iup-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/iup-users

_______________________________________________
Iup-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/iup-users

Reply via email to