1. SendMessage Returns a Value?

I've looked up SendMessage info at msdn, but can't find return values 
for success/fail. Does anybody know how to determine if the message was 
sent or received properly?

Here's the snippet of code I'm using...

    -- call AddFontResource
    if AddFontResource != -1 then
        junk = allocate_string( "free000.ttf" )
        if xSendMessage!= -1 then
            fonter = c_func( AddFontResource, { junk } )
            if fonter != 0 then
                junk = c_func(xSendMessage,{HWND_BROADCAST, 
WM_FONTCHANGE, 0, 0})
-- RIGHT HERE... HOW DO I DETERMINE IF xSendMessage completed properly?
                didAddFontResource = (1=1)
            else
                errMsg = "AddFontResource failed."
            end if
        else
            errMsg = "Could not access SendMessage."
        end if
        free(junk)
    else
        errMsg = "Could not access AddFontResource."
    end if

new topic     » topic index » view message » categorize

2. Re: SendMessage Returns a Value?

From the SDK: The return value specifies the result of the message 
processing; it depends on the message sent.

It appears that a WM_FONTCHANGE message will return 0.  Maybe 
SendMessage will return 0 for any message unless you specify a different 
value?

i.e.

if uMsg = WM_FONTCHANGE then
    return 100
end if

will return 100 as a result

whereas

if uMsg = WM_FONTCHANGE then
end if

returns 0




C. K. Lester wrote:

>
> I've looked up SendMessage info at msdn, but can't find return values 
> for success/fail. Does anybody know how to determine if the message 
> was sent or received properly?
>
> Here's the snippet of code I'm using...
>
>    -- call AddFontResource
>    if AddFontResource != -1 then
>        junk = allocate_string( "free000.ttf" )
>        if xSendMessage!= -1 then
>            fonter = c_func( AddFontResource, { junk } )
>            if fonter != 0 then
>                junk = c_func(xSendMessage,{HWND_BROADCAST, 
> WM_FONTCHANGE, 0, 0})
> -- RIGHT HERE... HOW DO I DETERMINE IF xSendMessage completed properly?
>                didAddFontResource = (1=1)
>            else
>                errMsg = "AddFontResource failed."
>            end if
>        else
>            errMsg = "Could not access SendMessage."
>        end if
>        free(junk)
>    else
>        errMsg = "Could not access AddFontResource."
>    end if
>
>
>
> For Topica's complete suite of email marketing solutions visit:
> http://www.topica.com/?p=TEXFOOTER
>
>

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

3. Re: SendMessage Returns a Value?

Bernie Ryan wrote:

>SendMessageA() return values are determined by what
>message is sent so you have to LOOK at the MESSAGE you
>are sending at MSDN to see what is returned. You can
>not assume zero is always sucessful.
>  
>
I did look at the message (WM_FONTCHANGE), and there's no return value
list! getlost

>Have you looked at my windows library it might make your job easier.
>  
>
Yes, and it did. Thanks.

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

4. Re: SendMessage Returns a Value?

No.  I see now that WM_FONTCHANGE returns 0, others may return handles 
or TRUE, etc.


Evan Marshall wrote:

>
> From the SDK: The return value specifies the result of the message 
> processing; it depends on the message sent.
>
> It appears that a WM_FONTCHANGE message will return 0.  Maybe 
> SendMessage will return 0 for any message unless you specify a 
> different value?
>
> i.e.
>
> if uMsg = WM_FONTCHANGE then
>    return 100
> end if
>
> will return 100 as a result
>
> whereas
>
> if uMsg = WM_FONTCHANGE then
> end if
>
> returns 0
>
>
> C. K. Lester wrote:
>
>>
>> I've looked up SendMessage info at msdn, but can't find return values 
>> for success/fail. Does anybody know how to determine if the message 
>> was sent or received properly?
>>
>> Here's the snippet of code I'm using...
>>
>>    -- call AddFontResource
>>    if AddFontResource != -1 then
>>        junk = allocate_string( "free000.ttf" )
>>        if xSendMessage!= -1 then
>>            fonter = c_func( AddFontResource, { junk } )
>>            if fonter != 0 then
>>                junk = c_func(xSendMessage,{HWND_BROADCAST, 
>> WM_FONTCHANGE, 0, 0})
>> -- RIGHT HERE... HOW DO I DETERMINE IF xSendMessage completed properly?
>>                didAddFontResource = (1=1)
>>            else
>>                errMsg = "AddFontResource failed."
>>            end if
>>        else
>>            errMsg = "Could not access SendMessage."
>>        end if
>>        free(junk)
>>    else
>>        errMsg = "Could not access AddFontResource."
>>    end if
>>
>>
>> For Topica's complete suite of email marketing solutions visit:
>> http://www.topica.com/?p=TEXFOOTER
>>
>>
>
>
> For Topica's complete suite of email marketing solutions visit:
> http://www.topica.com/?p=TEXFOOTER
>
>

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

5. Re: SendMessage Returns a Value?

Evan Marshall wrote:

>
> No.  I see now that WM_FONTCHANGE returns 0, others may return handles 
> or TRUE, etc.

