既存のライブラリを流用する上で、HDCにインチキして別の意味の値をもたせられると大変楽が出来るのです。でも、本来の用途の値と被るとまずいので、この質問をしました。
どう考えても邪道な方法なので将来の互換性とかいろいろアレですが、なにか参考になる資料がありましたら教えてください。
リンク先、およびその周辺のドキュメントを見る限り、特にハンドルの値として有効な形式は規定されていないようです。
そこでヘッダファイルを見ると、
// winnt.h
#ifdef STRICT
typedef void *HANDLE;
#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name
#else
typedef PVOID HANDLE;
#define DECLARE_HANDLE(name) typedef HANDLE name
#endif
typedef HANDLE *PHANDLE;
// windef.h
DECLARE_HANDLE(HDC);
なので型は「void *」。キャストして数値を突っ込めばいいでしょう。
蛇足ながら注意点としては64bit環境、32bit環境でサイズが変わってまう事。どのような邪道を考えているのか分かりませんが :-) ポインタ以外の数値を受け渡すのであれば、4GB以下の数値に抑え、設定側、取得側でそれを意識したコーディングをしたほうがよさそうです。健闘を祈ります。
回答ありがとうございます。
さすがに仕様では決まってなさそうですね。実際の挙動(割り当てられたハンドル番号)を調べて考えるとします。
型は、32bit値をvoid*にキャストでほおりこめばよさそうですね。