The Win32 HANDLE type under D2

Yao Gomez yao.gomez at gmail.com
Sat Feb 4 11:40:34 PST 2012


On Saturday, 4 February 2012 at 19:32:26 UTC, Stewart Gordon 
wrote:
> Under D1, std.c.windows.windows has HANDLE it as a typedef of 
> void*.  While I forget whether they're actually pointers.  I 
> guess it fits given that the C headers define it as void* and 
> that handles are fundamentally different from pointers from an 
> app's point of view.
>
> Under D2, core.sys.windows.windows has it as an alias of void*.
>
> In the WindowsAPI bindings, the definition of HANDLE is 
> versioned to this effect.
>
> But there ought to be a better way of dealing with it.  Anyone 
> got any thoughts?  Are there any plans at the moment for the 
> future of the HANDLE type?
>
> Stewart.

Just use the Win32 API way when STRICT is defined:

---
  struct HANDLE__{ int unused; }
  alias HANDLE__* HANDLE;
---

for different handles, just create a template that creates 
different handles with different names:

---
  mixin DEFINE_HANDLE("HWND");

  // struct HWND__{ int unused; }
  // alias HWND__* HWND;
---


More information about the Digitalmars-d mailing list