ダイアログクラスの作成が上手くいきません。 – プログラミング – Home

ダイアログクラスの作成が上手くいきませ...
 
通知
すべてクリア

[解決済] ダイアログクラスの作成が上手くいきません。


ごみ
 ごみ
(@ごみ)
ゲスト
結合: 23年前
投稿: 20
Topic starter  

すみません、お聞きしたいことがあります。

MFCを使って、ウィンドウを表示するプログラムを作成しました。メニュー項目は「ファイル」だけです。

その後、VCの「挿入」ー「リソース」メニューを選択してリソースエディタからダイアログを作成しました。

その後は何もせず、「ビルド」したのですが、既にリソースファイルのところでエラーが生じます。

リソースエディタでダイアログをデザインすると、自動的にリソースファイルが記述されてしまうのでその理由がわかりません。

ダイアログを作成しただけだとエラーが生じるのでしょうか?ダイアログをデザインした後、何かしておかなければ処理や、用意しておくべきファイルがあるのでしょうか?その他注意事項があるのでしょうか。マニュアルに沿って作成したはずなんですけど・・・

すみません、教えていただけませんか。お願いします。


引用未解決
トピックタグ
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

こういう場合、どんなエラーが出たのか明記してください。

そのほうが格段とレスしやすくなりますよ。(^^;


返信引用
ごみ
 ごみ
(@ごみ)
ゲスト
結合: 23年前
投稿: 20
Topic starter  

お返事ありがとうございます。
たしかにご指摘のとおりです。すみません。

C:\test1.rc (20): error RC2144 : PRIMARY LANGUAGE ID not a number
C:\test1.rc (29): error RC2135 : file not found: 100
C:\test1.rc (31): error RC2164 : unexpected value in RCDATA
C:\test1.rc (33): error RC2135 : file not found: MENUITEM
C:\test1.rc (34): error RC2135 : file not found: MENUITEM
C:\test1.rc (35): error RC2135 : file not found: END
C:\test1.rc (70): error RC2135 : file not found: DIALOG

というえらーです。リソースファイルの
// 日本語 resources
// Menu
に関する部分です。ただ、// Menuに関しては、ダイアログをデザインしない状態、つまりウィンドウが表示されるだけの時はエラー出てこなかったんですけど。

なにかインクルードすべきファイルとかあるんですか?


返信引用
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

/////////////////////////////////////////////////////////////////////////////
// 日本語 resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)
#ifdef _WIN32
LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT // <<<<<------------この行を編集してしまったのでは?
#pragma code_page(932)
#endif //_WIN32

rcファイルの、この部分がおかしくありませんか?

リソースをテキスト形式で開きましょう。

sugarさんに教わったのですが、ファイルー開く で
拡張子がrcのファイルを選び、用途 コンボボックスで
テキストを選択し内容をチェックしてください。


返信引用
ごみ
 ごみ
(@ごみ)
ゲスト
結合: 23年前
投稿: 20
Topic starter  

Bunさんお返事遅れてごめんなさい。
確かに、ご指摘された行のエラーが出るんですが、編集してないので・・・
以下にリソースのエラーが出る部分を載せます参考までに。

ちなみにプロジェクトは「Win32Application」で作成し、「空のプロジェクトを作成」を選んだんですけど、これが原因ですか?

//Microsoft Developer Studio generated resource script.
//
#include resource.h

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include test1_def.h

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// 日本語 resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)
#ifdef _WIN32
LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
#pragma code_page(932)
#endif //_WIN32

/////////////////////////////////////////////////////////////////////////////
//
// Menu
//

IDR_MAINFRAME MENU DISCARDABLE
BEGIN
POPUP ファイル
BEGIN
MENUITEM 開く, IDM_FILE_TEST
MENUITEM アプリケーションの終了, IDM_FILE_EXIT
END
END

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//


返信引用
ごみ
 ごみ
(@ごみ)
ゲスト
結合: 23年前
投稿: 20
Topic starter  

ちなみに、もともとリソースは、以下の記述がしてありました。
エディタでダイアログを新規にデザインしただけなのでリソースだけが変更されたと思うんですけど。

#include test1_def.h

IDR_MAINFRAME MENU DISCARDABLE
BEGIN
POPUP ファイル
BEGIN
MENUITEM 開く, IDM_FILE_TEST
MENUITEM アプリケーションの終了, IDM_FILE_EXIT
END
END
STRINGTABLE PRELOAD DISCARDABLE
BEGIN
IDR_MAINFRAME test1
END


返信引用
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

>ちなみにプロジェクトは「Win32Application」で作成し、「空のプロジェクトを作成」を選んだんですけど、
>これが原因ですか?

これならMFCは使っていませんよね?

>ちなみに、もともとリソースは、以下の記述がしてありました。
>エディタでダイアログを新規にデザインしただけなのでリソースだけが変更されたと思うんですけど。

Win32Applicationでダイアログをデザインしただけでは、MENUのリソースは作成されません。
別のプロジェクトで試してみて、違いを比べてみてはいかがでしょうか?

>STRINGTABLE PRELOAD DISCARDABLE
>BEGIN
> IDR_MAINFRAME test1
>END

この辺も自動では作成されないと思いますし・・・


返信引用
ごみ
 ごみ
(@ごみ)
ゲスト
結合: 23年前
投稿: 20
Topic starter  

たびたびすみません。ごみです。

どなたか今まで作成してきたプログラムに

1「挿入」-「リソース」メニューを選択する
2「Dialog」を選び、「新規作成」を押す。(ダイアログ編集ウィンドウが表示)
3ダイアログをデザインする

の手順でダイアログリソースを追加した方いらっしゃいますか?

この後、ClassWizard でクラスの追加をしたんですけど(この時色々メッセージボックスが出る)それがいけないのでしょうか?

なにか手がかりが欲しく板を汚してしまいました。すみません


返信引用
ごみ
 ごみ
(@ごみ)
ゲスト
結合: 23年前
投稿: 20
Topic starter  

Bunさん、いつもいつも丁寧にお返事ありがとうございます。

MFCを使用していますが、やはり問題ありましたか?
ただ、ウィンドウ表示するプログラムは、「Win32Application」で作成し、「空のプロジェクトを作成」を選んで作成しました。全部ファイルは手書きです。

このウィンドウを表示するプログラムのリソースファイルに記述を追加して、「ファイル」というメニュー項目を表示させました。この「ファイル」を選択するとOnFileTestメソッドが呼ばれるように記述してあります。

このOnFileTestが処理をする記述に ダイアログオブジェクトを作成し、DoModalで表示させようとしています。
この表示させるダイアログを「挿入」「リソース」からデザインしようとしています。

なにか他の方法で作成したほうが良いのでしょうか?


返信引用
ごみ
 ごみ
(@ごみ)
ゲスト
結合: 23年前
投稿: 20
Topic starter  

ソースは、単純に以下の記述のみです

#include <afxwin.h>
#include <afxext.h>
#include test1_def.h
#include test1.h

Test1 z_app;
Test1Wnd z_mainWnd;

Test1::Test1()
{

}

Test1::~Test1()
{
}

BOOL
Test1::InitInstance()
{
if (z_mainWnd.LoadFrame(IDR_MAINFRAME) == FALSE) {
return FALSE;
}
m_pMainWnd = &z_mainWnd;

m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}

Test1Wnd::Test1Wnd()
{
}

Test1Wnd::~Test1Wnd()
{
}

BEGIN_MESSAGE_MAP(Test1Wnd, CFrameWnd)
ON_COMMAND(IDM_FILE_TEST,OnFileTest)
ON_COMMAND(IDM_FILE_EXIT,OnFileExit)
END_MESSAGE_MAP()

void
Test1Wnd::OnFileTest()
{
test1Dlg dlg;
dlg.DoModal();

}

void
Test1Wnd::OnFileExit()
{
DestroyWindow();
}


返信引用
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

>MFCを使用していますが、やはり問題ありましたか?

>ただ、ウィンドウ表示するプログラムは、「Win32Application」で作成し、
>「空のプロジェクトを作成」を選んで作成しました。全部ファイルは手書きです。

普通はこの場合 WinMain関数からはじまるプログラムを記述します。
この場合にはMFCを使わないのが一般的だと思います。

MFCを使う場合にはMFC AppWizardからプロジェクトを使えばよいと思います。
MFC AppWizardからプロジェクトをつくって、ごみさんのおっしゃる手順で
ダイアログを作成してみましたが、なんの問題もありません。

一度、別のプロジェクトで試してみてはいかがでしょうか?

私にはこの程度したアドバイスできません。m(__)m


返信引用
ごみ
 ごみ
(@ごみ)
ゲスト
結合: 23年前
投稿: 20
Topic starter  

Bunさん、お返事遅れてごめんなさい。
#include afxres.hを.rcファイルに記述したら上手くいきました。
色々試しました。ありがとうございます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました