※ ChatGPTを利用し、要約された質問です(原文:ドキュメントビューの扱い)
ドキュメントビューの扱いとDYNAMIC_DOWNCASTについて
このQ&Aのポイント
ドキュメントビューの扱いについて説明し、DYNAMIC_DOWNCASTの使い方について説明してください。
DYNAMIC_DOWNCASTを使用するときに生じるエラーについて説明し、デバッグモードとリリースモードでの動作の違いについても触れてください。
DYNAMIC_DOWNCASTに関する詳細な情報や解説があれば、教えてください。
IMPLEMENT_DYNAMIC(CFixedLenRecHint, CObject)
IMPLEMENT_DYNAMIC(CFixedLenRecDoc, CDocument)
の様になっていて、
最初の
if (DYNAMIC_DOWNCAST(CFixedLenRecHint, pHint) != NULL)
{
m_nCheckNo = LOWORD(lHint) + pDoc->GetFirstCheckNo();
}
では、lHint に正しい値 15 などが入っている
のですが、
2回目に、他の UpDate() を呼び出した中で
if (DYNAMIC_DOWNCAST(CFixedLenRecHint, pHint) != NULL)
{
m_nCheckNo = LOWORD(lHint) + pDoc->GetFirstCheckNo();
}
の中の、lHint の値が
0になってしまいます。
これが原因でエラーになっています。
この値は、デバッグモードで動かすと
2回目も、正しい値15になっていますが
リリースモードにすると
0になってしまいます。??
DYNAMIC_DOWNCAST
の扱いがよく分かりません。
ここを読めばいいというのがありましたら
教えてください。
お礼
ありがとうございます。 どうも、 最適化のところを実行速度にすると0になり、 プログラムサイズにすると、15のままです。 原因は他でしょう。 さらに調べてみます。