MFCプログラミングをしています。
AppWizardでMDI(SDI)アプリを作成しました。

今、1つのドキュメント(データ)に対して、
2つのビューを作らなくてはなりません。
(2つ目はOpenGL表示)

フレームウィンドウを生成して
Create関数のコーディングまでは、
何とか書けましたが、
実行すると、異常終了していまします。

というのも、
新しいウィンドウとドキュメント、ビューの
関連づけがされていないからだと思います。

ウィザードで作られる場合は、
フレームウィンドウとドキュメント、ビューの
関連づけはドキュメントテンプレートを
使っているようですが、
実行後に独自に作る場合は
どのようにすれば良いか分からず、困り果てています。

どなたかご指導又はヒントをよろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

ウィザードで作ったCWinApp派生クラスのInitInstance()に



CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(IDR_MAINFRAME,RUNTIME_CLASS(CCubeDoc),RUNTIME_CLASS(CMainFrame),RUNTIME_CLASS(CCubeView));
AddDocTemplate(pDocTemplate);

の3行がありますよね。このうち後ろ2行を追加してあげればよいです。(真中の行のパラメーターはプログラムに応じて変更する必要があります。)

OpenGLであることは関係ないですよね。
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q拡張子の表示方法

ドコモのSH700iで音楽を聴こうと、ミニSDカードへファイルをつくるまでは良かったのですが、VOICEのフォルダへドラックして拡張子を変更したいのですが、m4aの拡張子がはじめから表示されておらず、形式の変更ができずに困っています。
どなたか拡張子の表示方法をご存知の方、教えていただけませんか?

Aベストアンサー

自分のケータイはSDカード使えないのでやったことありませんが...
エクスプローラのメニューから「ツール」、「フォルダオプション」、表示タブ中の詳細設定を最下部までスクロールすると、「登録されている拡張子は表示しない」にチェックがついていると思います。そのチェックをはずせば拡張子の表示ができると思います。

QMFC:MDIにおけるビューのアクティブ化

・環境
VisualStudio2008SP1+FeaturePack
Windows7 64bit

タブドキュメント形式でMDIアプリを作っているのですが、複数ドキュメントがある際にプログラムから任意のビューを安全にアクティブ化させる方法がわからずに困っております。CMainFrame::SetActiveViewメソッドを使用すると指定したビューがアクティブになり所望の動作になるのですが、この方法だとドキュメントをクローズするときに以下の例外が出て怒られます。SetActiveViewはビューのOnCreate内で実行しています。

 アクティブ化を解除しているアクティブ化コンテキストは、最近アクティブ化されたものではありません。

こういった状況に遭遇しない方法を探っているのですが使用するAPIと適切な使用タイミングがつかめず困っております。どなたかにご教授いただければ幸いです。

Aベストアンサー

ちょっと今環境がないのでテストしていませんが
これでどうでしょうか?

http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200302/03020076.txt

Q拡張子の表示方法

お世話になります。
ファイルの拡張子の表示方法の問い合わせ。
通常のフォルダオプションからの方法では他のファイルは表示されたのですが、該当のファイルは
表示されません。
その他の方法はあるのでしょうか?
OS WIN7 64ビット Pro 他のデータが問い合わせ上、必要であれば表示します。連絡下さい。

よろしくお願いします。

Aベストアンサー

元々、拡張子がついていないファイルもあるので、そういうものは表示されません。

拡張子が表示されず、どのようなファイルか調べたいのなら「極窓」を使えばわかるものもあります。

http://www.55555.to/index.htm
こちからから極窓をダウンロードして調べてみてはいかがでしょう。
(VisualBasic6.0(SP6)ランタイムライブラリが必要です)

QMDI(自作メモ帳)の子ウィンドウのHWND取得について

はじめまして、TKOZという者です。
c言語とWINAPIでMDIの自作メモ帳を作っています。
ところで、MDIを使って、複数のドキュメントウィンドウでテキストファイル
を保存したいのですが、選択されたドキュメントウィンドウの保存をする
際にそのドキュメントウィンドウのHWND取得をしたいのですが、
どうすればいいでしょうか?
ソースコードはこれです。
http://www.kumei.ne.jp/c_lang/sdk/sdk_83.htm
http://www.kumei.ne.jp/c_lang/sdk/sdk_84.htm
http://www.kumei.ne.jp/c_lang/sdk/sdk_85.htm

Aベストアンサー

すみません、訂正です。
hChild=(HWND)SendMessage(...
の間違いでした。

Q拡張子の表示方法

現在フォルダにでてくるデータには名前だけで
拡張子がついてこないので、名前と拡張子がでるようにしたいのですが
どこで変更すればいいのでしょうか?

Aベストアンサー

「ツール」→「フォルダオプション」→「表示」→「登録されている拡張子は表示しない」のチェックを外してください。

QMDI起動時に空のウィンドウが開かないようにするには?

初歩的な質問で恐縮なのですが、

MDIアプリケーションで起動時に空のウィンドウが開かないようにするにはどうすればよいのでしょうか?

目的
MDIで作ったデータ入力ソフトがありまして、それを閲覧専用に改造したいのです。
つまり、既存のファイルを開くだけでいいのに最初に空ファイルのウインドウが立ち上がるのがウザイということです。
もとのプロジェクトはVC++5.0で作られており(作成者がいなくなってしまった)、今はVC++6.0にコンバートして編集しています。

Aベストアンサー

MFCで作ったものであれば、CxxApp::InitInstance()のProcessShellCommand()を呼んでる直前で
cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;
を入れてやれば起動時にドキュメントが新規作成されなくなります。
詳しくはCCommandLineInfoクラスのヘルプを参照してください。

Win32APIで作られたものだったらわかりませんが、子ウィンドウが作られる所でブレークを張ってコールスタックを見ればある程度追えるんじゃないでしょうか。


例)
// DDE、file open など標準のシェル コマンドのコマンドラインを解析します。
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);

cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;
// コマンドラインでディスパッチ コマンドを指定します。
if (!ProcessShellCommand(cmdInfo))
return FALSE;

MFCで作ったものであれば、CxxApp::InitInstance()のProcessShellCommand()を呼んでる直前で
cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;
を入れてやれば起動時にドキュメントが新規作成されなくなります。
詳しくはCCommandLineInfoクラスのヘルプを参照してください。

Win32APIで作られたものだったらわかりませんが、子ウィンドウが作られる所でブレークを張ってコールスタックを見ればある程度追えるんじゃないでしょうか。


例)
// DDE、file open など標準のシェル コマンドのコ...続きを読む

Q拡張子の表示方法

ファイルの拡張子を常時表示させる方法を教えてください。

Windows Visataを使用しています。
現在は、ファイルを右クリック→プロパティ→全般タブのファイルの種類で確認しています。

Aベストアンサー

1.エクスプローラを開いて
2.キーボードの「Altキー」を押し
3.ツール>フォルダオプション>表示
4.「登録されている拡張子は表示しない」のチェックを外す
5.「OK」で閉じる

QMDIプログラムで子ウィンドウの相対座標を得るには?

VC++6.0でMDIプログラムを作っています。
Viewクラスでマウスの右ダブルクリックのメッセージを受け取って、
その関数の中で毎回、アクティブな子ウィンドウの左上の相対座標、
つまり、クライアント領域での子ウィンドウの左上の座標を知りたいのですが、
どのようにすれば得られるか分かりません。分かる方教えてください。

Aベストアンサー

GetWindowRect()、ClientToScreen()、ScreenToClient()を使ってくださいな。

Q拡張子CR2の表示方法を教えて下さい。

拡張子がCR2となっている画像データをフォトショップCSで開こうとしてもエラーが出ます。
どうしたらよいのでしょうか。

Aベストアンサー

RAWはカメラ個々で違う拡張子のようですから、パソコンで言うように共通性は全然無い物だそうです。
何でそうなのか知りませんが、当初の何かの目的があったのでしょうね?

通常は付属の物で開けます。で、必要に応じてTIFF,JPEG変換します。

CSのバージョン確認と、プラグインがあるのか?確認してください。各カメラ別に入れ込む必要があります。

キャノンのどのバージョンのビューアーかしりませんが、キャノンユーザーであることと、ビューアー次第ではDPPがダウンロードできます。

この手の質問ですがソフトのバージョンとかお使いのカメラとか関連ソフト全て記載された方が明確な回答来ますよ、、。

Qドキュメントビューの扱い

IMPLEMENT_DYNAMIC(CFixedLenRecHint, CObject)
IMPLEMENT_DYNAMIC(CFixedLenRecDoc, CDocument)

の様になっていて、
最初の
if (DYNAMIC_DOWNCAST(CFixedLenRecHint, pHint) != NULL)
{
m_nCheckNo = LOWORD(lHint) + pDoc->GetFirstCheckNo();
}

では、lHint に正しい値 15 などが入っている
のですが、

2回目に、他の UpDate() を呼び出した中で

if (DYNAMIC_DOWNCAST(CFixedLenRecHint, pHint) != NULL)
{
m_nCheckNo = LOWORD(lHint) + pDoc->GetFirstCheckNo();
}
の中の、lHint の値が
0になってしまいます。
これが原因でエラーになっています。

 この値は、デバッグモードで動かすと
2回目も、正しい値15になっていますが
 リリースモードにすると
0になってしまいます。??


DYNAMIC_DOWNCAST

の扱いがよく分かりません。
ここを読めばいいというのがありましたら
教えてください。

IMPLEMENT_DYNAMIC(CFixedLenRecHint, CObject)
IMPLEMENT_DYNAMIC(CFixedLenRecDoc, CDocument)

の様になっていて、
最初の
if (DYNAMIC_DOWNCAST(CFixedLenRecHint, pHint) != NULL)
{
m_nCheckNo = LOWORD(lHint) + pDoc->GetFirstCheckNo();
}

では、lHint に正しい値 15 などが入っている
のですが、

2回目に、他の UpDate() を呼び出した中で

if (DYNAMIC_DOWNCAST(CFixedLenRecHint, pHint) != NULL)
{
m_nCheckNo = LOWORD(lHint) + pDoc->GetFirstCheckNo();
}
の中の、lHin...続きを読む

Aベストアンサー

ご参考になるかどうかわかりませんが?

参考URL:http://members.fortunecity.com/hirof/mfc/08/08.html


人気Q&Aランキング

おすすめ情報