So, if successful, SendMessage returns 0 when sending a WM_FONTCHANGE 
message to HWND_BROADCAST? What value is returned if SendMessage fails 
when sending WM_FONTCHANGE using HWND_BROADCAST?

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

6. Re: SendMessage Returns a Value?

----- Original Message ----- 
From: "C. K. Lester" <euphoric at cklester.com>
To: <EUforum at topica.com>
Subject: Re: SendMessage Returns a Value?


> 
> 
> Evan Marshall wrote:
> 
> >
> > No.  I see now that WM_FONTCHANGE returns 0, others may return handles 
> > or TRUE, etc.
> 
> So, if successful, SendMessage returns 0 when sending a WM_FONTCHANGE 
> message to HWND_BROADCAST? What value is returned if SendMessage fails 
> when sending WM_FONTCHANGE using HWND_BROADCAST?
> 

The return value from a WM_FONTCHANGE message should be ignored as it is not
defined. Because this is sendiong a message to many windows running in other
applications, the range of possible errors is too large to be represented by a
single return value. So there is no return value. Either the other windows will
be the message or not. Maybe you should us PostMessageA instead, as this always
returns a true/false and does not wait for all windows to be notified before
returning to your application..

-- 
Derek

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

7. Re: SendMessage Returns a Value?

Derek Parnell wrote:

>Because this is sendiong a message to many windows running in other
>applications, the range of possible errors is too large to be represented by a
>single return value. So there is no return value. Either the other windows will
>be the message or not. Maybe you should us PostMessageA instead, as this always
>returns a true/false and does not wait for all windows to be notified before
>returning to your application.
>  
>
What does this statement mean: "Applications that need to communicate 
using HWND_BROADCAST should use the RegisterWindowMessage 
<http://msdn.microsoft.com/library/en-us/winui/WinUI/WindowsUserInterface/Windowing/MessagesandMessageQueues/MessagesandMessageQueuesReference/MessagesandMessageQueuesFunctions/RegisterWindowMessage.asp>
function to obtain a unique message for inter-application communication."

Does that apply to what I'm trying to do (which is just install a font 
and then HWND_BROADCAST a WM_FONTCHANGE message, for holy's sake).

Bernie, using w32engine, how would I do the above? (I've already moved 
the font file into the fonts folder, so I just need to call 
AddFontResourceA and then broadcast the WM_FONTCHANGE message.)

Thanks!

Just for completeness sake, I'm pasting below how I do it now:

if gdi32 = 0 then
    errMsg = "Couldn't open gdi32.dll!"
else
    if AddFontResource != -1 then -- defined it earlier
        junk = allocate_string( "free000.ttf" )
        if xSendMessage!= -1 then -- defined it earlier
            fonter = c_func( AddFontResource, { junk } ) -- call the 
function
            if fonter != 0 then
                junk = c_func(xSendMessage,{HWND_BROADCAST, 
WM_FONTCHANGE, 0, 0})
                didAddFontResource = (1=1)
            else
                errMsg = "AddFontResource failed."
            end if
        else
            errMsg = "Could not access SendMessage."
        end if
        free(junk)
    else
        errMsg = "Could not access AddFontResource."
    end if
end if

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

8. Re: SendMessage Returns a Value?

----- Original Message ----- 
From: "C. K. Lester" <euphoric at cklester.com>
To: <EUforum at topica.com>
Subject: Re: SendMessage Returns a Value?


> 
> 
> Derek Parnell wrote:
> 
> >Because this is sendiong a message to many windows running in other
> >applications, the range of possible errors is too large to be represented by a
> >single return value. So there is no return value. Either the other windows will
> >be the message or not. Maybe you should us PostMessageA instead, as this always
> >returns a true/false and does not wait for all windows to be notified before
> >returning to your application.
> >  
> >
> What does this statement mean: "Applications that need to communicate 
> using HWND_BROADCAST should use the RegisterWindowMessage 
>
> <http://msdn.microsoft.com/library/en-us/winui/WinUI/WindowsUserInterface/Windowing/MessagesandMessageQueues/MessagesandMessageQueuesReference/MessagesandMessageQueuesFunctions/RegisterWindowMessage.asp>
>
> function to obtain a unique message for inter-application communication."
> 
> Does that apply to what I'm trying to do (which is just install a font 
> and then HWND_BROADCAST a WM_FONTCHANGE message, for holy's sake).

No. The WM_FONTCHANGE message is a predefined one that all apps should know
about. Its talking about 'normal' app-to-app communications. If one has two
applications that need to send messages to each other, the RegisterWindowMessage
is needed to create a unique message number in the system for those apps to pass.
Not required for font changes.

 
-- 
Derek

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

9. Re: SendMessage Returns a Value?

CK:
-- With w32engin.ew you would do this to add the font
 
if not AddFontResourceA(sz("free000.ttf") then
  ShowLastError("AddFontResourceA Failed!")
else
  ok = SendMessageA({HWND_BROADCAST,WM_FONTCHANGE, 0, 0})
end if
szfree() -- free the sz string

Bernie

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

Search



Quick Links

User menu

Not signed in.

Misc Menu