mfc-ml

2005年03月

31

[mfc 50691] RE: [mfc 50690] Re: 複数タブシートの各コントロール初期設定について

ありがとうございます。

無事解決できそうな気配がしてきました。

親画面のInitDialog()関数内にて
子画面のクラスを設定した後、
(子クラス=CKoClassとした場合、)
CKoClass.Edit = "aaa";
UpdateData(False);としていたため
全く表示されない現象がおきていたようです。
子画面のUpdatedataをすることにより解決することが出来そうです。

CKoClass.UpdateData(False);

と書き換えたことにより、一応、
表示を確認することが出来ました。

まだ1シート分しか正常表示を確認していませんが、
なんとかなりそうな気がいたしております。

先ほどまで、全く気づきませんでした。

どうもありがとうございました。

---------------
tamami



--------------------------------------------------
トクするツーなサイト
タダでHP容量無制限!【とくつー】
http://tok2.com/
31

[mfc 50690] Re:複数タブシートの各コントロール初期設定について

どもAikoです。

あんまり良く覚えていませんが画面表示されていないときに
UpdateDataってできないんじゃないでしたっけ?

実際に試していないので多分です。

そうだとしたら変数にデータを入れることはできるはできるので
表示された時にUpdateDataとかではだめですかねぇ?

         ○ o 。△  △
               (・ェ・)
│ ̄ ̄ ̄ ̄ ̄ ̄ ̄U ̄U ̄│
│Aiko                  │
│WindowsXp             │
│VisualStudio 6.0      │
└───────────┘


__________________________________
Do You Yahoo!?
Upgrade Your Life
http://bb.yahoo.co.jp/
31

[mfc 50689] おばけが出ました

こんにちは。
有田@アラッドです。

昨日、下記のようなクラスを作ってデバッグしておりました。

[aaaDlg.h]
class aaaDlg : public CDialog
{
    ....
    ....
    void UpdateView();
    ....
    ....
    virtual BOOL OnInitDialog();
    ....
    ....
};


[bbbDlg.h]
class aaaDlg : public aaaDlg
{
    ....
    ....
    void UpdateView();
    ....
    ....
};


[aaaDlg.cpp]
...
...
BOOL aaaDlg::OnInitDialog()
{
    CDialog::OnInitDialog();
    ....
    ....
    UpdateView();
    ....
    ....
}

void aaaDlg::UpdateView()
{
    ...
    ...
}
...
...


[bbbDlg.cpp]
...
...
void bbbDlg::UpdateView()
{
    ...
    ...
    ここ!
    ...
    ...
}
...
...


昨日上記のクラスの「ここ」にブレークポイントをはって、デバッグし、
画面が真っ黒になるおおよその原因をつきとめ、定時になったので帰りました。

そして今日、続きをやろうとVCを立ち上げ、デバッグ実行すると、
「ここ」を通りません。
あれ?おかしいな?と思ってよく見ると、aaaDlgのUpdateView();がvirtualになって
なかったので、
    virtual void UpdateView();
と書き換えてやると「ここ」を通るようになりました。

問題は解決したのですが、なぜ昨日は「ここ」を通ったのでしょうか?
勘違いとかではありません。
間違いなく「ここ」にブレークポイントをはってデバッグしてました。
今朝もそのブレークポイントは残ってました。

おばけでないとしたら何なんでしょう?

よろしくお願い致します。
31

[mfc 50688] 複数タブシートの各コントロール初期設定について

<VS C++.net、MFC、Win2000Pro>
tamamiです。
質問ばかりで申し訳ありません。
よろしくおねがいいたします。

タブコントロールの子画面を4つ製作しています。
クラスが4画面それぞれにつけました。
(仮にそれぞれA~D画面、CA~CDクラスとする)

それぞれに同じコントロールを貼り付け、
IDも一緒。
コントロールは、
EditA×26個
EditB×26個
RadioButtonA×26個(AがGroup=true)
RadioButtonB×26個
RadioButtonC×26個
RadioButtonD×26個
です。
Resource.hにも
同じIDですので、#define定義は
画面ごとにはなく、一つです。

そこでやりたいことは、
初期に画面表示する際に親画面から一気に設定したいのです。
今やっている方法は
("EditA"等はDDXでのメンバ変数とします)
for(int i = 0; i< 26*4(画面); i++)

    CA.EditA[i] = "あいう";
    CB.EditA[i] = "えおか";
    CC.EditA[i] = "えおか";
    CA.RadioA[i] = 1;
    CB.RadioA[i] = 1;
}
UpdateData(fALSE);

と設定し、それぞれ表示させたいのですが、
うまく表示できません。

チャイルド画面で同じIDを使用していることはいけないことなのでしょうか。
(同一チャイルド画面上では重複していませんが) 

それともなにか別の原因なのでしょうか。

よろしくお願いいたします。
30

[mfc 50687] Re:CFormView派生クラスの生成

こなです。

あくまで感でしかありませんが、
> pW->Create(NULL,"aaa",WS_CHILD,CRect(100,100,500,80),this,IDD_DIALOG1,NULL);
  pW->Create(NULL,"aaa",WS_CHILD | WS_VISIBLE | WS_BORDER,CRect(100,100,500,80),this,IDD_DIALOG1,NULL);
でどうでしょう?

-- 
こな <k...@yahoo.co.jp>
記事検索
Amazon.co.jp
  • ライブドアブログ