はじめまして
リストビューで印刷しようとしていますが文字が重なってしまいます。
りんご、みかん、かき、なし、ももと印刷しようとすると同じ座標のところへ重なってしまい数値も同じようになるのです。解決方法お教え願います。
こーどは以下の通りです、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);
}
参考ページ
http://forums.belution.com/ja/vc/000/297/65s.shtml
解決しました。ありがとうございました。
ツイート | ![]() |