• 締切済み

resource.hの変更

質問です resource.hの中のリソースIDの中身を変更したら resource.h このファイルはMicrosoft Developer Studio以外で修正されています。○○.rcを再ロードしますか? とでてきてここで「はい」を選んだらダイアログ画面などが開けなくなってしまいました。 どうしたらよいでしょうか?

みんなの回答

  • noocyte
  • ベストアンサー率58% (171/291)
回答No.1

「はい」を押したときにエラーダイアログが出ませんでしたか? resource.h の中で定義されているシンボル名を変更したりしたため, *.rc で使用しているそのシンボル名が未定義だというエラーになっていると思われます. 可能ならば resource.h を元に戻し,次のようにして Developer Studio に *.rc を再ロードしてください.(Visual Studio 2003 の場合) ・リソースビューの *.rc のフォルダ・アイコンの左の [-] を1回 ([+] ならば2回) クリックする. もし resource.h の元の内容を覚えていなければ,そのままで *.rc を 再ロードしてみて,どのようなエラーが出るかを調べ,それを修正してください. たぶん次のようなエラーメッセージが出るでしょう. error RC2104 : undefined keyword or key name: IDC_xxxxx もしこの IDC_xxxx を別の名前 IDC_yyyy に変更していた場合は, IDC_xxxx に戻してください. (あるいは *.rc (およびすべてのソースファイル) の中の IDC_xxxx を IDC_yyyy に変更する.)

masa_1216
質問者

お礼

リソースIDの数字の方を変更したんですが今日パソコンを立ち上げてVCを起動させたら普通にダイアログ画面が開けました。 よくわかりませんがとりあえずなんとかなりました。

