resource.hについての質問

このQ&Aのポイント
  • 自動的に作られるresource.hについての質問です。
  • bitmapの表示に関する問題が発生しており、resource.hの扱い方について質問しています。
  • プロジェクト内のフォルダにresource.hを配置してビルドしてもbitmapが表示されない問題が発生しており、解決方法を知りたいです。
回答を見る
  • ベストアンサー

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

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

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

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

★アドバイス ・パスが違う可能性が高い。  リソース・スクリプトでも resource.h をインクルードしています。  そこでリソース・スクリプトにある include 文にパスを付ければ解決します。 (自動生成時) project ├resource.h └sample.rc ↓ (フォルダに移動) project ├abc/resource.h └sample.rc この場合 sample.rc 内にある include 文にパスをつけます。 (#include "abc/resource.h") このように修正すれば直ります。 ただし、VC++2003 でリソースを修正するとまた元に戻ってしまうため修正するのが 面倒ならば、resource.h と sample.rc を同じフォルダに置きます。(お勧め) また何かあれば補足して下さい。

dotneer
質問者

お礼

早速試してみましたところうまくいきました。 リソースファイルで(#include "abc/resource.h")としただけでERRORも特に起こらず、うまくいきました。(#include "../abc/resource.h")ではダメなんですね。 勉強になりました。ありがとうございます。

関連するQ&A

  • resource.hの変更

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

  • Resource Hacker(4.53)

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

  • 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ライブラリが使えるように設定を変えたこともあります。 どこの何を変えたかは忘れてしまいましたけど。

  • VC++ Windows2000 でリソースが開けない

    環境:Windows2000SP2 Visual C++ 6.0 SP5 VC++ 超初心者です。 MFCアプリウィザード(EXE)でSDIアプリケーションのスケルトンを作成し、手を加えずにビルドしましたが、エラー 「F:\…test5\test5.rc(11) : fatal error RC1015: cannot open include file 'afxres.h'.」 rc.exe の実行エラー が出て実行できません。 また、リソースウィンドウを開いてみると、リソースが一つも表示されずにその代わりに、 「ロードに失敗しました」と表示されています。 VC++をWindows2000で使用する場合には、何かしなければいけないのでしょうか?

  • バイナリデータで表示or再生するにはどうしたらいいか

    WindowsAPIで画像ファイルや音楽ファイルをバイナリデータとして読み込んで表示、再生するにはどうしたらいいでしょうか?MCI関係やLoadImageを使ってやるとなるとファイルを指定したりリソースとして取り込まないと表示されないと思うので質問しました。 プラットフォームはMicrosoft Visual Studio.NET2003です。  よろしくお願いします。

  • BCC5.5.1とBCCFormを使い、ビットマップを表示するプログラムを書いたが、ビットマップが表示されません。

    いつもお世話になっております。 小生、只今BCC5.5.1とBCCFormを使い、Win32APIを勉強しています。 今回、"猫でもわかるWindowsプログラミング第2版"の第9章を参考にビットマップを表示するプログラムを書き、 以下の手順で実行ファイルを作成、実行してみましたが、ビットマップが表示されません。 1.bcc32 -W source.cpp 2.brc32 Bitmap.rc source.exe 以下にソースを記述します。 source.cpp ※WndProc関数以外は猫でもわかると同じなので省略させていただきます。 LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { HDC hdc, hdc_mem; PAINTSTRUCT ps; HBITMAP hBmp; BITMAP bmp_info; int w, h; switch(msg){ case WM_PAINT: hdc = BeginPaint(hWnd, &ps); hBmp = LoadBitmap(hInst, MAKEINTRESOURCE(MYBMP)); GetObject(hBmp, (int)sizeof(BITMAP), &bmp_info); w = bmp_info.bmWidth; h = bmp_info.bmHeight; hdc_mem = CreateCompatibleDC(hdc); SelectObject(hdc_mem, hBmp); BitBlt(hdc, 0, 0, w, h, hdc_mem, 0, 0, SRCCOPY); DeleteDC(hdc_mem); DeleteObject(hBmp); EndPaint(hWnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return (DefWindowProc(hWnd, msg, wp, lp)); } return 0; } そしてリソーススクリプトです Bitmap.rc //----------------------------------------- // BCCForm Ver 2.41 // An Easy Resource Editor for BCC // Copyright (c) February 2002 by ysama //----------------------------------------- #include "ResBitmap.h" //-------------------------- // イメージ(MYBMP) //-------------------------- MYBMP BITMAP DISCARDABLE "C:\Documents and Settings\ShuNakagawa\My Documents\C\test.bmp" そしてリソースヘッダです(記述の無い箇所は省いています) ResBitmap.h //----------------------------------------- // BCCForm Ver 2.41 // Header File for Resource Script File // Copyright (c) February 2002 by ysama //----------------------------------------- //--------------------- // イメージリソース //--------------------- #define MYBMP 100

  •  BitBltでの表示での問題です。

    WindowsAPIでの描画系の質問です。 WindowsAPIで、bitmapファイルを描画するAPI、BitBltがあるのですが、 画像を読み込み、これを表示させると透過処理がないことがわかります。 そこでBitBltで、マスク処理した画像を用意し、表示させることで表示させたくない部分を 透明にさせることができるみたいですが、どうしてそういったことが可能なのでしょうか? bitmapファイルの黒い部分と別のbitmapファイルの白い部分を重ねることでできるのですが なぜ白と黒とで透明になるのか分かりません。 どうしてでしょうか? 以上です。 よろしくお願いします。

  • Visual Studio2008でヘッダファイルが更新されない

    C++で、単純な計算プログラムを作成しています。 main.cとinit.hの2つのファイルで構成しています。2つとも、プロジェクトの親フォルダに入っています。 ヘッダファイルを変更して、ソリューションのリビルドをしても、ヘッダファイルの変更が反映されません。 構造体をヘッダファイルに記載していて、メンバを追加してリビルド後も反映されません。#defineでヘッダに記載していた定数を変数に変更しようとして、define文を消してリビルドしても、その値がずっと定数のままになってしまいます。 init.hファイルのファイル名をinit2.hに変更して、includeファイルも#include "init2.h"に書き換えてビルドすると反映されます。非常に不思議です。どこかVisual Studioの設定のような気がするのですが、環境設定の方法がわからず困っております。 どなたかご教示・ヒント・キーワード等よろしくお願いします。

  • error RC2104について

    いつもお世話になってます。 VS2005でC++を用いてWindowsアプリケーションを作成してます。 今までのリソーススクリプトに   MENUITEM "ヘルプ(&H)", IDM_HELP またヘッダースクリプトに   #define IDM_HELP 600 を追加したところ、以下のようなエラーが出ました。   error RC2104 : undefined keyword or key name: IDM_HELP ------------------------------ Webで調べていろいろ試してみたのですが改善されません。 ソースファイルに   #include <winuser.h> を追加したり、ヘッダーファイルに   #ifdef IDC_HELP   #undef IDC_HELP   #endif   #define IDC_HELP (-1) を追加してもだめでした。 まだまだ未熟な知識ですので、とても困っております。 ぜひご教授お願いいたします。

  • VC++2010の「#include <」

    VC++ で、他人の作ったソースコードをビルドして実行してみています。 (WinPcapのデベロッパ向けのライブラリを使った、サンプルプログラムです。) VC++自体、あまり理解が深くないのですが、 「#include <」まで書くと、「ヘッダファイル名が表示される」プロジェクトと、「そうではない」プロジェクトがあります。 「そうではない」方のプロジェクトだと、ビルド時にincludeするライブラリが足りないとか、そんな感じのエラーが表示されます。 ぱっと見の違いは、「ヘッダファイル名が表示される」プロジェクトの場合は、 ソリューションエクスプローラに、「外部依存関係」というフォルダのショートカットがあり、ライブラリがどっさりあります。 「そうではない」プロジェクトについても、「#include <」で、ヘッダファイルを表示してくれるようにしたいのですが、どの様にすればよいのでしょうか?★ プロジェクトのプロパティの、 C++>プリプロセッサ>プリプロセッサの定義 リンカー>入力>追加の依存ファイル はどちらのソースも同じにしたのですが…。

専門家に質問してみよう