![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?08b1c8b)
初めて質問させていただきます。よろしくお願いします。
当方、VisualStdio2005内のC++2005で、
ダイアログベースにてツールを開発していました。
ある日、ダイアログ上に多くのEditコントロールを作成(追加)することになり、
ダイアログリソースをVC内のリソースエディタにて、
テキスト形式でコントロールを追加していきました。
そのときは、テキストでの変更内容がダイアログにも反映されていたのですが、
その後はダイアログにツールボックスでのコントロールの追加やサイズ変更など、
見た目には反映されてもビルド後に反映されなくなってしまいました。
クリーン後のリビルドでも、問題は解決しません。
原因と対策をご存知の方、いらっしゃいましたらご教授いただけませんでしょうか。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
VC2005は初心者です。
VC6.0は仕事で使っていました。私はダイアログリソースをテキスト形式でコントロールを追加したことがないので、基本的にご期待に添える回答ではないと思いますが、ご参考までに。
回答する前に質問ですが、もっと詳しい問題の状況、状態を教えていただけませんか?「ビルド後に反映」とは?実行までおこなっていない、ということですか?
以下、回答です。
ダイアログリソースとダイアログのウィンドウの関連付けは正しいですか?ダイアログIDが間違って指定されていませんか?変更対象のダイアログとビルド後の実行したダイアログが違っているなんてことがあったりします。
上記のような間違いがなければ、Editコントロールを1つだけにしてビルド&実行してみてください。それで問題があれば、Editコントロールの書き方に問題があるかも?(いや、その場合はコンパイルでエラーになるはずだけど)。問題がなければ、Editコントロールを1つずつ増やしてビルド&実行する。ある程度増やしたら、思い切って半分くらい増やしてみたりしてもいいと思います。
この回答への補足
chaigon様、ご回答いただきありがとうございます。
また、お返事が遅れまして申し訳ございません。
説明の日本語が少々不明瞭だったようで、こちらもお詫びさせていただきます。
「ビルド後に反映されない」というのは、
一般的にボタンやエディットボックスなどを配置するグラフィカルなエディタ(すみません、正式名称はわかりません)上で、
・コントロールの位置を移動する、サイズを変更する
・コントロールを新しく追加する
などの「変更」を行っても、ビルド後のexeでは「変更」が行われない、ということです。
Aというデザインを修正してA'というデザインをつくり、ビルドしてexeを生成。
exeのデザインはA'になっているはずなのに、Aのまま・・・という感じです。
自分の拙い知識と技術の範囲内ですが、
ダイアログリソースとダイアログのウインドウの関連付け、またダイアログ自身のIDも間違ってないと思っております・・・(後述します)
ご指摘の実験を行ってみました。
バックアップを取り(もちろん関連のないフォルダで)、
Editコントロールをひとつにして(それ以外のコントロールを全部削除)ビルド・実行しましたが、
ダイアログ上にeditがひとつあるだけ・・・の状態のはずなのに、やはりほかのコントロールの削除前の状態になってしまいます。
ボタンに割り当てた関数などのソース自体は消していないので、
残っているボタンを押すと、それらの関数が走ります。
ちなみに、私も最近までVC6.0を使用しておりました。
当時も似たような状況になったこと(コントロールを大量に追加しなければいけなくなった)がありまして、
ひとつずつ追加するのが面倒なので、テキストでガンガンコントロールを増やしましたが、
テキストの変更結果も反映されるし、当然グラフィカルなエディタでの修正も反映されていたので、
今回の原因がさっぱりわからないのです。
先ほど後述と書いたことですが、
chaigon様の
>ダイアログリソースとダイアログのウィンドウの関連付けは正しいですか?ダイアログIDが間違って指定されていませんか?変更対象のダイアログとビルド後の実行したダイアログが違っているなんてことがあったりします。
のご指摘を、自分が正しく確認できていないと思いますし、
状況を冷静に考えても、この指摘が正しいように思います。
そこでぜひご教授願いたいのですが、
リソースとウィンドウの関連付けは、どのようにすれば確認できるでしょうか。
自分は、ダイアログヘッダ内、ダイアログデータの宣言部で、
enumにて配置されている一番先頭のIDが、
Resource.hにて割り当てられており、
ダイアログリソースファイル(.rcファイル)にてそのIDで各コントロールが配置されている
→関連付けられている
だと思っていますが、ちょっと違うのでしょうか・・・
ちなみに現在は、テキストでの変更はexeに反映されるので、
とりあえずの応急処理としてはテキスト上でコントロール配置(座標を全部計算・・・)し、
Resource.hにて割り当てを確認、という作業をひたすら繰り返しています。
・・・つまり、根本的な解決には至っていないのです(;;)
よろしくお願いします。
No.4
- 回答日時:
> 直接編集したモノは保存後にダイアログエディタで見るリソースに反映されています(逆は反映されません)。
> ダイアログエディタでの変更を保存する対象となるリソースファイルも同じです(保存結果はなにもかわりませんが)。
後者のリソースエディタで編集した場合に「保存結果はなにもかわりません」ということは、変更内容がリソースファイルに反映(保存)されないということでしょうか?
保存されないのであれば以下のような原因が考えられますが、どれも可能性は低いです。
・エディタなどでリソースファイルが開かれていて保存に失敗している(この場合は通常警告が出るはずなので可能性低いですが...)
・別ファイルに保存している(同じファイルということなので可能性低いですが...)
・保存する前にファイルを見ている(まさかとは思いますが...)
保存されるのにコンパイルしても実行時は編集前のダイアログが表示されるということであれば、リソースがコンパイルされていないとしか考えられません。
・メニュー「ビルド」⇒「ソリューションの消去」
・メニュー「ビルド」⇒「ソリューションのリビルド」
を行っても編集前のダイアログが表示される(=リソースファイルのダイアログの定義内容と実行ファイルで表示されるダイアログが異なる)というのであれば、もうわかりません。Microsoftに聞いた方がよいと思います。
この回答への補足
itohoo様、度々ありがとうございます。
>後者のリソースエディタで編集した場合に「保存結果はなにもかわりません」ということは、変更内容がリソースファイルに反映(保存)されないということでしょうか?
そうなのです。
>・エディタなどでリソースファイルが開かれていて保存に失敗している(この場合は通常警告が出るはずなので可能性低いですが...)
警告も出ず、保存した旨のメッセージが出ます。
>・別ファイルに保存している(同じファイルということなので可能性低いですが...)
当然ですが、パスもファイル名も同じです。
違うならば新たにファイルが増えるはずですが、これもありません。
>・保存する前にファイルを見ている(まさかとは思いますが...)
さすがにいくらなんでも…
保存後に古いものを保存なども当然してません。
今回はとりあえず必死にテキストで全部整えて事なきを得たので、
次回作成時はゼロから作成することで対応しようと思います。
Microsoftに聞くのも一つの解決法かと思いますが、
この解決までにかかる時間とコストを考えると、
組み立てなおしたほうが早いと思われるので、
時間ができたら再度調べてみようと思います。
No.3
- 回答日時:
>>実行時に表示させているダイアログと手動で編集したダイアログは、そもそも同じものなのでしょうか?
>テキストでの変更はexeに反映できることと、ANo.1の補足内容から、
>同じだと思っています。
>他に確認する方法があるならば、その限りではないのですが・・・
これが同じと思ってる根拠がわかりません。
リソースエディタで編集したモノが実行時に表示されない、直接編集したものが実行時に表示される、ということから、リソースエディタで編集しているダイアログリソースと直接編集したものが異なるものである、と考える方が自然ではないですか?
>>リソースエディタで編集する際に、エディットボックスではないID(検索しやすいユニークな名称にする)を持ったコントロールを追加してプロジェクトを保存し、
>>リソースファイルをテキストエディタで開いてそのIDを検索したときに、
>>それが自分で直接追加したエディットコントロールと同じダイアログリソース内にありますか?
>
>VC内のリソースエディタを使用しているため、
>同時にResource.hも変更(この場合は追加したIDのナンバーの定義を追加)した上で、プロジェクトを保存、
>外部よりテキストエディタにてリソースファイルを開いてみましたが、
>問題のダイアログリソース内に存在していました。
「問題のダイアログリソース」が何を指しているのかわかりませんが、このときにリソースエディタから追加したコントロールは実行時に表示されないと思いますので、試しにテキストエディタでリソースファイルを開いてこのコントロールを検索して、その直下にエディットコントロールを入れてみても表示されないと思いますが、いかがでしょうか?
この回答への補足
itohoo様、再度のご回答ありがとうございます。
言葉が足りなかったようで、お詫びいたします。
>これが同じと思ってる根拠がわかりません。
直接編集したモノは保存後にダイアログエディタで見るリソースに反映されています(逆は反映されません)。
ダイアログエディタでの変更を保存する対象となるリソースファイルも同じです(保存結果はなにもかわりませんが)。
以上から自分は「同じ」だと思っています。
>リソースエディタで編集したモノが実行時に表示されない、直接編集したものが実行時に表示される、ということから、リソースエディタで編集しているダイアログリソースと直接編集したものが異なるものである、と考える方が自然ではないですか?
上記から、とてもそう思えないのです。
それが無知故の妄想だと言われればそれまでですが、
逆に何(どこの情報、何の記述など)を調べれば「同一」かそうでないか判断できるか、ご教授願えませんでしょうか。
「問題のダイアログリソース」とは、
ダイアログの宣言部で、今回の現象が起こっているダイアログの宣言の部分、「BEGIN」~「END」内です。
記述が足らず、申し訳ありません。
>試しにテキストエディタでリソースファイルを開いてこのコントロールを検索して、その直下にエディットコントロールを入れてみても表示されないと思いますが、いかがでしょうか?
エディットコントロールの位置・サイズは妥当な数字(適当でなく、ダイアログのサイズ内におさまる数字)を入れ、保存してみました。
保存後にはダイアログエディタ上で表示されています(妥当な場所、サイズ)。
また、exeでも表示されています。
No.2
- 回答日時:
> 自分の拙い知識と技術の範囲内ですが、
> ダイアログリソースとダイアログのウインドウの関連付け、またダイアログ自身のIDも間違ってないと思っております・・・(後述します)
たぶんこの辺りが間違っているために意図した結果にならないのだと思います。
> 「ビルド後に反映されない」というのは、
> 一般的にボタンやエディットボックスなどを配置するグラフィカルなエディタ(すみません、正式名称はわかりません)上で、
> ・コントロールの位置を移動する、サイズを変更する
> ・コントロールを新しく追加する
> などの「変更」を行っても、ビルド後のexeでは「変更」が行われない、ということです。
実行時に表示させているダイアログと手動で編集したダイアログは、そもそも同じものなのでしょうか?
リソースエディタで編集する際に、エディットボックスではないID(検索しやすいユニークな名称にする)を持ったコントロールを追加してプロジェクトを保存し、リソースファイルをテキストエディタで開いてそのIDを検索したときに、それが自分で直接追加したエディットコントロールと同じダイアログリソース内にありますか?
この回答への補足
itohoo様、ご回答いただきありがとうございます。
引用で失礼いたします。
>実行時に表示させているダイアログと手動で編集したダイアログは、そもそも同じものなのでしょうか?
テキストでの変更はexeに反映できることと、ANo.1の補足内容から、
同じだと思っています。
他に確認する方法があるならば、その限りではないのですが・・・
>リソースエディタで編集する際に、エディットボックスではないID(検索しやすいユニークな名称にする)を持ったコントロールを追加してプロジェクトを保存し、
>リソースファイルをテキストエディタで開いてそのIDを検索したときに、
>それが自分で直接追加したエディットコントロールと同じダイアログリソース内にありますか?
VC内のリソースエディタを使用しているため、
同時にResource.hも変更(この場合は追加したIDのナンバーの定義を追加)した上で、プロジェクトを保存、
外部よりテキストエディタにてリソースファイルを開いてみましたが、
問題のダイアログリソース内に存在していました。
ANo.1の補足にも記述しましたが、
ダイアログエディタ(グラフィカルなエディタ)での変更が反映されず、
リソースエディタでの変更は反映されているのです。
(なので、まだ助かっているのかもしれませんが・・・)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# ActiveXコントロールを.NETにインポートできない??? 2 2023/05/02 02:50
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- その他(Microsoft Office) Office(Windows版,Word/Excel/PowerPoint等)にログインできません 4 2022/07/24 15:18
- C言語・C++・C# Seleniumで「ファイルを開く」ダイアログボックスのフォルダ指定する方法を教えてください。 1 2022/05/09 07:38
- その他(ソフトウェア) UnityのPublishing SettingsでCreate Keyを押しても反応しない 1 2023/06/27 01:03
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- JavaScript 追加ボタンを押した際に ok ボタンを押した場合のみ入力値が追記されるようにしたいです 6 2022/05/29 09:57
- Visual Basic(VBA) Application.Dialogs(xlDialogFileDelete).Showの件 1 2023/02/22 10:02
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】大変な警告
【大喜利】「今このパソコンは大変危険な状態です」という警告メッセージを無視してパソコンを開いたら、こんなことが起こった
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
もし10億円当たったら何に使いますか?
みなさんの10億円プランが知りたいです!
-
洋服何着持ってますか?
洋服を減らそうと思っているのですが、何着くらいが相場なのかわかりません。
-
集中するためにやっていること
家で仕事をしているのですが、布団をはじめ誘惑だらけでなかなか集中できません。
-
画面を強制的に再描画させる方法
C言語・C++・C#
-
エディットボックスのフォントを変えたい
C言語・C++・C#
-
CString から LPCTSTRの型に変換
C言語・C++・C#
-
-
4
ボタンの配置を変更したい
C言語・C++・C#
-
5
リソースエディタでスタティックテキストの文字サイズの変更
C言語・C++・C#
-
6
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
7
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
8
ボタンの表示の色、フォントを変更したい
C言語・C++・C#
-
9
CWnd::EnableWindow()の扱い方
C言語・C++・C#
-
10
EDITコントロールで入力できる文字を制限するには?
C言語・C++・C#
-
11
エディットボックスの入力制限について
C言語・C++・C#
-
12
MFCでbitmapを背景にしてstaticテキストを透過させる方法
C言語・C++・C#
-
13
MFCのダイアログのリソースが更新されない
C言語・C++・C#
-
14
ビジュアルC++でボタンの有効/無効
C言語・C++・C#
-
15
読み込み中にアクセス違反が発生しました、と出ます。これを回避することは
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのコントロールツール...
-
コントロールの書式設定で、“コ...
-
DateTimePickerでに年月までし...
-
スピンボタンを右クリックして...
-
ActiveXコントロールを.NETにイ...
-
アイテムを点滅させる
-
ダイアログボックスのボタンコ...
-
ダイアログベースのexeで最適な...
-
リストコントロールのスクロー...
-
フォームでPDFを表示させた...
-
.NETでチャートにスクロールバ...
-
regsvr32でActiveX登録を行ったocx
-
EXCELVBA リストボックスで選択...
-
文字色を変えたい(ACCESS VBA)
-
コモンダイアログコントロール...
-
リストボックスの同期
-
タブインデックスをより簡単に...
-
ダイアログとリストコントロー...
-
CEdit の内容が変わった時にメ...
-
TabControlが変る瞬間イベント
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コントロールの書式設定で、“コ...
-
エクセルのコントロールツール...
-
ActiveXコントロールを.NETにイ...
-
DateTimePickerでに年月までし...
-
スピンボタンを右クリックして...
-
フォームでPDFを表示させた...
-
コモンダイアログコントロール...
-
連続で印刷すると画像が更新さ...
-
VBAでリストボックス内で↑↓の操...
-
EXCELVBA リストボックスで選択...
-
ワードのドロップダウンリスト
-
エクセル - リストボックスのマ...
-
リストコントロール(MFC or API...
-
VScrollBarの点滅を何とかしたい。
-
MFC・ダイアログベースで、ダイ...
-
Excel VBAでのMultipageの選択
-
CEdit の内容が変わった時にメ...
-
TabControlとToolBarの背景色変更
-
警告表示を非表示にしたい
-
ダイアログボックスのボタンコ...
おすすめ情報