DLGPROC型の戻り値はINT_PTRである。

公開:2012-01-30 09:41
更新:2020-02-15 04:37
カテゴリ:c++,windows api,windowラッパーライブラリ,windows

Windowラッパーライブラリを作成しはじめた。ベースは今まで使っていたものである。base_win32_windowというテンプレートを作り、ProcTypeにWNDPROCかDLGPROCを指定することでメッセージハンドラの戻り値などの制御をコンパイル時に行おうと思っていたが問題発生。

DLGPROC型の戻り値はBOOL(値はBOOL値を返す)だと思っていたが、INT_PTR型でありX64環境ではWNDPROC型と戻り値の最終的な型が同じになる(__int64)。引数はWNDPROCと同じなのでDLGPROCとWNDPROCは型としては同じと判定される。std::is_sameでもtrueとなる。

別な方法を考えることにする。

ソースコード