ダイアログバーの追加:クラス作成について

[戻る]
かす 2007/02/26(月) 17:51:41
はじめまして。
VC初心者です。
今ダイアログを新しく作ろうとしているのですが、
リソース挿入で作った後、クラスを作成しようとしてもできません。
*.cpp、*.hファイルが作成できませんというエラーが出ます。
気まぐれなのか、
2回くらいクラス作成に成功しましたが、失敗した時との違いがわかりません。
自分では同じ作業をしているつもりです。
考えられる原因は何かあるでしょうか?
OSはwindows2000でVisualStudio6.0使ってます。
よろしくお願いします。

たいちう 2007/02/26(月) 18:05:55
> 自分では同じ作業をしているつもりです。

まず、『しているつもりです』を『しています』に変えましょう。
確認がてら、新しいプロジェクトの作成からエラーが出るまでの手順を
丁寧に書いてみてください。
同じエラーを私でも出せるように(XP+VC6.0でよければ確認できます)。

もし手順に問題がないのなら、
VSの再インストールとかが必要になるかもしれません。

かす 2007/02/26(月) 18:21:51
まずSDIでプロジェクトを作成します。
設定はすべてデフォルトです。
で、そこからは先に書いたとおり、
挿入、リソース、ダイアログで新規にダイアログを作成します。
右クリックでクラスウィザードを立ち上げるとクラス作成を指示されるので、
新規クラス作成でファイル名「C・・・」を入力しOKを押すとエラーになります。
他の方法でダイアログを作成したり、先に何もせずにビルドしてからクラスを作成しよう
としても同じエラーになります。
クラスや*.cpp、*.hファイル自体はなぜかできていて中身もちょっと変わっているのが
できているのですが、
無理やり動作をそこに書き込んでもうまくいきませんでした。
それにファイルができていでもクラスが認識されていなくて、
ダイアログからクラスウィザードを開くとまたクラス作成を要求されてしまいます。
私も再インストールの可能性もあるなあと思っているところです。
よろしくお願いします。

たいちう 2007/02/26(月) 19:10:18
再現しませんでした。あとは、

・VSの再起動
・パソコンの再起動
・サービスパックをあててみる
・VSの再インストール
・OSの再インストール

このようなありきたりのことしか思いつきません。
残念ながら、お役に立てないようです。
別のレスをお待ち下さい。

久方ぶり 2007/02/26(月) 22:08:00
その症状はNortonさんが悪さしてます。(当たっている確立:90%)

出来てる*.cppと*.hをプロジェクトに追加。
プロジェクトを一旦閉じる。
プロジェクトフォルダにある*.ncbと*.clwファイル削除
プロジェクトを起動しなおしてクラスウィザード起動
なにやらダイアログがでるのでOKボタン押下(この時エラーが出る事もあるが気にしな
い)
で直るよ

かす 2007/02/27(火) 14:48:46
久方ぶりさん、ありがとうございます。

とりあえず*.ncb、*.clwファイルを削除してやってみたところ、
プロジェクトにもう一回残ってるファイルを入れて立ち上げられました。
それでクラスも認識されてたんですが、
その上でさらにダイアログを加えようとしてみたところまた同じエラーが出てしまいま
す。
先の説明だと出て当然だと思うのですが、
仮にNortonのせいであるとして、それを根本的に解決できる方法はないでしょうか?
あと、さっき思ったのですが、
同じパソコンに.Netと6.0が入ってるんですが、それは関係ないでしょうか?
会社の計算機なんでまだどこに何が入ってるか把握しきれてないもんですいません。
毎回この作業をやるとなるとめんどくさいですし、
ファイルを消したりしてると他に不都合が出てきそうなので。
またよければアドバイスの方よろしくお願いします。

aharen [HomePage] 2007/02/27(火) 17:03:26
かすさんこんにちは 私は初心者ですが
ダイアログバーのクラスは
CDialogでなくCDialogBarです
CDialogBarをキーワードにしてMSDNを検索してください
左側に項目の一覧表があります
CDialogBar
 クラス
 コントロールバー
〜
〜
〜
上記クラスという項目をダブルクリックすると
ダイアログバーのトピックの記事のページがでます
使い方の基本はそのページにでています
その記事によるとCDialogBarは派生クラスを作成しないと
でています
以下その記事の一部分引用です
引用はじめ>>>>>>>
通常、ダイアログ クラスを作るには、CDialog の派生クラスを作成しますが、ダイアロ
グ バーでは例外的に派生クラスを作成しません。ダイアログ バーはメイン ウィンドウ
の拡張機能として処理されるので、ダイアログ バーに対する BN_CLICKED や EN_CHANGE 
などのコントロール通知メッセージは、親ウィンドウであるメイン フレーム ウィンドウ
に送られます。
<<<<<<<引用おわり
なをダイアログバーを使うときはよほど特別な場合でなければ
スケルトンをつくるときReBarを指定すると
CMainFrameで自動的にダイアログバーのCreate処理を
してくれるのでお勧めです

久方ぶり 2007/02/27(火) 17:44:57
>仮にNortonのせいであるとして、それを根本的に解決できる方法はないでしょうか?
リアルタイム保護を切るかアンインストールするしか手は無いです。

>同じパソコンに.Netと6.0が入ってるんですが、それは関係ないでしょうか?
Nortonの悪さなのでまったく関係なし

>毎回この作業をやるとなるとめんどくさいですし、
>ファイルを消したりしてると他に不都合が出てきそうなので。
クラス追加の作業する時だけリアルタイム保護を切れば?
ん?それもメンドクサイ?
じゃ、追加されなかったファイルをプロジェクトに参加させるだけにすれば?
*.ncbと*.clwは削除しなくても動作に問題はないし。
(インテリセンスとクラスビューなどでクラスが認識されないだけだから)

Ban 2007/02/27(火) 17:53:30
Nortonの悪さというか、確かに競合問題だと思いますが、VC.NETでは確か大丈夫なはずで、
VC6の仕様だか既知の制限だったはず(VC6は既にサポート切れなので改修の見込み無し)。

VC6を捨ててVC.NETを使うってのも真っ当な解だと思います。

かす 2007/02/28(水) 18:20:15
[[解決]]
みなさんありがとうございます。

aharenさん、タイトル間違えてますが、私が聞きたかったのはダイアログ作成についての
ことです。
紛らわしくてすいません。

上司が6.0で.netはあまり使い方がわからないみたいなので、
.netをすぐに使うことはないと思います。
でも、そっちの方がいいような気はするので、時期をみて移っていきたいと思います。
まずは6.0をある程度使いこなせるようになってからですね。
見る人から見ればあまり違いはないのかもしれませんが、まだよくわからないもので。
会社の開発環境が6.0が多いのか、その辺のところは実はまだ入社したてなのでよくわか
らないので徐々に広げていこうと思います。
C言語自体12月くらいからはじめたので、まだコンパイラがどうこうという話も何もわか
ってません。
もうすぐしたら席を移って扱うマシンも変わるのでそっちでは大丈夫になるかもしれない
ですし。
もしだめでもアドバイスを参考にがんばります。
とにかくみなさんありがとうございました。

aharen [HomePage] 2007/02/28(水) 22:30:42
>aharenさん、タイトル間違えてますが、
>私が聞きたかったのはダイアログ作成についての
>ことです。

そうですね失礼しましたおはずかしい

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