電子書籍の厳選無料作品が豊富!

環境 WIN2000 VC++6.0 MFC にて

あるクラス(CShellListCtrlEx)内部に別のクラス(CCharEditEx)を作成することなんて可能なんでしょうか?。

ある程度は、できそうな気がするのですが・・・。
どうしても、仮想関数やWindowsメッセージハンドラが使えないで困っています。

どなたかご存知でしたら、ご教授お願いします。

A 回答 (2件)

”内部に別のクラス”って何でしょう?



継承ですか?それともメンバ変数のことですか?
何をされたいのでしょうか?

この回答への補足

説明不足で申し訳ありません、下記のようなことがしたいのですが・・・。
class CShellListCtrlEx : public CListCtrl
{

// コンストラクション
public:
CShellListCtrlEx();

// アトリビュート
public:

// オペレーション
public:
class CCharEditEx : public CEdit
{
public:
CCharEditEx(int nItem, int nSubItem, CString &sContent)
{
m_nItem = nItem;// アイテム行番号格納
m_nSubItem = nSubItem;// アイテム列番号格納
m_sContent = sContent;// アイテム内容格納
m_bVK_ESCAPE = FALSE;
}

protected:
int m_nItem;// アイテムの行番号
intm_nSubItem;// アイテムの列番号
CString m_sContent;// 編集前内容格納
BOOL m_bVK_ESCAPE; // エスケープキー使用時フラグ
};


この場合、仮想関数やWindowsメッセージハンドラは使用できないのでしょうか?。

補足日時:2003/10/16 00:34
    • good
    • 0

補足のところにかかれたコード、このままだと内部のクラスのメンバにアクセスするにはどうすればいいんでしょうかねぇ?


あと、内部のクラスのコンストラクタに引数をどう渡すのか?というのはおいといて。


仮想関数は、普通に使えると思いますよ。
ただ、メッセージハンドラは、通常ウィザードが自動的に作成するコードも自分で書く必要があるので気合が必要でしょう。
具体的にどことは言いません(いっぱいあるし)。

なんで、普通はこうでしょうね。

//CharEditEx.h

class CCharEditEx : public CEdit
{
public:
CCharEditEx(int nItem, int nSubItem, CString &sContent)
{
m_nItem = nItem; // アイテム行番号格納
m_nSubItem = nSubItem; // アイテム列番号格納
m_sContent = sContent; // アイテム内容格納
m_bVK_ESCAPE = FALSE;
};




};

//-----------------------------
//ShellListCtrlEx.h

#include "CharEditEx.h"
class CShellListCtrlEx : public CListCtrl
{
public:
CShellListCtrlEx(int nItem, int nSubItem, CString &sContent)
{
m_m_pEditEx = new CCharEditEx(nItem,nSubItem,sContent);
}
~CShellListCtrlEx()
{
delete m_m_pEditEx;
}
private:
CCharEditEx * m_pEditEx;



};

無理やり中にクラスを定義するメリットないです。
デメリットだらけです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!