リストビューで印刷するには

解決


さりな  2005-03-16 17:22:28  No: 56699

はじめまして
リストビューで印刷しようとしていますが文字が重なってしまいます。
りんご、みかん、かき、なし、ももと印刷しようとすると同じ座標のところへ重なってしまい数値も同じようになるのです。解決方法お教え願います。
こーどは以下の通りです、XP、VC6、MFCです。
void CToyView::OnPrint(CDC* pDC, CPrintInfo* pInfo) 
{
CToyDoc* pDoc = GetDocument();
  ASSERT_VALID(pDoc);
    m_lv.DeleteAllItems();

  int nTotal = 0;
    int nTotal2 = 0;
  int nPage = GetTabCtrl().GetCurSel();
  const CASHLIST& cl = pDoc->GetCashList();
  CString cs;
  POSITION pos = cl.GetHeadPosition();
  int nIdx = 0;
  while( pos != NULL){
    POSITION posCur = pos;
    const CASHITEM& ci = cl.GetNext( pos);
    int nCat = ci.nCategory;
    if( nPage == 0 || nCat == nPage){
                  cs.Format( _T("%u"), ci.uDate);
                   m_lv.InsertItem( nIdx, cs);

                    cs.Format( _T("%d"), ci.Su);
       m_lv.SetItemText( nIdx, 1, ci.EditNumber1);
            m_lv.SetItemText( nIdx, 2, ci.csName);
      switch( nCat){
          case 1:
      cs = _T("みかん");
      break;
      case 2:
      cs = _T("かき");
                         break;
      case 3:
      cs = _T("りんご");
      break;
      case 4:
      cs = _T("なし");
      break;
                           case 5:
      cs = _T("もも");
      break;
      }
m_lv.SetItemText( nIdx, 3, cs);
if( nCat == 1){
nTotal += ci.nPrice;
nTotal2 += ci.nPrice;
if( nCat == 1){
nTotal += ci.nPrice;
if( nCat == 2){
nTotal += ci.nPrice;
}
}
      }
      else{
                nTotal2 += ci.nPrice;
                nTotal2 += ci.Su;
      }
      cs.Format( _T("%d"), ci.nPrice);
          m_lv.SetItemText( nIdx, 4, cs);
       m_lv.SetItemData( nIdx, (DWORD)posCur);
      nIdx++;
    }
  }
  // 空行の挿入
  m_lv.InsertItem( nIdx, _T("") );
  m_lv.SetItemData( nIdx, (DWORD)NULL);
  // 合計の挿入
  nIdx++;
////////////////////////////////////////////ここで数値を表示、重なってしまう."cs"が数値の変数
int ihce;
int yybe = 4800;
for ( ihce = 0; ihce < 1; ++ihce ) {
  pDC->TextOut(2000, yybe, cs);
  yybe += 100;
}
////////////////////////////////////////////////////
  m_lv.InsertItem( nIdx, _T("合計") );
  cs.Format( _T("%d"), nTotal);
  m_lv.SetItemText( nIdx, 5, cs);
  
  m_lv.SetItemData( nIdx, (DWORD)NULL);
}


REE  2005-03-17 01:16:42  No: 56700

参考ページ
http://forums.belution.com/ja/vc/000/297/65s.shtml


  2005-03-17 07:24:32  No: 56701

解決しました。ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加