MFC CWndクラスを継承して関数をオーバーライドする方法
Posted: 2010年11月23日(火) 13:09
WindowsVista
VC++2008Pro
上記環境でMFCを用いたプログラムを作っております。
CListBoxクラスを継承した自作クラスで生成時あらかじめソートをOFFにしようと思い
Create関数をオーバーライドして、引数のdwStyleにてソートフラグを外そうとしました。
※ プロパティで出来るのは知ってますが、コードで設定しようとしています。
まずこの時点でCreate関数がオーバーライドされていないのか、
自作クラスのCreate関数に入ってきません(ブレイクポイントをつけている)
CWnd側のCreateかな?と思い色々とオーバーライド関数を作っても全く関数がコールされません。
ヘッダを見るとvirtual定義されているので、「this->CWnd::Create」みたいな呼び出し方をされない限り
定義した関数に来ると思っていたのですが、このあたりが勘違いなのでしょうか・・・
以下に手順を記述します。
1.MFCでダイアログベースプロジェクトを作成し、リストボックスを設置
2.ダイアログのヘッダに定義されているリストボックスのメンバ変数の型を自作クラスに変更
3.Create関数を定義して、プログラムを実行
4.コンパイルエラー無し、実行エラー無し
5.OnInitDialogでリストにアイテムを設置するような自作関数を記述したら正常に自作関数が呼び出される
引数や戻り値はヘッダからコピペで持ってきているので間違いないとは思うのですが・・・
実際のプロジェクトは会社にあり、自宅ではExpressなため現在は文言のみでの情報記載となります。
これらの情報で何かしら問題点、解決策ありますでしょうか?
以上、よろしくお願いします。
VC++2008Pro
上記環境でMFCを用いたプログラムを作っております。
CListBoxクラスを継承した自作クラスで生成時あらかじめソートをOFFにしようと思い
Create関数をオーバーライドして、引数のdwStyleにてソートフラグを外そうとしました。
※ プロパティで出来るのは知ってますが、コードで設定しようとしています。
まずこの時点でCreate関数がオーバーライドされていないのか、
自作クラスのCreate関数に入ってきません(ブレイクポイントをつけている)
CWnd側のCreateかな?と思い色々とオーバーライド関数を作っても全く関数がコールされません。
ヘッダを見るとvirtual定義されているので、「this->CWnd::Create」みたいな呼び出し方をされない限り
定義した関数に来ると思っていたのですが、このあたりが勘違いなのでしょうか・・・
以下に手順を記述します。
1.MFCでダイアログベースプロジェクトを作成し、リストボックスを設置
2.ダイアログのヘッダに定義されているリストボックスのメンバ変数の型を自作クラスに変更
3.Create関数を定義して、プログラムを実行
4.コンパイルエラー無し、実行エラー無し
5.OnInitDialogでリストにアイテムを設置するような自作関数を記述したら正常に自作関数が呼び出される
引数や戻り値はヘッダからコピペで持ってきているので間違いないとは思うのですが・・・
実際のプロジェクトは会社にあり、自宅ではExpressなため現在は文言のみでの情報記載となります。
これらの情報で何かしら問題点、解決策ありますでしょうか?
以上、よろしくお願いします。