ページ 11

コモンダイアログ2

Posted: 2009年3月05日(木) 12:14
by ざこ
昨日ご質問させていただきましたが長くなってしまったので新しくスレをたてさせていただきます。
VOID CDialog1::OnButtonAdd() 
{
CDialog2  dlg;
	CString str_ed1;
	CString str_ed2;
	int chk;
         CString str_index//追加
     
         
	
	dlg.m_pstr=&str_ed1;
	dlg.m_qstr=&str_ed2;
	dlg.m_chkBOX=chk;
	i=m_list.GetItemCount();

	
	dlg.DoModal();
	if(chk==0){
		m_list.InsertItem(i,(LPCTSTR)str_ed1);
		m_list.SetItemText(i,1,(LPCTSTR)str_ed2);
	}

	else if(chk==1){
          for(int j=0;j<i;j++){//追加
                      while((index=m_list.GetNextItem(index,LVNI_ALL))!=-1){
                         str_index=m_list.GetItemText(index,0)
                         if(str_ed1==str_index){n=j;}  //EDIT1の内容が一致したらnにその行数を格納
                      }
                      m_list.InsertItem(j,(LPCTSTR)str_ed1);
                      m_list.SetItemText(j,,1(LPCTSTR)str_ed2);
                  }
                  MessageBox("上書きしました");//ここまで
        }
}
としましたが更新になりません。。 おかしい箇所をご指摘ください。デバッグではjの中身がおかしかったとおもいます。後jの中身が正しくてもなぜか更新されなかったです。


         

Re:コモンダイアログ2

Posted: 2009年3月05日(木) 14:25
by バグ
jの中身がどうおかしかったのでしょうか?
ざっと見た感じですが、jに関してはおかしく無さそうですよ?

もう一度流れを確認します。

1:ダイアログ1には、パスと拡張子を表示する為のリストビューと追加用のボタンがある

2:ダイアログ2には、パスを入力する為のエディットボックスと、更新するか否かを選択する為のチェックボックスがある

3:ダイアログ1の追加ボタンを押すと、ダイアログ2が表示される

4:チェックボックスにチェックが入っていた場合は、エディットボックスに入力された内容をダイアログ1へ渡し、データを更新する

5:リストビューに既に表示されている内容と、新たに追加された内容を比較し、同一の物があった場合は何もしない

6:5で同一の物が見つからなかった場合はリストビューへ追加する

これで間違いないでしょうか?

Re:コモンダイアログ2

Posted: 2009年3月05日(木) 15:29
by ざこ
あってると思います。外観に関しては前スレに画像はってあります

あ・・先頭は-1にしたので合ってるんですね。

Re:コモンダイアログ2

Posted: 2009年3月05日(木) 15:53
by バグ
外観に関しては分かっています。
ただ、上書きの部分の考え方がよく理解できないんですよ。
上書きにチェックが入ってなくて、同じ内容のデータが見つかった場合はどうするんですか?
全く同じ内容のデータが追加される訳ですが、それは許すという事なんですよね?

Re:コモンダイアログ2

Posted: 2009年3月05日(木) 16:03
by ざこ
あーなるほど、確かに疑問をもたれるのはわかります。そういう問題点は後々修正していきますが、今回は
許すということでいきます。

Re:コモンダイアログ2

Posted: 2009年3月05日(木) 17:37
by バグ
サンプルです。
一応、条件は満たしている…はず(^_^;)
また、分からない事があったら、書き込みしてください。

Re:コモンダイアログ2

Posted: 2009年3月05日(木) 17:41
by ざこ
じっくりみてみます。ありがとうございました。