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
