http://oshiete1.goo.ne.jp/kotaeru.php3?q=880746の続きです。
試行錯誤でCFrameWnd とCFormViewを使ったコーディングをしてみました
CFrameWnd::LoadFrameを使った方はうまくいったのですがCFrameWnd::Createの方はうまくいきませんでした。
//LoadFrame
CCreateContext con;
memset(&con,0,sizeof(CCreateContext));
con.m_pNewViewClass = RUNTIME_CLASS(CXXXView);
m_pMainFrame = new CMainFrame;
m_pMainFrame->LoadFrame(IDR_MAINFRAME,WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE,NULL, &con );
m_pMainFrame->ShowWindow(SW_SHOW);
//Create・・・うまくいかない(何故?)
m_pContext = new CCreateContext;
memset(m_pContext,0,sizeof(CCreateContext));
m_pContext->m_pNewViewClass = RUNTIME_CLASS(CXXXView);
m_pMainFrame->Create("MyClass","MyWindow",WS_OVERLAPPEDWINDOW,CRect(0,0,10,10),NULL,NULL,0,m_pContext);
m_pMainFrame->ShowWindow(SW_SHOW);
ところでLoadFrameでうまくいったのは良いのですが
一つ疑問が、、、CFrameWndをタスクバーでは非表示で
表示することって無理でしょうか?
ShowWindow(SW_SHOW);の時点でタスクバーにでてしまいます。
タスクバーに表示させないにはダイアログベースにする必要があるのでしょうか?
宜しくお願いいたします。
No.3ベストアンサー
- 回答日時:
>>CFrameWnd::Create()の場合、NULLを指定するのも可能>です。
NULLで上手くいきましたか?>いえNULLにすると「ハンドルされていない例外・・・」が>でてしまいます。
うーん、NULLでだめなのはダイアログベースだからかな?
実際に試してないんでわからないですが・・・
クラス名は自分で登録したクラス名を指定して、CCreateContext*の引数、NULLにした場合フレームウィンドウだけは表示されませんか?
あと、MFCの場合はいざとなったらMFCのフレームワーク自体もデバッグすればたいてい原因は解ると思います。
>LoadFrame時の方ですが以下のようなメッセージがアウトプットウィンドウにでてしまいます。
ASSERTダイアログが出てこないんでしたら気にしないでいいですよ。MFCの内部処理で例外ハンドラを使うような処理をしてるだけですから。
ワーニングの方は、Docがある前提でフレームワークが組まれているからでしょうけど気持ち悪いですけどね。
>クラス名は自分で登録したクラス名を指定して、CCreateContext*の引数、NULLにした場合フレームウィンドウだけは表示されませんか?
それらを含めて色々と試してみましたが無理でした。(なにかすごい基本的な事を見落としているのかもしれませんが・・)
フレームウインドウもでません。
「ハンドルされていない例外はXXX.exeにあります:0xC0000005: Access Violation。」
_AFX_INLINE CStringData* CString::GetData() const
{ ASSERT(m_pchData != NULL); return ((CStringData*)m_pchData)-1; }
の部分でとまっています。
taka_tetsuには色々とお世話になり感謝しております。
有難うございました。
No.2
- 回答日時:
>クラス名の事はあまりよくわかっていないのですが
>先にAfxRegisterWndClassでクラス名を
>登録しておく必要があるということですね?
そうです。
CFrameWnd::Create()の場合、NULLを指定するのも可能です。NULLで上手くいきましたか?
>Windows のクラス名を示す NULL で終わる文字列へのポインタ。
>クラス名には、AfxRegisterWndClass グローバル関数または
>Windows 関数の RegisterClass で登録された任意の
>名称を指定できます。NULL のときは、既定の
>組み込み CFrameWnd 属性が使われます。
参考URL:http://www.microsoft.com/japan/msdn/library/defa …
度々のご回答有難うございます。m(__)m
>CFrameWnd::Create()の場合、NULLを指定するのも可能です。NULLで上手くいきましたか?
いえNULLにすると「ハンドルされていない例外・・・」がでてしまいます。
LoadFrame時の方ですが以下のようなメッセージがアウトプットウィンドウにでてしまいます。
「例外処理 (初回) は XXX.exe (KERNEL32.DLL) にあります: 0xE06D7363: Microsoft C++ Exception」
warningでno documentなんちゃらとでていたので
m_pDoc = (CBackAppleDoc*)RUNTIME_CLASS(CBackAppleDoc)->CreateObject();
con.m_pCurrentDoc = m_pDoc;
を追加したのですがwarningはなくなりますが「例外・・・」は
やはりでてしまいます。ウインドウ自体は何事もなく表示されるのですが・・・
これらの処理はMFCでダイアログボックスベースのウィザードで作成し
そのダイアログ自体をツールウインドウにして非表示にし、
OnInitDialogの中で処理を行っています。
No.1
- 回答日時:
>CFrameWnd::Createの方はうまくいきませんでした。
"MyClass"って自分で登録しましたか?
>ShowWindow(SW_SHOW);の時点でタスクバーにでてしまいます。
LoadFrameやCreateの引数の
CWnd* pParentWnd
にNULLを指定しているからです。
非表示にしてあるの親ウィンドウのCWnd*を渡してください。
taka_tetsuさんの回答には恐縮です。
ご指摘の通りAfxGetApp()->m_pMainWndを指定してやる事で解決致しました。
ご回答、誠に有難うございました。
クラス名の事はあまりよくわかっていないのですが
先にAfxRegisterWndClassでクラス名を
登録しておく必要があるということですね?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL SHOW CREATE TABLE posts;これって何ですか? 3 2022/08/28 22:57
- Ruby No route matches [GET] "/posts/5/destroy" 1 2022/03/24 13:00
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- その他(ソフトウェア) UnityのPublishing SettingsでCreate Keyを押しても反応しない 1 2023/06/27 01:03
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
FriendとPublicの違い。。。
-
クラスのアドレスを引数として...
-
イベントにAddHandlerされてい...
-
既定のコンストラクタがない?
-
C++では構造体がメンバ関数をも...
-
このコンパイルエラーの意味に...
-
(UWSC) 「#32770」の意味わかり...
-
スプラッシュコントロールの挿...
-
IncludeではなくClassで宣言す...
-
WindowsAPIのリストビューの...
-
form1 から form2 へのデータの...
-
ボタンのオーナードローについて
-
ウィンドウの背景に画像を配置する
-
コンソールアプリでのクリップ...
-
MFCアプリのコマンドラインでパ...
-
VC6 コンパイルエラー C2248に...
-
MessageBoxを継承したい
-
C++/CLIからC++の呼び出しで例外
-
個々の関数について継承してい...
-
VB2008: 継承の場合のコンスト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FriendとPublicの違い。。。
-
既定のコンストラクタがない?
-
(UWSC) 「#32770」の意味わかり...
-
クラスのアドレスを引数として...
-
ダイアログ表示時にチェックボ...
-
イベントにAddHandlerされてい...
-
【ASP.NET】 独自で作成したク...
-
MFCアプリのコマンドラインでパ...
-
DebugクラスとTraceクラスの違い
-
ボタンのオーナードローについて
-
OnInitDialog()の関数の組み込み方
-
IncludeではなくClassで宣言す...
-
関数の呼び出し元の検索
-
このコンパイルエラーの意味に...
-
C++ protectedにアクセス不可
-
C++で継承元のクラスの代入演算...
-
DataGridViewのセルに斜線を引...
-
C#で通常のbuttonコントロール...
-
エディットコントロールのイベ...
-
CMainFrameクラスの使い方
おすすめ情報