Windows Data Types に関する MSDN ドキュメントから理解しているように、 aHWND
は a と同等void*
です。
HWND - ウィンドウへのハンドル。この型は、WinDef.h で次のように宣言されています。 typedef HANDLE HWND; HANDLE - オブジェクトへのハンドル。この型は、WinNT.h で次のように宣言されています。 typedef PVOID HANDLE; PVOID - 任意の型へのポインター。この型は、WinNT.h で次のように宣言されています。
ただし、次のことを試してみると:
int foo;
HWND bar = &foo;
私のコンパイラ(VS2012)は文句を言います:
error C2440: '=' : cannot convert from 'int *' to 'HWND'
Types pointed to are unrelated; conversion requires reinterpret_cast,
C-style cast or function-style cast
理由がわかりません。以下は正常にコンパイルされるため、typedef の使用とは関係がないことを確認しました。
typedef void* MyType;
int foo;
MyType bar = &foo;
任意のオブジェクトのアドレスを に割り当てることを妨げているのは何HWND
ですか?
私がこれをやりたい理由は、そもそも誰かがそれをやろうとしていることに反対した場合に備えて、私がテストできる既知の値を s にHWND
提供することによって単体テストしたい s を含むいくつかのコードを持っているからですHWND
.