次のコードを使用して、ダイアログボックスで進行状況コントロールをサブクラス化しようとしています。
ATL::CContainedWindowT<WTL::CProgressBarCtrl> progress;
// ...
progress.SubclassWindow(GetDlgItem(IDC_PROGRESS));
そこにすべて良い。今私がこれをやろうとすると:
progress.SetRange(0, 100);
SendMessage
些細なWTLのSetRange()
実装でアクセス違反の例外が発生します。私は上下に検索してきましたが、これは「古いATLコンポーネントを使用するアプリケーションでDEPとの競合が発生する可能性がある」で説明したように、「サンク」の問題である可能性があります。これは、最新のATLとWTLを使用しているため実際には当てはまりません。 (Visual Studio2010およびWTL8.1)。WTL 8.0を使用しても、同じ問題が発生します。
HWNDが有効であるため、サブクラス化は正常に実行されました。何か案は?