Hi Alessandro,

(I found your message ...)

On 2010-06-20 14:04, Alessandro Piras wrote:
> The wingcc driver is using obsolete constants:
> GCL_HCURSOR
> GWL_USERDATA
> 
> that should be replaced by
> GCLP_HCURSOR
> GWLP_USERDATA
> 
> as in http://msdn.microsoft.com/en-us/library/aa383663.aspx
> 
> I tried to fix it replacing the constants, but It does not work well:
> x01c.exe starts, it plots the graphics, and after half a second the
> window "the program stopped working appears".
> 
> ...
> if ( pls ) 
> {
>     dev = (wingcc_Dev *) pls->dev; // This is the offending line (256) 
> 
> }
> ...
> 
> No idea what's going on, just reporting it :-)

I am just guessing here, but the code we are looking at is:

    pls = (PLStream *) GetWindowLong( hwnd, GWL_USERDATA );
    if ( pls ) {
        dev = (wingcc_Dev *) pls->dev;
    }

Could it be that on Windows 64 we need a _different_ function or
functions or macros? This depends crucially on the interpretation
of "long". IIRC, long integers are long enough to store void pointers.
On 64-bits platforms that means a long is 64 bits, but do we indeed
retrieve 64 bits or do we need to use a different function (pair of
functions)?

A check could be to:
- Write the value of pls as stored in SetWindowLong() to the screen as a
   pointer
- Write the value of pls as retrievd from GetWindowLong() to the screen
   as a pointer.

The two should be the same. If not, we know that we have to look for
a different set of functions.

Regards,

Arjen

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to