
No.2ベストアンサー
- 回答日時:
>Error: Trying to create object which is not >DECLARE_DYNCREATE
>or DECLARE_SERIAL: CTest2View.
まさにこれが原因ですね。
.hファイルにある
DECLARE_DYNAMIC
を
DECLARE_DYNCREATE
に変更し、
おそらく.cppファイルにある
IMPLEMENT_DYNAMIC
を
IMPLEMENT_DYNCREATE
に変更すれば動くと思います。
動きました!ありがとうございます。
しかし、当方まちがっていまいました。
CRichEditCtrlは関数として使うべきなんですね。
すいません。
No.1
- 回答日時:
CMainFrameのOnCreate()で
-1が返されるとそういうメッセージが出ます。
OnCreate()内の処理で何らかの処理に失敗し、
-1が返されていませんか?
この回答への補足
CMainFrameのOnCreate()で-1が返されてはいないみたいですね。
最初に言えば良かったんですが、デバックでは Error: Trying to create object which is not DECLARE_DYNCREATE
or DECLARE_SERIAL: CTest2View.
と表示されています。
CTest2View が CrichEditCtrlです。
そこでTest2View.hを見てみると、
#pragma once
// CTest2View
class CTest2View : public CRichEditCtrl
{
DECLARE_DYNAMIC(CTest2View)
public:
CTest2View();
virtual ~CTest2View();
protected:
DECLARE_MESSAGE_MAP()
};
となっていました。
クラスの追加で CTest2View を作成していましたが、DECLARE_DYNCREATE も DECLARE_SERIAL もありません。
自分で記述しないといけないのでしょうか?
補足としてプロジェクトの概要とプロジェクト作成手順から説明いたします。何が悪いのか分からないので。
多分、上記の理由が一番と思いますが。
◆概要◆
Outlook Express のように3分割されたウィンドウの作成。なのでクラスの配置は、
左にCTreeView
右上にCListView
右下にCRichEditCtrl
と計画。
◆手順◆
プロジェクト名:Test1(MFCアプリケーション)
アプリケーションの種類:SDI
プロジェクト形式:Windowsエクスプローラ
作成すると、この段階で2分割ウィンドウができます。(CTest1ViewがCListView、CLeftViewがCTreeView)
次にMFCクラスの追加(CTest2ViewでCRichEditCtrl)
◆コード◆
(1)MainFrm.h の CSplitterWnd m_wndSplitter;の下に、
CSplitterWnd m_wndSplitter1; を追加。
(2)MainFrm.cpp の初めに
#include "Test2View.h"
を追加。
(3)MainFrm.cpp の OnCreateClient を下記の通り書き換え。
{
// 分割ウィンドウを作成します
// 1行2列のスプリッターを作成
if( !m_wndSplitter.CreateStatic(this, 1, 2))
return FALSE;
// 2列目(右側)のペインとなるスプリットを作成
// 2行1列のスプリッターを作成
if( !m_wndSplitter1
.CreateStatic( &m_wndSplitter,
2, 1,
WS_CHILD | WS_VISIBLE | WS_BORDER,
m_wndSplitter.IdFromRowCol(0, 1)))
{
m_wndSplitter.DestroyWindow();
return FALSE;
}
// 右上のペインを作成
if (!m_wndSplitter1.CreateView(0, 0,
RUNTIME_CLASS(CTest1View),
CSize(100, 100), pContext))
{
m_wndSplitter.DestroyWindow();
return FALSE;
}
// 右下のペインを作成
if (!m_wndSplitter1.CreateView(1, 0,
RUNTIME_CLASS(CTest2View),
CSize(100, 100), pContext))
{
m_wndSplitter.DestroyWindow();
return FALSE;
}
// 左のペインを設定
if (!m_wndSplitter.CreateView(0, 0,
RUNTIME_CLASS(CLeftView),
CSize(100, 100), pContext))
{
m_wndSplitter.DestroyWindow();
return FALSE;
}
return TRUE;
}
(4)Test1.cpp の InitInstance()で、CWinApp::InitInstance();の下に、
AfxInitRichEdit2();を追加。
これで動くと思っていたんですが。。
CRichEditViewだと問題いんですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C++によるファイル送受信プログ...
-
【Excel VBA】取り込んだファイ...
-
0バイトのテキストファイル
-
VBAで、JPG写真の撮影日時を読...
-
エディットボックスの内容をテ...
-
openglで音楽を再生する
-
C++.NET 2003 「空のドキュメ...
-
[C#]FTPでの複数のファイル...
-
ファイルのダウンロードが遅い
-
RPGでメッセージファイル利用
-
jamファイルだけが転送できませ...
-
dllって?
-
VB6.0 CreateObject以外のファ...
-
CSVファイルの時刻の形式について
-
accessでクエリをExcelにエクス...
-
ATTファイルってどうやって開け...
-
Thunderbird 受信メールからの...
-
ファイル変換
-
WORDのVBAで差し込み印刷時、デ...
-
コマンドプロンプトのテキスト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0バイトのテキストファイル
-
【Excel VBA】取り込んだファイ...
-
Eclipseで検索ができなくなった
-
VBAで、JPG写真の撮影日時を読...
-
VB6.0のメモリリークについて
-
HTMLテキストリンクでExcelファ...
-
サイトマップにサブドメインを...
-
VB2008 iniファイルの全セクシ...
-
2GB以上のファイルを扱う方法
-
Javaのファイルダウンロードに...
-
リソースファイルを認識してく...
-
VBScriptから指定URLを次々に開...
-
C++によるファイル送受信プログ...
-
【VBA】印刷マクロのループ処理...
-
RPGでメッセージファイル利用
-
C++.NET 2003 「空のドキュメ...
-
<input type="file" で初期値...
-
windows 環境でのファイル操作...
-
BASP21のファイルアップロード...
-
ファイルのダウンロードが遅い
おすすめ情報