[erlang-questions] wxErlang

Dan Gudmundsson <>
Mon Apr 14 11:55:57 CEST 2008


Comments below.

Bob Cowdery wrote:
> Dan
> 
> That's good news, the new classes are gratefully received. 
> 
> I'm having a few issues with the new release which I hope you can help
> with.
> 
> The code below should demonstrate.
> 
> 1. In the previous release if I connected to 'paint' I received a
> message {wx,_,{wx_ref,_,wxFrame},{wxNcPaint,paint}}. In this release I
> think I correctly receive {wx,_,{wx_ref,_,wxFrame},_,{wxPaint,paint}}.
> However, these events fire continuously and take my processor to 100%. I
> found however that I could connect to 'nc_event' and receive
> {wx,_,{wx_ref,_,wxFrame},_,{wxNcPaint,nc_paint}} and these events only
> fire when they should do. However, I think NC means the non-client area
> and the wrong thing to attach to.

Yes I fixed the nc_paint <-> paint, which was a bug in previous releases,
I noticed that it changed how often the events was fired I don't know
the reason, but I solved it by using a buffered-DC, which you are already
using, and set the appropriate skip option in the connect call.

I wonder if you have to use callbacks for those events?

> 2. In the code I have commented out a call to drawLines/2. Although this
> draws correctly my processor goes up to 50% and the window hangs (i.e
> 'not responding' in the title bar). I used this call a lot in the
> previous release without any problems.

I will take a look at wxDc:drawLines and see if I've introduced a bug or two,
I'll email you privately.

Thanks
/Dan

> Regards
> Bob
> 
> ------------------------------------
> -module(test_ui).
> 
> -include("..\\include\\wx.hrl").
> 
> -export([start/0, server_process/0]).
> 
> start() ->
>     spawn(?MODULE, server_process, []). 
>           
> server_process() ->
>     _WX = wx:new(),
>     GrFrame = wxFrame:new(wx:null(), 1,
> "Window",[{style,?wxFRAME_TOOL_WINDOW bor ?wxCAPTION}]),
>     wxFrame:connect(GrFrame, nc_paint),
> wxFrame:show(GrFrame, []),
>     B = wxBrush:new(?wxBLACK, []), 
>     server_loop(GrFrame, B).
> 
> server_loop(GrFrame, B) ->
>     receive
>         {wx,_,{wx_ref,_,wxFrame},_,{wxNcPaint,nc_paint}} ->
>             CDc = wxClientDC:new(GrFrame),
> Dc = wxBufferedDC:new(CDc),
>     wxDC:setBackground(Dc, B),
>             {W,H} = wxWindow:getSize(GrFrame),
> wxDC:drawRoundedRectangle(Dc, {2,2}, {W-4,H-4}, 3.0),
>             %wxDC:drawLines(Dc, [{10,10},{20,10},{20,20},{10,20}]),
>             wxBufferedDC:destroy(Dc),
> wxClientDC:destroy(CDc),
>             server_loop(GrFrame, B)  
>     end.
> --------------------------------------
> 
> On Fri, 2008-04-11 at 16:30 +0200, Dan Gudmundsson wrote: 
>> I've made a new release.
>> http://www.erlang.org/~dgud/wxerlang
>>
>> Fixed a lot of bugs, less memory leaks, added some missing totally untested classes and 
>> re-wrote the connect/event api, so it's now incompatible with previous releases :-)
>>
>> NOTE it requires OTP-R12-2 though.
>>
>> Basically bigger, better and faster.
>>
>> Regards
>> /Dan
>> _______________________________________________
>> erlang-questions mailing list
>> 
>> http://www.erlang.org/mailman/listinfo/erlang-questions
> 



More information about the erlang-questions mailing list