OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

プログレスバーについて

  • すぐに回答を!
  • 質問No.125738
  • 閲覧数274
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 10% (4/39)

サーバー上からファイルをダウンロードするアプリを
作成しているものです。

ClassAとClassBが存在するとして、
ClassAでファイルをダウンロードする処理を記述し、
ClassBでプログレスバーを含むダイアログを作成しています。
ClassAのファイル読み込みのループ処理のカウンターを
プログレスバーのメンバー変数m_plgと同調させたい。

ClassA
 for(i=0;i<count;i++){
 }
ClassB
 m_plg.SetRange(0,count);
m_plg.SetPos(i);

かなり簡略化してます。
上記内容は実現可能だと思うのですが、メンバー変数の宣言部がおかしいのか
m_plgは宣言されていませんとエラーがでます。
メンバー変数の理解不足だと思うのですが、このような処理を行いたい場合は
どちらのClassにも認識されるようなコントロールのメンバー変数はどのようにして
宣言すればよろしいのでしょうか?

開発環境はVC++6.0 MFC ダイアログです。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全2件)

  • 回答No.1

簡略化というよりも、意図することが正確に伝わってきません。 クラスとインスタンスの関係について、少し調べられてはどうでしょう? ClassB のインスタンスが Dialog だとしたら、ClassA 側から、Dialog.m_plg とアクセスすることはできます。もちろん public でなければなりません。
簡略化というよりも、意図することが正確に伝わってきません。
クラスとインスタンスの関係について、少し調べられてはどうでしょう?

ClassB のインスタンスが Dialog だとしたら、ClassA 側から、Dialog.m_plg とアクセスすることはできます。もちろん public でなければなりません。


  • 回答No.2
レベル9

ベストアンサー率 71% (59/82)

VCは使ったことないんでプログレスバーを 表すクラスの名前が分からないので、ここでは class ProgBarだとすると、class Bはこんな 感じですか? class B { public:  B(){   ...   m_plg.SetRange(0, count);   ...  }  ...  ProgBar m_plg;  ... }; m_plgを直接 ...続きを読む
VCは使ったことないんでプログレスバーを
表すクラスの名前が分からないので、ここでは
class ProgBarだとすると、class Bはこんな
感じですか?

class B {
public:
 B(){
  ...
  m_plg.SetRange(0, count);
  ...
 }
 ...
 ProgBar m_plg;
 ...
};

m_plgを直接class Aからいじろうと
思うなら、class Bの中でpublicフィールド
内で宣言しなければなりません。

で、class A内で、

class A {
 ...
 void report_progress(){
  for( int i = 0 ; i < 100 ; i++ ){
   ...
   dialogbox.m_plg.SetPos(i);
  }
 }
 ...
 B dialogbox;
 ...
};

てな感じのことをしたいんですかね。

だとすると、以上のプログラム例のように、
B内でm_plgをpublicで宣言し、A内で
Bのインスタンスを生成(または外部から
ポインタかリファレンスで受け取る)、
そのBのインスタンスからm_plgをメンバ参照する、
ということで良いと思いますが。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