• ベストアンサー

error C2065: error C2057: が出てしまいます。

VC++6.0 ダイアログベースです。 自動で作られたダイアログのヘッダファイルを 自作で作ったクラスのヘッダファイルでインクルードした所 下記のようなエラーが出てしまいました。    error C2065: 'IDD_MY_DIALOG' : 定義されていない識別子です。 error C2057: 定数式が必要です。    まだ自作で作ったクラスはクラスになる前のインクルードのみ書かれた 状態ですが・・・。      //自作する予定のヘッダファイル(まだインクルードのみ) #pragma once #include "DLGTEST.h"//自動で作られたダイアログ //自作のファイル(まだインクルードのみ) #include "stdafx.h" #include "gakusei.h"    自動で作られたファイルをインクルードすることは出来ないのでしょうか? もしインクルードできるならどのようにしたらインクルードできるのでしょうか? オンラインマニュアルで調べたのですが、良くわかりませんでした。 /**オンラインマニュアルより、解決方法**/   stdafx.h からの VC_EXTRALEAN 行を定義する 1 つソリューションが#を削除できます。 これは、通信とレジストリとほかのエリアの MFC によってプロジェクトで直接が使用されない Win32 API を保持します。 含められない代替は、#のセットでの行が「#が VC_EXTRALEAN を定義するのを」置き換えるために、 上記で一覧された行を定義しこと、そしてハードウェアがそれその#が定義する削除によって選択的に登録されこと、です。 たとえば 通信 API が呼び出される場合、#がすべて上記で stdafx.h に「#が NOCOMM を定義すると、」行の以外、 一覧された行を定義するのを持つ可能性があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • yosi_yosi
  • ベストアンサー率35% (165/468)
回答No.1

#include "resource.h" を作られたファイルに書けば大丈夫です。 リソースIDは上記ファイルに書かれています。

hagimoto
質問者

お礼

解決しました。 これで先に進むことができます。 yosi_yosiさんありがとうございました。

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

その他の回答 (1)

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★多分『resource.h』がインクルードされていないと思います。 ・自作ヘッダやソースファイルに『IDD_』というダイアログの ID を使うには  自動生成されるリソース・ヘッダをインクルードしないといけません。 ・もし、リソース『rcファイル』を自作していて、そのヘッダも自作の場合は  そのヘッダをインクルードする事になります。 ・とにかく、ID の定数が記述されているヘッダをインクルードしているか確認  して下さい。 ・以上。おわり。

hagimoto
質問者

お礼

Oh-さんありがとうございました。 解決することが出来ました。 詳しい説明もありがとうございます。 理解することが出来ました。

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

