[python-win32] LP_WNDCLASS vs pointer to WNDCLASS

Thomas Heller theller at ctypes.org
Thu Jan 17 12:50:38 CET 2008


Henry Baxter schrieb:
> Hello,
> 
> I keep getting this error, and I cannot figure out why. I have code that
> registers a window class that works, and code that does not. Both bits of
> code create a WNDCLASS, both use byref(thewndclassinstance), both make sure
> there is always a reference to the window class structure instance to ensure
> it is not destroyed. Here is the error.
> 
> ctypes.ArgumentError: argument 1: <type 'exceptions.TypeError'>: expected
> LP_WND
> CLASS instance instead of pointer to WNDCLASS
> 
> Why would byref sometimes create an LP_WNDCLASS, and sometimes a 'pointer to
> WNDCLASS'?

This problem probably happens when you have several WNDCLASS classes defined,
perhaps in several modules.  These classes are similar, but separate, and ctypes
isinstance checks fail.

You should always use the WNDCLASS defined in ctypes.wintypes instead of defining
your own.  In ctypeslib dynamic modules, you should place a 'from ctypes import *'
and 'from ctypes.wintypes import *' at the top.

Thomas



More information about the python-win32 mailing list