1

私が学んだ限りでは、HANDLE はある種の「システム リソース テーブル」を参照する単なる数字です。このハンドル const は正しいですか? 配列のインデックスのようなテーブルにアクセスするために使用されるだけだからではないと思います。ビットマップの例: HBITMAP は const と宣言されていますが、ビットマップの内容を変更できますか?

4

1 に答える 1

3

HANDLEは(AFAIR)intのtypedefであるため、constHBITMAPはconstintと同じです。

この意味で、ビットマップへのハンドルがconstであっても、ビットマップの内容を変更できます。これは、constが実際のビットマップではなくハンドルを参照するためです(変数クラスへのconstポインターと考えてください)。

しかし:

とにかくあなたの質問は議論の余地があります:

  • ハンドルはWin32APIの機能であり、C++ではなくCAPIです(Cがconstを取得する前に作成されます)。
  • とにかく、ビットマップ(またはハンドルで表されるその他の「オブジェクト」)を直接変更することはできません。ハンドルはWin32構造への不透明な参照であり、「オブジェクト」を処理するために使用される適切なWin32 API呼び出し(しゃれは意図されていません)を介してのみ操作できます。

Win32はCAPIであるため、ハンドルは実際のC ++オブジェクトではなく概念オブジェクト(概念のソフトウェア表現)を参照するため、「オブジェクト」を引用符で囲みます。

于 2012-12-11T22:56:24.543 に答える