関連するQ&A

  • 自動的に作られるresource.hについて

     WindowsAPIで分からないことがあるので尋ねに来ました。  プラットフォームはVS.NET2003でCで記述しています。 bitmapをリソースに取り込むと自動的にresource.hが作られますよね?  resource.hをプロジェクト内に作ったフォルダ内に入れて、("../****/resource.h"というふうにして)もう一回ビルドするとbitmapが表示されません。また、フォルダ内から出してそのままヘッダーファイルをインクルードしてもインクルードしてくれません。リソーススクリプト(.rc)の方で何かやらなければいけないのか、どうしたらbitmapが表示されるのか分かりません。  一応フォルダ内に入れないでそのままヘッダーファイルを読み込むと表示されます。しかし一度フォルダ内にいれて#include "../****/resource.h"とするとbitmapは表示されません。しかも戻して"resource.h"としても今度はERRORで"リソースIDが定義されていません"といわれてしまいます。 どうしてこうなるのでしょうか?

  • resource.h

    win32、VC++2005で開発しております。 resource.h内の#defineで切ってあるIDの番号が重なっていたため 各コントロールの色を変更しようとすると同時に他のコントロールの色も変化してしまいました。 かなりのコントロール量だったのでExcelで開いて一気にインクリメントして再ロードするとコントロールの色が散らばってしまいました・・・ この方法はまずかったでしょうか? 色の変更は case WM_CTLCOLORSTATIC : i = GetWindowLong( (HWND)lParam, GWL_ID ); hdc = BeginPaint(hDlg, &ps); if ( i == IDC_ICHI_S ) { //位置出し SetTextColor( (HDC)wParam, RGB( 255, 255, 255 ) ); SetBkColor( (HDC)wParam, RGB( 0, 0, 255 ) ); return (LRESULT)CreateSolidBrush( RGB( 0, 0, 255 )); } if ( i == IDC_NIN_S ) { //任意(未知)の器械点セット SetTextColor( (HDC)wParam, RGB( 255, 255, 255 ) ); SetBkColor( (HDC)wParam, RGB( 0, 128, 0 ) ); return (LRESULT)CreateSolidBrush( RGB( 0, 128, 0 )); } EndPaint(hDlg, &ps); こんな感じでやってます。 resource.hのID名は変更してませんのでダイアログはちゃんと開きます。 resource.hの#defineの値は自動で割り振られたと思いますが、ダイアログ画面を複数書いて値が重複するのは変だと思いますがどうなんですか? また、見やすいように各画面ごとにIDを束ねようとしてるのですが普通なことでしょうか? プログラムコーディングの基準?常識?がよくわからないのでお願いします。 コントロールも膨大になってきて見ずらいです。 通常はどのように見やすくするのでしょうか? プログラム初心者なので分かり易い指摘でお願いします。

  • MFCのダイアログのリソースが更新されない

    Visual studio 2008(以後VS)のMFCのプロジェクトでリソース(ダイアログ)が 更新されなくなりました。原因はどういうのが考えられますか? リソースのIDがおかしくなっているのでしょうか? 具体的には、 ダイアログを追加、変更して更新→実行しても変更が反映されません。 リソースエディタで、表示上は更新されているのですが、 リソースファイル(以後rcファイル)をエディタ開いて中身を確認しても更新されていません。 直接、エディタでrcファイルを変更したら反映されますが、調整が面倒です・・・。 最悪、バックアップを使って差分を実装しなおしですね・・・ ■原因で思い当たる節 VSでリソースエディタを開きながら、外部のエディタでもrcファイルを更新し、 変更後VSで外部での更新メッセージがでたとき、いいえ(更新しない)と してしまったかもしれません。

  • resource.hに残る不要な#define

    VC++6.0でコントロールを作りプロパティからIDを変更するとresource.hに初期の宣言が残ります。 コントロールが多いと#defineが列挙され 見にくいのですが無視しても構わないのでしょうか? また100個近くあるチェックボックスの初期状態を保持しておく方法で何かいい方法はありませんか? iniファイルかレジストリか、どう格納するのが良いか知りたいです。

  • Resource Hacker(4.53)

    Resource Hacker(4.53)であるEXEファイルを開いてみました。 項目で添付図のように星が黄色の場合はリソースが表示されますが  オレンジ色の場合(1409)は全く表示されませんでした。 この場合は、表示も変更も出来ないの意味ですか? 他に利用できそうなリソースエディタはありますか?

  • VS2005 C++ Expでダイアログの変更 と、Form.hについて

    VisualStudio2005 C++ Express Editionでプログラムを作成しています。 Unix-C、xviewは少し経験があるのですが、VC++はまだ始めて2ヶ月程度です。 質問ですが、 if(MessageBox::Show("実行します", "Dialog",    MessageBoxButtons::OKCancel) !=    System::Windows::Forms::DialogResult::OK) {    return; } こんな感じで書くと、[OK][Cancel]のボタンがついたダイアログが表示されます。 そこで、ボタンを[Aを実行][Bを実行][Cを実行][Cancel]のように4つ、もしくは何か別のコントロールをレイアウトしたりして、ダイアログボックスのデザインを変更したいのですが、Expressではできない機能なのでしょうか? ヘルプを漁ると、「ダイアログ ボックスの新規作成」というタイトルで 「リソース ビューで .rc ファイルを右クリックし、ショートカット メニューの [リソースの追加] をクリックします。」・・・ みたいな手順でやるのではないかと想像できるのですが、Expressでは.rcファイルが編集できないようなのです。 app.rcのところに「リソースの編集はVisual C++ Express SKUでサポートされていません」と表示されています。 質問1:Expressでは可能?不可能? 質問2:Standard Editionを購入したとして、方法は上記で合っていますか? 質問3:すごく初歩的な質問ですが、クラス以外のソースコードはすべてForm.hに詰め込むという書き方でいいんでしょうか?     C++のクラスがまだよく理解できていないので、Cライクに書いていると     すべてがForm.hに入ってしまい、やたらと見難くなってしまうのですが・・・      よろしくお願いします。

  • リソースの編集ができません。リソースビューが開かない

    VC++2005で、以前 .rcや.rc2ファイルをダブルクリックすると、 リソースエディタが開いて、ダイアログボックスの編集をツールボックスを使って設定しておりましたが、現在、ダブルクリックしても何も出てこなくなりました。 メニューの表示 - リソースビューも開きません。 何か設定が変わってしましたのでkしょうか? それともVisualStudioが壊れたのでしょうか?

  • windowsプログラミング

    "猫でもわかるwindowsプログラミング"を読みながらWin32 APIを勉強しているのですが、なかなかうまくいかないところがあります。 モードレスダイアログボックスを表示してコントロールも問題なく行えているのですが、ダイアログボックスのウィンドウについている赤い閉じるボタンが反応を返しません。 自分で作った閉じるボタンでは正常に閉じるのですが、ウィンドウの閉じるボタンを押しても閉じません… ダイアログボックスのボタン類のIDと同様にウィンドウについている閉じるボタンにもIDは存在するのかと思ったのですが、resource.hを見ても書かれていないのでなさそうですね… メインウィンドウであればWM_CLOSEメッセージが送られてきますが、この場合も何かしらのメッセージが送られてきているのでしょうか? Windows7 , Visual Studio 2010 , C言語で書いています。

  • WIN XP起動の最終局面でERRORのダイアログ

    メモリ確保のため、ファイルをいろいろ削除した後、PCを起動したら、最後に「ERROR:Unable to load resource DLL」と表示されたダイアログが現れます。 OKをクリックすれば、その後は何の支障もなく使用できます。 何か、大事なファイルを捨ててしまったのでしょうか? また、そのダイアログを表示しないためにはどうしたらいいでしょうか?

  • 同一フォルダ内にファイルコピーした際の「コピー ~ 」を変更したいです

    同一フォルダ内にファイルコピーした際の「コピー ~ 」を変更したいです。 (環境: Windows XP Professional SP3) 具体的には「コピー ~ ファイル名.拡張子」から「ファイル名.bak.拡張子」へ変更することで、 Ctrl + C, Ctrl + Vで簡単にバックアップファイルらしいファイル名にしたいと考えています。 ネットで検索した所、以下のようなページが見つかりましたので、 実際にshell32.dllの中身をResource Hackerにて修正しようとする所までは出来ました。 http://q.hatena.ne.jp/1218164055 http://oshiete1.goo.ne.jp/qa4704776.html ところが「コピー ~」や「コピー」、「~」で検索しても、 ファイルコピーした際の文字列を扱っていると思われるような部分が見つかりませんでした。 もしご存知の方や実際に変更された方が居られましたら、該当箇所をご教示願います。 なお、shell32.dll修正のリスクは充分理解しております。