VISTA MFC です。
.NET2008を使い始めたのですが、リストビューの管理イベントについて質問します。
リストビューのプロパティの管理イベントから、
OnNMDblclkList
をハンドルすると、
void CmyPage1::OnNMDblclkList1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<NMITEMACTIVATE>(pNMHDR); //←●
// TODO: ここにコントロール通知ハンドラ コードを追加します。
*pResult = 0;
}
となります。
このままの状態でリビルドすると、
'reinterpret_cast' : 'NMHDR *' から 'NMITEMACTIVATE' に変換できません。
1> 変換にはコンストラクタまたは const_cast または reinterpret_cast で使用不能なユーザー定義変換演算子が必要です。
というエラーになります。
管理イベントをハンドルするだけでエラーになるというのが、とても違和感があります。
2005では、//←●の行がなく、2008でも、この行をコメントアウトすると、ビルドは通ります。
これは、こんなものなのでしょうか。
よろしくお願いします。
ホントだ
自動生成するコードがコンパイル通らないなんていけませんね。
バグ報告しましょう。
http://www.microsoft.com/japan/msdn/vstudio/feedback/
正しく(コンパイルが通る)コードはこうですね
LPNMITEMACTIVATE pNMItemActivate =
reinterpret_cast<NMITEMACTIVATE>(pNMHDR);
間違えました
正しいコードはこっちですね
LPNMITEMACTIVATE pNMItemActivate =
reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
バグ報告しました
https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=334670
アキラさん、ありがとうございます。
.NET2005をVISTAで使う時も、バグだらけでひどい、と思いましたが、あんまりだと思います。
バグ報告、ありがとうございました。
新しいものが出ると、すぐ買ってしまうのですが、ちょっと反省、です。
解決チェック、忘れました。
新しいものを早期に導入することはとてもいいことですよ
新しいもの好きの人が早期(たとえばベータ版)から使い込んで
早いうちにバグを見つけて報告すれば製品になるころには直してもらえますし
そういった報告や新製品の情報発信は後に続く人たちのためにもなります
新しいものには怖がらずにどんどんチャレンジしましょう
ツイート | ![]() |