一个简单的问题,但是我搞不定,help!!! 我在一个函数里定义了一个变量i,希望每调用一次这个函数,i可以加一,就做了i++。现在我又要在另一个函数中调用这个变量。如何定义这个i呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 static int i=0;i=i++;是这样吗?但是我在另一个函数中调用着个i的时候,没有成功啊? 看你两个函数是不是在同一个c文件中,如果在同一个文件中就直接int i就行了,如果不在,要在头文件里定义,然后包含 在同一个cpp文件中,我在函数外面做了 static int i=0;在第一个函数中做了 i=i++;在调用i的函数中直接调用i但是没有成功啊。有什么问题吗 static int k=0;void CSale::OnAddsale() { // TODO: Add your control notification handler code here k=k++; m_pDateTime1=CTime::GetCurrentTime(); m_SaleDate=m_pDateTime1.Format("%Y.%m.%d %H:%M:%S"); if ( ""==m_pGoodNum1) { AfxMessageBox(_T("请输入零件号"), MB_ICONEXCLAMATION); return; } else if( ""==m_pSaleTotal) { AfxMessageBox(_T("请输入数量"), MB_ICONEXCLAMATION); return; } else if( ""==m_pCompany) { AfxMessageBox(_T("请输入销售商"), MB_ICONEXCLAMATION); return; } _variant_t Holder, strQuery; try { strQuery = "INSERT INTO sale VALUES('"+m_pGoodNum1+"','"+m_pInvPrice+"','"+m_pUnitPrice+"','"+m_pSaleTotal+"','"+m_pSaleSum+"','"+m_pSaleInv+"','"+m_pCompany+"','"+m_SaleDate+"')"; theApp.ADOExecute(theApp.m_pRecordset, strQuery); } catch(_com_error& e) { AfxMessageBox(e.ErrorMessage()); return; } RefreshData();}void CSale::RefreshData(){ m_pSaleList.DeleteAllItems(); m_pSaleList.SetRedraw(FALSE); DWORD style=m_pSaleList.GetExtendedStyle(); m_pSaleList.SetExtendedStyle(style|LVS_EX_GRIDLINES); m_pSaleList.InsertItem(k, m_pGoodNum1); m_pSaleList.SetItemText(k, 1, m_pInvPrice); m_pSaleList.SetItemText(k, 2, m_pUnitPrice); m_pSaleList.SetItemText(k, 3, m_pSaleTotal); m_pSaleList.SetItemText(k, 4, m_pSaleSum); m_pSaleList.SetItemText(k, 5, m_pSaleInv); m_pSaleList.SetItemText(k, 6, m_pCompany); m_pSaleList.SetItemText(k, 7, m_SaleDate); m_pSaleList.SetRedraw(TRUE);}代码有点问题,我不知道怎么把数据插入到特定的某一行,但是,这样定义"k",确实有问题 RefreshData()只插入了一行数据,因为你先DeleteAllItem()了。 RefreshData()后列表中只有一行数据。 我这样运行,他每次都只能插入一行数据,而且,只有第一列的数据可以插入进去,其他的都是空的。但是我在RefreshData函数中做:int k=0;,这样我就可以完整的插入一行数据,这是不是说明我以前的k没有调用成功? 我把DeleteAllItem()删除了也没有用 只能说明你的k调用成功了。k是静态的,所以它的值保留着int i = m_pSaleList.InsertItem(k, m_pGoodNum1);//试图插入第k行(可能没有k行),返回实际插入位置m_pSaleList.SetItemText(i, 1, m_pInvPrice);m_pSaleList.SetItemText(i, 2, m_pUnitPrice);m_pSaleList.SetItemText(i, 3, m_pSaleTotal);m_pSaleList.SetItemText(i, 4, m_pSaleSum);m_pSaleList.SetItemText(i, 5, m_pSaleInv);m_pSaleList.SetItemText(i, 6, m_pCompany);m_pSaleList.SetItemText(i, 7, m_SaleDate); 真的很感谢 lfchen(一条晚起的虫) 解决了我的一个难题 VisualEleven你好,请教重叠 io问题(代码是出自你博客上的) 已知进程名,怎么获得他的handle,并发送点击鼠标事件 ? 想做一个类似于打开对话框左边那个"导航栏“一样的东西 怎么做 StretchDIBits的问题。 dll加载问题? 获取并显示位图......大家帮我看看这段代码为什么出错??? 关于一个vc中打开文件的问题 视频处理过程之中的问题?? 谁有拟合曲线的算法,例程?欢迎讨论相关技术。 MFC 中如何智能选取多个控件(变量名按顺序排列)中的某一个 视频采集学习笔记(2)——高手莫入(转) 文件重命名莫名其妙的数据丢失
i=i++;
是这样吗?
但是我在另一个函数中调用着个i的时候,没有成功啊?
在第一个函数中做了 i=i++;
在调用i的函数中直接调用i
但是没有成功啊。
有什么问题吗
void CSale::OnAddsale()
{
// TODO: Add your control notification handler code here
k=k++;
m_pDateTime1=CTime::GetCurrentTime();
m_SaleDate=m_pDateTime1.Format("%Y.%m.%d %H:%M:%S");
if ( ""==m_pGoodNum1)
{
AfxMessageBox(_T("请输入零件号"), MB_ICONEXCLAMATION);
return;
} else if( ""==m_pSaleTotal)
{
AfxMessageBox(_T("请输入数量"), MB_ICONEXCLAMATION);
return;
} else if( ""==m_pCompany)
{
AfxMessageBox(_T("请输入销售商"), MB_ICONEXCLAMATION);
return;
}
_variant_t Holder, strQuery;
try
{
strQuery = "INSERT INTO sale VALUES('"+m_pGoodNum1+"','"+m_pInvPrice+"','"+m_pUnitPrice+"','"+m_pSaleTotal+"','"+m_pSaleSum+"','"+m_pSaleInv+"','"+m_pCompany+"','"+m_SaleDate+"')";
theApp.ADOExecute(theApp.m_pRecordset, strQuery);
}
catch(_com_error& e)
{
AfxMessageBox(e.ErrorMessage());
return;
}
RefreshData();
}
void CSale::RefreshData()
{ m_pSaleList.DeleteAllItems();
m_pSaleList.SetRedraw(FALSE);
DWORD style=m_pSaleList.GetExtendedStyle();
m_pSaleList.SetExtendedStyle(style|LVS_EX_GRIDLINES);
m_pSaleList.InsertItem(k, m_pGoodNum1);
m_pSaleList.SetItemText(k, 1, m_pInvPrice); m_pSaleList.SetItemText(k, 2, m_pUnitPrice); m_pSaleList.SetItemText(k, 3, m_pSaleTotal); m_pSaleList.SetItemText(k, 4, m_pSaleSum); m_pSaleList.SetItemText(k, 5, m_pSaleInv); m_pSaleList.SetItemText(k, 6, m_pCompany); m_pSaleList.SetItemText(k, 7, m_SaleDate);
m_pSaleList.SetRedraw(TRUE);
}
代码有点问题,我不知道怎么把数据插入到特定的某一行,但是,这样定义"k",确实有问题
int i = m_pSaleList.InsertItem(k, m_pGoodNum1);
//试图插入第k行(可能没有k行),返回实际插入位置
m_pSaleList.SetItemText(i, 1, m_pInvPrice);
m_pSaleList.SetItemText(i, 2, m_pUnitPrice);
m_pSaleList.SetItemText(i, 3, m_pSaleTotal);
m_pSaleList.SetItemText(i, 4, m_pSaleSum);
m_pSaleList.SetItemText(i, 5, m_pSaleInv);
m_pSaleList.SetItemText(i, 6, m_pCompany);
m_pSaleList.SetItemText(i, 7, m_SaleDate);