Hi, thanks for looking into this.

If I make them show, as

@show ctgc.iup_canvas
    ctgc.iup_canvas = t
@show t
@show ctgc.iup_canvas

it 'shows'

ctgc.iup_canvas => Ptr{cdCanvas} @0x0000000000000000
t => Ptr{cdCanvas} @0x0000000022c6d6c0
ctgc.iup_canvas => Ptr{cdCanvas} @0x0000000022c6d6c0

which shows that type has not changed after the attribution and  that it 
has the correct return type of cdCreateCanvas().
That is why I initialized the ctgc type with 

convert(Ptr{cdCanvas},0)

(see first member in my first post)


quarta-feira, 14 de Janeiro de 2015 às 13:39:21 UTC, Milan Bouchet-Valat 
escreveu:
>
> Le mercredi 14 janvier 2015 à 05:32 -0800, J Luis a écrit : 
> > Hi, 
> > I have had quite some head-aches with types (converted from C structs) 
> > but this one wins. 
> > 
> > I have this type (from IUP) 
> > 
> > 
> > type tCTC 
> >     iup_canvas::Ptr{cdCanvas} 
> >     w::Cint 
> >     h::Cint 
> > ... 
> > 
> > which I initialize as 
> > 
> > ctgc = tCTC( 
> >         convert(Ptr{cdCanvas},0), 
> >         int32(0), int32(0), 
> > ... 
> > 
> > and now the mystery. 
> > 
> >     t = cdCreateCanvas(cdContextIup(), IupGetHandle("cnvMain")) 
> >     ctgc.iup_canvas = t 
> >     cdActivate(t); 
> >     cdActivate(ctgc.iup_canvas); 
> > 
> > 
> > the last line in the chunk above errors with 
> > 
> > 
> > ERROR: `cdActivate` has no method matching cdActivate(::Ptr{cdCanvas}) 
> >  in CDTestInit at C:\programs\Gits\IUP.jl\examples\cdtest_.jl:125 
> >  in cdtest at C:\programs\Gits\IUP.jl\examples\cdtest_.jl:92 
> > 
> > 
> > So `t` and `ctgc.iup_canvas` are actually two different entities 
> > (although their pointers are ofc the same as I can see if I @show 
> > them)? 
> Well, you need to show us more details, e.g. tell us what 
> cdCreateCanvas() does, and what type it returns. The pointers might hold 
> the same address, but they still may be of different types. @show should 
> make this visible, but without the output we cannot check. 
>
>
> Regards 
>
>

Reply via email to