1. Windows XP: message box with no other GUI does not work

A program which issues message boxes with no conventional graphical user interface and has worked on previous versions of Euphoria does not now produce any output unless a suitable DLL is opened. The following program opens a suitable DLL and works. However, if the open_dll statement is commented out it does not produce a message box.

include std\dll.e 
open_dll("comdlg32.dll")  -- or "EuWinGUI.DLL" or "libwxeu.dll" or "Graphics.dll" 
include std\win32\msgbox.e 
message_box("Trying\nmessage_box","Trial",MB_OK) 

I am using Euphoria version 4.0.0

The DLL doesn't even need to be used and most DLLs do not make it work.

I realise that my Windows XP system has also changed, so could someone else with an up-to-date Windows XP system try it and see if it gives similar results?

new topic     » topic index » view message » categorize

2. Re: Windows XP: message box with no other GUI does not work

I am sorry; I should have made that a ticket, which I have now done.

new topic     » goto parent     » topic index » view message » categorize

3. Re: Windows XP: message box with no other GUI does not work

Hello Arthur,

I remmed out the dll and it still works with XP eu. ver 4.

Don Cole

new topic     » goto parent     » topic index » view message » categorize

4. Re: Windows XP: message box with no other GUI does not work

dcole said...

Hello Arthur,

I remmed out the dll and it still works with XP eu. ver 4.

Don Cole

Are you using the final release?
I have reinstalled some earlier releases and have found that it works with release candidate 1 and the beta releases, but it doesn't work with release candidate 2 or the final release.

new topic     » goto parent     » topic index » view message » categorize

5. Re: Windows XP: message box with no other GUI does not work

ArthurCrump said...

Are you using the final release?
I have reinstalled some earlier releases and have found that it works with release candidate 1 and the beta releases, but it doesn't work with release candidate 2 or the final release.

I'm using Microsoft Windows XP
Professional
Version 2002
Service Pack 2

Don Cole

new topic     » goto parent     » topic index » view message » categorize

6. Re: Windows XP: message box with no other GUI does not work

dcole said...
ArthurCrump said...

Are you using the final release?
I have reinstalled some earlier releases and have found that it works with release candidate 1 and the beta releases, but it doesn't work with release candidate 2 or the final release.

I'm using Microsoft Windows XP
Professional
Version 2002
Service Pack 2

Don Cole

But what is the output of eui --version and eui -version ?

new topic     » goto parent     » topic index » view message » categorize

7. Re: Windows XP: message box with no other GUI does not work

With eui -v or eui --version I get something like:
Euphoria 4.0.0
...Managed memory
Revision date 2010-12-22 Id:115714454200

new topic     » goto parent     » topic index » view message » categorize

8. Re: Windows XP: message box with no other GUI does not work

ArthurCrump said...

With eui -v or eui --version I get something like:
Euphoria 4.0.0
...Managed memory
Revision date 2010-12-22 Id:115714454200

It say,

Euphoria Interpreter 4.0.0 Release Candidate 1 (r3951M)
Using Managed Memory

I'm not sure why they use a lower case r but capital M.

Don Cole

new topic     » goto parent     » topic index » view message » categorize

9. Re: Windows XP: message box with no other GUI does not work

Earlier I had said that I had created a ticket, but forgot to give the ticket number, which is ticket:598

Further information:
The return code from message_box is 0, which indicates an error, but getLastErr also returns 0.

I have also tried custom dialogs whic are supposed to resemble prompt_string.
These also only work when a suitable dll is opened.

I suspect that getSaveFileName will be similar.
I will try it and report.

new topic     » goto parent     » topic index » view message » categorize

10. Re: Windows XP: message box with no other GUI does not work

ArthurCrump said...

Earlier I had said that I had created a ticket, but forgot to give the ticket number, which is ticket:598

Further information:
The return code from message_box is 0, which indicates an error, but getLastErr also returns 0.

I have also tried custom dialogs which are supposed to resemble prompt_string.
These also only work when a suitable dll is opened.

I suspect that getSaveFileName will be similar.
I will try it and report.

getSaveFileName is in comdlg32.dll, which is one of the DLLs which makes message_box work, so it's no good trying that or any of the other dialogs provided in Windows XP. Those would also be on comdlg32.dll.

new topic     » goto parent     » topic index » view message » categorize

11. Re: Windows XP: message box with no other GUI does not work

