VC++のダイアログエディタでイベントハンドラを追加しようとすると、
「コード要素XXXXが読み取り専用であるため、追加と削除操作は出来ません。」
VisualStudioを全部閉じたりビルドクリーンしたり、
あれこれ、やっても全くダメ・・・
じゃあとググって見るとncbファイルを消したら直ったって記事がいっぱい。
良かったぁ〜
じゃあ、と消して見る。
ん、ダメじゃん。
俺のだと、なおらへんよぅ。
よしっ、と更にググってVisualStudioの作業ファイルを調べてsuoも消したり、
ビルドクリーンしてビルドし直したり・・・
だめっ!何やっても直らない。
じゃあ、と試しに手動でコードにイベントと追加してみた。
ちゃんとビルドも通って動作も正常。
まあ、これでプログラムとしては大丈夫。
だけど・・・ダイアログエディタからはイベントは見えないし追加もできない。
うーん、やっぱり不便。
よしって思い立ってクラスの.hと.cppを一度完全に消して、
ダイアログエディタからクラス追加をしてみた。
おっ、ちゃんとイベント追加できるじゃん。
という事は、
この新しいファイルをまんま古い奴に、こそっと入れ替えれば・・・
でコピーしてみると、嘘っ!またダメになってる。
うーーーーむ・・・
実はここでもう諦めかけた。
最悪手動追加できるんだし・・・
でも探究心から最後の挑戦。
上記手順でダイアログクラス名を変更してみた。
当然古いファイルの名前を変更してクラス名を一括変換してから、
コピーして見ました。
やった!!!直った!!!
でも、なんで???
なぜに古いクラス名のままだとダメで、
クラス名を変えてやるとうまくいくの?
ncbもsuoも消したんだから、VCは.hや.cppを見るしか無い筈。
どこに古いクラス名を憶えてたんだ???
ちなみにダイアログIDだけ変更してクラス名はそのままでもダメだった。
クラス名がキーのよう、一体どこに憶えてるんだ。
だけど、もう疲れたので、ここで打ち切り。
「結論」
ncb消してもダメな場合がある。
その場合は古いクラスファイルを削除してから、
ダイアログのIDを変更して新しいクラスファイルを作成させて、
中味を入れ替えればうまくいくみたい。
ちょっと手間はかかるけど一括変換するくらいだし、
もし困ってる人が居たらお試しあれ。
0 件のコメント:
コメントを投稿