関連するQ&A

  • MFCのエラーについて

    「プリコンパイル済みヘッダーの検索中に予期せぬ EOF を検出しました」 というエラーが出ました。これを直すのにいろいろ試し結局 #include "stdafx.h"の表記をすることで直りました。 このstdafxヘッダーファイルはMFCを使用した時点で用意されるのですがこれを使うとなぜこのエラーがなくなるのかがわかりません。 どなたかおしえてください。よろしくお願いします

  • [VC][ATL] 'ImageList_Read'が定義されていない!というエラーになるのは?

    VC++.NET 2002+WTL7.0で開発をしています。 アプリケーションウイザードでMFCアプリケーションを作成して、クラスの追加から「ATLのサポート」を追加します。そして、stdafx.hに #include "atlapp.h" #include "atlctrls.h" を記入すると 'ImageList_Read'が定義されていない というエラーになってしまいます。 とりあえずatlctrls.h内のエラー発生箇所をコメントアウトすることで対応しているのですが...どのようにしたらエラーがでないようにできるのでしょうか?よろしくお願いします。

  • Visual C++ 2008で<stdio.h>のインクルード文が使えない!?

    #include <stdio.h> int main(){ printf("hello!"); } で実行すると、 : warning C4627: '#include <stdio.h>': プリコンパイル済みヘッダーの使用を検索中にスキップされました ディレクティブを 'stdafx.h' に追加するか、プリコンパイル済みヘッダーをビルドし直します .\■■■.cpp(5) : fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか? と言ったエラーが起きてしまいます。 ちなみに、インクルードファイルらしき物を削除しまくった覚えがあります…。100%これが原因かと。 これが原因だとしたらどうすればいいんでしょうか? あと、DXライブラリが使えるように設定を変えたこともあります。 どこの何を変えたかは忘れてしまいましたけど。

  • ヘッダーの中でヘッダーをインクルードすると?

    「自作ヘッダーAの中で別の自作ヘッダーBをインクルードする」 という事はどういう意味になり、どういう事が起こるのでしょうか? 「自作ヘッダーAの中で別の自作ヘッダーBをインクルードする」と 自作ヘッダーAの中で、 Bをインクルードした位置より下に定義した定数や構造体は 未定義とエラーが出てしまいます。 (は2回以上自作ヘッダーAをインクルードした時のみですが。) なぜこのような症状が現れるのでしょうか? >コンパイラ:VC++ 2008 EE

  • BC++から VC++ へ

    BC++ ver5.0 をしばらく使っていました。 最近、 VC++ を使い始めました。  ソフトを移植したいのです。 方法は次のようにするつもりですが、 問題はないでしょうか。 1.OWL でのクラスを使用するために記入していた   ヘッダーファイルのinclude 部分を削除 2.VC++のクラスウイザードで作ったヘッダーファイルの最初にある   長い番号の部分を削除。 3.MFCのクラスに関するヘッダーファイルの   include は自分では記入しないですませる。   (include したつもり。) 4.自分で定義したクラスについてのヘッダーファイルは   include する。  以上で、問題はないでしょうか。 よろしくご指導ください。

  • Visual C++ ヘッダー情報の反映

    ヘッダー内の定義(の変更)が反映されないことがあります。 例えば、 "stdafx.h"において #define a 123 と定義して、関数項目main.cppとfunc.cpp両方でaを使うとします。 もちろんどちらも最初に#include "stdafx.h"とインクルードしています。 ですがdefine定義を#define a 456のように変更し実行すると、 main.cpp内ではa=456で動作し、func.cpp内ではa=123で動作する。 というような症状がしばしば現れます。 Visual stadio 2008でプログラミングしています。 c++ 6.0のときも同様の症状が現れていたのですが、何か問題があるのでしょうか? よろしくお願いします。

  • c++でのヘッダーファイルの循環参照

     c++言語においての質問です.  A, Bという二つのクラスを作ったとします.  宣言は.h,実装は.cppで行っています. 【A.h】 class A{ //内容 public: B ConvertB(); }; 【B.h】 class B{ //内容 public: A ConvertA(); };  上のように,クラスAではクラスBを返すメソッド. クラスBではクラスAを返すメソッドを実装したいとします.  しかし,単純に 【A.h】に #include "B.h" 【B.h】に #include "A.h" などとすると当然循環参照になってエラーになりますよね? ...とは言っても, 【A.cpp】や【B.cpp】にインクルードした所で, ヘッダ側でエラーが起きてしまいます.  そこで,私の場合は... 【A.h】の先頭に class B{ConvertAで用いるメソッド}; 【B.h】の先頭に class A{ConvertBで用いるメソッド};  というようにする事でなんとかエラーを避けています.    ...しかし,この方法ではAやBのクラスの定義を修正する場合に, 2つのファイルのヘッダを書き換えなければならなくなります. A, B, C, D...などとクラスが増えていくと, 一つのヘッダーファイルに4つも5つもクラスの定義を書かなければなりませんし, クラスのメソッドの定義を一つ変えようとしただけでも, 複数のヘッダの内容をいじらないといけません.  非常に読みにくいコードになってしまうのです.  そこで,もう少しスマートに実現する方法は無いでしょうか?  JavaやC#を使えば簡単に解決するのですが...ライブラリの関係でC++を使わなければ ならないのです.  もしくは,このような相互変換?のクラスを作る場合はみなさんはどのようにして ヘッダーファイルの循環参照を避けているのでしょうか?  例えば様々な形式の色空間のクラスなどだったら... RGBクラス YCrCbクラス HSVクラス ...など  このようなクラスを作った後で,RGBをYCrCbに変換出来るようにしたり, その逆へも変換出来るようにしたいのです.  それともこのような変換が出来るクラスを作る事は間違っているのでしょうか?    よろしくお願いします.

  • IMalloc_Free: 識別子が見つかりません<-どこにあるのでしょう

    日経ソフトウェア誌の記事をまとめた、「APIで学ぶWindows徹底理解」 http://software.nikkeibp.co.jp/software/backno/04apimook1.html というムック本のコードをなぞってみようとしているのですが、タイマーを用いた間欠ファイルコピーのソースを、VC++2005standard版のプロジェクトに載せ替えてビルドすると、 「error C3861: 'IMalloc_Free': 識別子が見つかりませんでした」 というエラーが1個残り、ビルドできません。 ソースは上記URLからダウンロードできる、apip3.lzhのtimer\FileCopy.Cにありますが、下記ヘッダーファイルを指定しております。 #define COBJMACROS #include <windows.h> #include "stdafx.h" #include<Commdlg.h> #include <shlobj.h> #include <stdlib.h> #include <stdio.h> #include <objidl.h> IMalloc_Freeはどこで規定しているのでしょうか。WEB上では、日本語の情報はほとんど見つかりませんでした。また、C:ドライブ全体に全文検索をかけても、ヘッダーファイル等の中ではヒットしませんでした。 英文のサイトで見つけた下記定義を試しに加えてみると、エラーが出なくなりましたが、意味も分かっていないので心配です。 #define IMalloc_Free(self, list) ((self)->Free(list)) #define IMalloc_Release(self) ((self)->Release()) 正解をご存じの方、よろしくお願いいたします。

  • include<wtsapi32.h>でエラーがでる

    .netを使ってWTSQurySessionInformationのAPIを使う C言語プログラムを作ろうとしています。 ライブラリーにwtsapi32.lib ヘッダーにwtsapi32.h が必要と書いてあったので ライブラリーをインポートし、ヘッダーにPSDKの最新のものをいれましたが、エラーがでます。 c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\WtsApi32.h(109) : error C2061:構文エラー : 識別子 'LPWSTR といったものがたくさんエラーがでます、どうすれば 解決できるでしょうか。調べてもわからないため困っています。OSはXPを使ってます。

  • 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クラスの作成などのことしか書いてないので、ちょっとわからなくて困っています。よろしくお願いします。

このQ&Aのポイント
  • MFC-J7300でスキャンができない問題が発生し、エラーメッセージが表示されるという状況です。電源を入れ直しても同じエラーが繰り返し表示され、全体の機能が使用できません。
  • 質問者の環境はWindows10で無線LAN接続しており、関連するソフトやアプリは特にありません。その他の電話回線の種類はNTTフレッツマイタウンです。
  • この問題の解決方法について情報をお知りになりたいとのことです。MFC-J7300でスキャンができない原因や解決策をご教示ください。
回答を見る

専門家に質問してみよう