demo\sanity.ex has two message_boxes which suffer from this problem. See ticket:598

new topic     » goto parent     » topic index » view message » categorize

12. Re: Windows XP: message box with no other GUI does not work

I tried out your little program. I am using Windows XP with all automatic updates and Euphoria 4.0.0. The two-line code worked for me.

new topic     » goto parent     » topic index » view message » categorize

13. Re: Windows XP: message box with no other GUI does not work

I know Matt has already comitted a fix by invoking InitCommonControlsEx(), but since this came up again... though I hesitate to send anyone off on a pointless wild goose chase...

Last week I stumbled across some code I added to my copy of arwen last September:

if 01 then  -- PL 05/09/2010 (the demo program edita/f.exw failed under exw 
            --                apparently because it didn't open_dll("shell32.dll")... ???) 
        createWindowParams = {dwExStyle,        -- extended style 
                              lpszClassName,    -- window class name 
                              lpszWindowName,   -- window caption or Button text etc.. 
                              dwStyle,          -- window style 
                              x,                -- initial x position 
                              y,                -- initial y position 
                              nWidth,           -- initial x size 
                              nHeight,          -- initial y size 
                              pHwnd,            -- parent window handle 
                              NULL,             -- window menu handle OR user id for child windows 
                              NULL,             -- program instance handle - Legacy of Win16 apps. 0 will work too. 
                              NULL}             -- creation parameters 
--?createWindowParams 
        ePrev = 0 
        while 1 do 
            hwnd = c_func(xCreateWindowEx, createWindowParams) 
            if hwnd!=NULL then exit end if 
--  ERROR_TLW_WITH_WSCHILD = 1406, 
--  ERROR_CANNOT_FIND_WND_CLASS = 1407, 
--  ERROR_CLASS_DOES_NOT_EXIST = 1411, 
            eCode = c_func(xGetLastError,{}) 
            if ePrev=0 
            and (eCode=ERROR_CANNOT_FIND_WND_CLASS or 
                 eCode=ERROR_CLASS_DOES_NOT_EXIST) then 
                ePrev = eCode 
                if not registerClass(classname,0,WndProcCallBack,NULL,NULL,COLOR_BTNFACE+1) then 
                    -- (the [2] is just so you know it's this message not the one above) 
                    FatalErr("Registration[2] of new window class: "& classname &" failed.") 
                end if 
            else 
                printf(1,"Control creation routine failed with error code %d.\n",eCode) 
                return 0 
            end if 
        end while 
 
else -- old code: 
        hwnd = c_func(xCreateWindowEx, { 
                                        dwExStyle,      -- extended style 
                                        lpszClassName,  -- window class name 
                                        lpszWindowName, -- window caption or Button text etc.. 
                                        dwStyle,        -- window style 
                                        x,              -- initial x position 
                                        y,              -- initial y position 
                                        nWidth,         -- initial x size 
                                        nHeight,        -- initial y size 
                                        pHwnd,          -- parent window handle 
                                        NULL,           -- window menu handle OR user id for child windows 
                                        NULL,           -- program instance handle - Legacy of Win16 apps. 0 will work too. 
                                        NULL})          -- creation parameters 
--?hwnd 
        if hwnd=NULL then 
            --?getLastError() 
            ?9/0 
            WarnErr("Control creation routine failed.") 
            return 0 
        end if 
end if 

so if I get an ERROR_CANNOT_FIND_WND_CLASS or ERROR_CLASS_DOES_NOT_EXIST (=1411), I now try registering the unknown class and re-try the CreateWindowEx, at most once.

I cannot see how this could apply to msgbox.e, but someone else might.
Of course I fully accept that precious time is usually better spent fixing things that are still broken blink

Pete

new topic     » goto parent     » topic index » view message » categorize

14. Re: Windows XP: message box with no other GUI does not work

petelomax said...

so if I get an ERROR_CANNOT_FIND_WND_CLASS or ERROR_CLASS_DOES_NOT_EXIST (=1411), I now try registering the unknown class and re-try the CreateWindowEx, at most once.

I cannot see how this could apply to msgbox.e, but someone else might.
Of course I fully accept that precious time is usually better spent fixing things that are still broken blink

That's interesting...I think Derek found a possibly similar issue where CreateWindowEx was failing in Win32Lib. IIRC, this was with 4.1, so it could easily be something else that was broken.

Matt

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu