• 締切済み

VC++ 6.0 でのCMainFrameクラスの作り方を教えてくださ

VC++ 6.0 でのCMainFrameクラスの作り方を教えてください OSはWindows XPです。 MainFrame.cpp MainFraem.h ファイルはどちらもない状態です。 新規作成方法を教えてください。

みんなの回答

回答No.2

 既存のダイアログベースのアプリにMainFrameを追加して、メニューバー等を追加したいということですか?(オープニングというのはよくわかりませんが)  MainFrameというのはMDIアプリやSDIアプリでの一番メインになるウインドウであり、ダイアログベースのアプリではそのダイアログ自身がメインのウインドウなので、そのままダイアログベースのアプリとMainFrameを共存させることはできません。  そういう無理をせずに実現しようとすると、次の2つの方法ぐらいしか思い付きません。 (1)既存のダイアログベースのアプリにメニューバーを追加する  MainFrameのメニューの実体はメニューコントロールが張り付けられたウインドウ以外の何ものでもないので、同様の機能を持つメニューバーを自作してダイアログに配置すれば良いはずです。 (2)SDIアプリとして作り直し、ダイアログ部分は子ウインドウとしてView上のクライアント領域に貼り付ける  こちらはMainFrameをそのまま使えますが、既存部分のソフトを大きく作り直す必要があります。  

h-h12345
質問者

お礼

ありがとうございました m_ _m CMainFrameのクラスも MainFrame.cpp MainFrame.h も出来ることが出来ました。 今回の主旨は、メインフレームを作成し、 実行時のオープニング画面(**View.cpp)のファイルを利用し、 メニューバーのファイルにして、色々なDialog画面を選択出来て、 表示するオブジェクトを作るのが目的です。 成功方法は、 ClassView  Ahaクラス    |- クラス新規作成(N)       クラスの種類(T) MFC クラス        クラス名 CMainFrame        基本クラス    CFrameWhd        ダイアログID(D) なし を選択し、OK で CMainFrameクラス MainFrame.cpp MainFrame.h の基本が出来ました。 ダイアログべースではなく、今回のシステムの オープニング画面表示等のメインフレームに しようと思いました。 SDI,MDIの意味も少し、分かりました。 ありがとうございました。 又、アドバイスよろしくお願い致します。  

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

プロジェクトの新規作成時にMFCアプリケーションでMDIやSDIを指定したら自動的に作成されるはずだと思いますが…… ダイアログベースのアプリの場合は不要なので作成されません。

h-h12345
質問者

お礼

ありがとうございます。 ダイアログベースのアプリの場合は不要と言うことは、分かりました。 質問の仕方が間違っていました。 Ahaと言うフォルダ内に Aha.cpp Aha.h AhaDlg.cpp AhaDlg.h Aha.asp Aha.clw Aha.dsp Aha.dsw Aha.rc 等は作成されていて、実行してオープニングやメニューバーの ファイルを作成させる為の MainFrm.cpp MainFrm.h を作成して見たいと思っております。 プロジェクト(P) -> プロジェクト追加(A) - 新規作成(N)で ファイルの所は、C/C++ ヘッダーファイル , C++ソースファイル 等どれを選択? プロジェクトの所は、MFC AppWizard(exe)を選択? プロジェクト名(N) MainFrm.cpp でいいのでしょうか? 位置(C) は C:\AAA\Aha\ 現在のワークスペースに追加にチェック有り プラットフォームは Win32にチェックが有ります。 この手順であっているでしょうか? ご指導の程、よろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VC++6.0で、ダイアログを新規に作成し、クラスウィザードでそのダイ

    VC++6.0で、ダイアログを新規に作成し、クラスウィザードでそのダイアログにクラスを割り当てる時 「クラス"CAbcDlg"のファイル(..¥AbcDlg.h, ..¥AbcDlg.cpp)を開けません」という エラーメッセージが出て、新しいクラスを作れません。何故でしょうか? 注1)正しく作れることもあります。 注2)出来てしまったAbcDlg.hとAbcDlg.cppファイルを削除して、   同じ操作をすると新しいクラスは作れます。

  • VC++2010での開発について

    『Microsoft Visual C++ 2010 Express』をインストールして、 Windowsアプリケーションを作成したのですが・・・ 初期作成されたヘッダファイル(Form1.h)にいろいろとコードがかかれていました! 昔(VC6)時代が最後だったので少しびっくりしたのですが、 cppファイルに書いていたような内容がhファイルにあるので?となり質問しました。 質問内容 1..NETになってからは、hファイルにイベントやコンストラクタなどの処理は記述するものなのでしょうか? 2.新規関数を作成する場合はどうするの? 3.VC++ 2010を勉強するにあたって、参考になる『本』『サイト』はありますでしょうか? よろしくお願いいたします。

  • Visual C++ 2005 MFCアプリのクラス作成について

    Windows XP SP3 Visual C++ 2005 pro MFCアプリケーション シングルドキュメント 以上の環境でアプリケーションを作りたいと思っています。 C++は、C言語をベースという意味ではそれなりにはわかっているつもりです(自信はないですが...)。 本当はSDKを学んだ方がよろしいんでしょうが、時間の都合上MFCでやることにしました。 ちなみに、VC++を使ったプログラミングは初めてのものです。 そこで質問なのですが、 通常のC++においてクラスを作るときは、cppファイルとhファイルで分けてつくってmainのcppでインクルードしますよね。 VC++ MFCも 「C++クラスの追加」 でウィザードを利用してあるクラスAを作成てみまして、わかる方にはわかるでしょうけど、もちろん以下のように出力されました。 A.h------------------ #pragma once class A { public: A(void); public: ~A(void); }; A.cpp---------------------- #include "A.h" #include "StdAfx.h" A::A(void) { } A::~A(void) { } そしてとりあえず、その状態で何も手を加えずにとりあえずコンパイルにかけてみたところいきなり以下のようなエラーが出ました。 error C2653: 'A' :識別子がクラス名でも名前空間名でもありません。 error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません warning C4508: 'A' : 関数に戻り値の型が指定されていません。戻り値を void 型と見なします。 error C2653: 'A' : 識別子がクラス名でも名前空間名でもありません fatal error C1903: 直前のエラーを修復できません。コンパイルを中止します 何も手を加えていない状態でこのようなエラーが出るということは、どこかでこのhやcppをインクルードする必要があるのだろうとは思います(でもそういう類のことはウィザードで作成した際に、VC++が自動でコーディングしてくれたりしないのでしょうかね...)。 むしろ、MFCでこのような単純なC++クラスを作ること自体があまり好まれないことなのでしょうか。 もちろんこのクラスを作っていってから、ある処理をさせていこうと思っているので、自分としては以前から行っていたC++のようにコーディングしていきたいと思うのですが、もし好ましくないようならどのファイルにMFC的ではない、ただのC++的なクラスを定義したりすればよろしいのでしょうか。 もしくは、好ましくなくても何らかの対処方法があれば教えていただきたく思います。 Webで調べても MFCクラスの作成などのことしか書いてないので、ちょっとわからなくて困っています。よろしくお願いします。

  • C++Builderのクラス

    普段、新規アプリケーションの作成で、TForm1クラスでプログラミングしています。ここに、例えば、Xクラスなどを追加作成したいのですが、.hファイルに記述するのか、.cppファイルに記述すべきなのか教えてください。

  • VC++でラベルに表示できない[.NET]

    VC++でラベルに表示できない[.NET] 以下のプログラムですがエラーが出ます。 #include "stdafx.h" #include "Form1.h" using namespace CursorXY1; [STAThreadAttribute] int main(array<System::String ^> ^args) { static POINT Point; // コントロールが作成される前に、Windows XP ビジュアル効果を有効にします Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault(false); // メイン ウィンドウを作成して、実行します Application::Run(gcnew Form1()); label1->Text="これはラベルです"; return 0; } エラー内容: 1>.\Form1.cpp(27) : error C2065: 'label1' : 定義されていない識別子です。 1>.\Form1.cpp(27) : error C2227: '->Text' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。 1> 型は ''unknown-type'' です。 ヘッダーファイルに「Form1.h,resource.h,stdafx.h」があります。 Designerでlabel1を設置しました。 Windowsフォームアプリケーションを選択しました。 初心者ゆえにずっとつまいずいていて、このたび質問させていただくことになりました。 よろしくお願いします。

  • ClassViewからクラスが消えました。復旧方法を教えてください。

    ClassViewからクラスが何故か消えてしまいました、復旧する方法を教えてください。(FileViewには.cppも.hもあります。) ダイアログを作りクラスウィザードでクラスを新規作成しそのクラスのソースファイルを直していた所、ClassViewからクラスが消えました。原因と復旧する方法を教えてください。

  • VC++6.0で作成したクラスをVB6.0で使うには?

    初めて投稿します。 プログラミング初心者の為、初歩的な質問になるかもしれませんがご容赦下さい。普段、主にVisual Basic6.0(以下VB6.0)でプログラミングを行なっています。 VB6.0には演算子のオーバーロードする機能がない(?)ため、Visual C++6.0(以下VC++6.0)でプログラミングを行い、VC++6.0で作成したクラスをVB6.0で呼び出して使用したいと考えています。 インターネット上でいろいろと調べてみたのですが、その方法がわからず投稿させていただきました。VC++6.0で作成したDLLの中の関数をVB6.0で呼び出して使用する方法はわかったのですが、クラスということになると、DLLでは無理なのでしょうか? どなたか、VC++6.0で作成したクラスをVB6.0で呼び出す方法、または勉強方法(教材)などを教えていただけると助かります。 宜しくお願いいたします。

  • VC++での開発

    私は,VC++のMDIで開発を進めています。 CMainFrameクラスで,IPアドレスをstrcpyで固定させ,その固定させたIPアドレスをCxxxAppクラスで使いたい場合(CxxxAppクラスから参照したい場合)どうすればいいのでしょうか?

  • VC++のコーディングについて

    VC++初心者です。 VC++のWindowsフォームアプリケーションを使用してテストプログラムを作ってみようと思っています。 初歩的な質問ですみません。 VC++でWindowsフォームアプリケーションを作成する場合、 フォームのヘッダーファイル(Form.h)にコーディングしていくものなのでしょうか? ボタンクリック処理など、ヘッダーファイルに作成されてしまいます。 私の先入観で、cppファイルにコーディングするものだと思っていたのですが、 VC++のWindowsフォームアプリケーションとは、こういうものでしょうか? ヘッダーファイルにコーディングするという感覚が何だか気持ち悪いです。 また、VC++を使用してWindowsアプリケーションを作る勉強がしたいのですが、 「初心者でも分かる+オススメの参考書籍」がありましたら、教えていただけると幸いです。 基本的な質問で意味不明かもしれませんが、ご回答いただけると助かります。 よろしくお願いします。

  • クラスが認識されていない(VC++)

    WinXP、VC++6.0のMFCでダイアログベースです。 クラスRedとクラスBlueを作ったとします。 クラスAメンバにクラスBのオブジェクトを入れたとします。 /*******Red.hファイル*********/ #include"Blue.h" class Red{ Blue obj_blue; void FuncRed(); }; /*******Blue.hファイル*********/ class Blue{ void FuncBlue(); }; ここまでは良いのですが、 クラスRedのメンバ関数FuncRed()の中でobj_blueを使うと 「左側がクラス、構造体、共用体ではありません。」 というエラーがでます。 ただし、FuncRed()の中でクラスBlueのオブジェクトobj_blue2を作って使うとエラーが出ずに使えます。 この現象で悩んでいます。何でも良いですのでお願いします。 情報不足であれば補足します。