知らない間にコントロールが重複するのをふせぐには?

[戻る]
まゆたん 2001/02/19(月) 17:35:54
こんにちは。またわからないことがあります。

わたしは今、タブコントロールを使って、
タブ切り替えできるダイアログを作ってるんですけど、
こんな作り方をしちゃいました(もうあとにはひけない)。

1:タブコントロールの中に、いっぱい
  他のコントロール(ボタンとかエディットボックスとか。)
  を、「不可視」で貼り付けます。
2:タブ札がクリックされたイベントを拾って、そのタブ札毎に、
  コントロールを表示します。

それで、いったん別のダイアログに、タブごとのコントロールを
非難させて(その間にタブオーダーとかつけました)、
最後に一気に全部タブの上に貼り付ける。ってやりました。

そんなことをやってると、いつのまにかコントロールのIDとか
変わったり、(非難ダイアログでは、「IDC_EDIT27」だったのに、
ホンモノのダイアログでは「IDC_EDIT49」になったりします。
でも、他のコントロールはちゃんとしてる。)

ちなみに、ホンモノのダイアログは、タブとその外のコントロール以外、
ぜんぶ削除したのです。だから、「コントロールIDが重複するから、別の
IDが付けられた」ってことはないと思うんだけどなぁ・・・。
それで、クラスウィザードのメンバ変数のところを見ると、
確かにその幽霊コントロールはいました。実際に、コントロールIDを
「IDC_EDIT27」に変えようとすると、「重複するIDをもつコントロールが
あります」ってメッセージもでました。
でも、どこにもそんなコントロールはいないのに(涙)。
cpp・hファイルのメンバ変数の記述も消したのに(涙)。
デバッグフォルダの中身も全部消したのにぃ(涙)。

今思えば、「ぷろパティシート」を使えばよかったです(遅)。

たぶん、こんなやり方したわたしが悪いんですけど、
何かお気づきになった方、
幽霊コントロールがどこにいるか分かる方、
教えてください。お願いします。

ku 2001/02/19(月) 22:35:35
1.
ダイアログを表示してプロパティを表示して常に表示ボタンをオンにする。
その後、ダイアログにフォーカスを設定して
キーボードのTabキーを押せば、順々にコントロールを巡回してくれる。
2.
メニューの「表示」−「シンボルブラウザ」でダイアログを表示し
気になるシンボル名をクリック、そこで表示ボタンを押すとコントロールに
フォーカスが設定される
「使用済みにチェックが付いていない物を削除する」
なんてのが必要な情報なのかな?

まゆたん 2001/02/20(火) 12:50:12
[[解決]]
kuさん、ホントにいつもありがとうございます。
「シンボルブラウザ」で、使用されてないコントロールを
削除することができました。
これで自由にコントロールIDを変更することができます。

シンボルブラウザには、今まで作った覚えのあるコントロールが
いっぱいありました。
コントロールにフォーカスを当てて「削除」ってしても、
ホントに消えたわけではないのですね。
じっさいに、メンバ変数も残ってたし。

まだまだ、VC++開発ツールにはわたしの知らない機能が
いっぱいあるんだなぁ・・・。

kuさん、ありがとうございました。
いつもいつも助けられてばかりだけど、
わたし、がんばりますので、
これからもよろしくお願いします。

ku 2001/02/21(水) 11:19:29
メンバ変数を作ったのにコントロールだけ削除するのはまずいですね。
コントロールを削除するとメンバ変数も削除してくれる機能はありません。

メンバ変数まで作ってしまった場合は、
メンバ変数−>コントロール
の順で削除すればIDも消えてくれると思いました。

古いスレッドには追加発言できません。