T贪吃蛇大结局游戏中w=clientRC.bottom/(ROWS+2) 是什么意思

贪吃蛇游戏说明书_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
贪吃蛇游戏说明书
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢单片机贪吃蛇游戏_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
单片机贪吃蛇游戏
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩13页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢使用odbc读写excel类: (2) 源文件
& 1#include &stdafx.h&
& 2#include &odbcexcel.h&
& 5/*************************************************************************************************
& 6& & 修改了整型数据显示不一致的问题,如5454,读取时是5454.0,在excel表格显示是5454
& 7&&&&&&&&&&&&
& 8**************************************************************************************************/
&10CString CODBCExcel::GetExcelDriver()
&12&&& TCHAR szBuf[2001];
&13&&& WORD cbBufMax = 2000;
&14&&& WORD cbBufO
&15&&& TCHAR *pszBuf = szB
&17&&& CString strExcelD
&18&&& // Get the names of the installed drivers (&odbcinst.h& has to be included )
&19&&& if(!SQLGetInstalledDrivers(szBuf,cbBufMax,& cbBufOut))
&21&&&&&&& strExcelDriver = &&;
&24&&& // Search for the driver
&27&&&&&&& if( _tcsstr( pszBuf, _T(&Excel&) ) != 0 )
&28&&&&&&& {
&29&&&&&&&&&&& // Found !
&30&&&&&&&&&&& strExcelDriver = CString( pszBuf );
&31&&&&&&&&&&&
&32&&&&&&& }
&33&&&&&&& pszBuf = _tcschr( pszBuf, _T('\0')) + 1;
&35&&& while( pszBuf[1] != '\0' );
&37&&& return strExcelD
&40//////////////////////////////////////////////////////////////////////////
&41CODBCExcel::CODBCExcel()
&45CODBCExcel::~CODBCExcel()
&47&& m_db.Close();
&48&& for (map&CString,CODBCExcelSheet*&::iterator iter = m_Sheets.begin(); iter != m_Sheets.end();)
&50&&&&& delete iter-&&& iter = m_Sheets.erase(iter);
&54bool CODBCExcel::Open(const CString& strFileName)
&56&&& if (m_db.IsOpen())&&&& return&
&58& CString strDSN;
&59&&& strDSN.Format(_T(&DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\&%s\&;DBQ=%s&),
&60&&&&&&&&&&&&&&&& GetExcelDriver(), strFileName, strFileName);
&61& return m_db.OpenEx(strDSN, CDatabase::noOdbcDialog) == TRUE;
&64bool CODBCExcel::Save()
&66&&& CString strSQL;
&67&&& for (map&CString,CODBCExcelSheet*&::iterator iter = m_Sheets.begin(); iter != m_Sheets.end();++iter)
&69&&&&&&& iter-&second-&Save();
&74void CODBCExcel::Close()
&76&& m_db.Close();
&79CODBCExcelSheet* CODBCExcel::GetWorkSheet(const CString& strSheetName)
&81&&& CString strSQL;
&82&&& strSQL.Format(_T(&SELECT * FROM [%s$A1:IV65536]&), strSheetName);
&83&&& CODBCExcelSheet* sheet = 0;
&84&&& bool bNew =
&85&&& map&CString,CODBCExcelSheet*&::iterator iter = m_Sheets.find(strSheetName);
&86&&& if (iter != m_Sheets.end())
&88&&&&&&& sheet = iter-&
&89&&&&&&& if (CODBCExcelSheet::Add == sheet-&m_nFlag || CODBCExcelSheet::Update == sheet-&m_nFlag)
&90&&&&&&&&&&&
&92&&& else
&94&&&&&&& sheet = new CODBCExcelSheet(*this, strSheetName);
&95&&&&&&& bNew =
&97&&& try
&99&&&&&&& sheet-&m_recordset.Open(CRecordset::forwardOnly, strSQL, CRecordset::readOnly);
101&&& catch()
103&&&&&&& if (sheet)&&& sheet-&m_recordset.Close();
104&&&&&&& if (!bNew)&&&
105&&&&&&& return 0;
107&&& sheet-&Init();&
108&&& m_Sheets.insert(make_pair(strSheetName, sheet));
112CODBCExcelSheet* CODBCExcel::AddWorkSheet(const CString &strSheetName, const CStringArray& ColHeaders)
114&& CODBCExcelSheet* sheet = GetWorkSheet(strSheetName);
115&& if (!sheet)
117&&&&&& sheet = new CODBCExcelSheet(*this, strSheetName);
118&&&&&& if (!sheet)&&&&& return& 0;
119&&&&&& sheet-&m_nFlag = CODBCExcelSheet::A
120&&&&&& sheet-&m_ColHeaders.Copy(ColHeaders);
121&&&&&& m_Sheets.insert(make_pair(strSheetName, sheet));
123&& else
125&&&&&& sheet-&m_dwRows = 0;
126&&&&&& sheet-&m_nFlag = CODBCExcelSheet::U
127&&&&&& sheet-&m_ColHeaders.RemoveAll();
128&&&&&& sheet-&m_ColHeaders.Copy(ColHeaders);
130&& sheet-&m_dwCols = ColHeaders.GetCount();
134void CODBCExcel::DeleteWorkSheet(const CString& strSheetName)
136&&& map&CString,CODBCExcelSheet*&::iterator iter = m_Sheets.find(strSheetName);
137&&& if (iter != m_Sheets.end())
139&&&&&&& iter-&second-&m_nFlag = CODBCExcelSheet::D
140&&&&&&& iter-&second-&ResetCells();
142&&& else
144&&&&&&& CString strSQL;
145&&&&&&& strSQL.Format (_T(&DROP TABLE [%s$A1:IV65536]&), strSheetName);
146&&&&&&& try
147&&&&&&& {
148&&&&&&&&&&& m_db.ExecuteSQL(strSQL);
149&&&&&&& }
150&&&&&&& catch (CDBException* e)
151&&&&&&& {
152&&&&&&&&&&&
153&&&&&&& }
157//////////////////////////////////////////////////////////////////////////
158CODBCExcelSheet::CODBCExcelSheet(CODBCExcel& Excel, const CString& strName):
159m_strName(strName),
160m_Excel(Excel),
161m_recordset(&Excel.m_db)
163&& m_dwCols = m_dwRows = 0;
166bool CODBCExcelSheet::Init()
168&&& DWORD dwC
169&&& m_ColHeaders.RemoveAll();
170&&& for (dwCol = 0; dwCol & m_recordset.m_nResultC ++dwCol)
172&&&&&&& m_recordset.m_rgODBCFieldInfos[dwCol].m_strName.Trim();
173&&&&&&& m_ColHeaders.Add(m_recordset.m_rgODBCFieldInfos[dwCol].m_strName);
175&&& m_dwCols = m_recordset.m_nResultC
176&&& m_nFlag = CODBCExcelSheet::E
177&&& CString strT
178&&& for (DWORD dwRow = 0;!m_recordset.IsEOF();)
180&&&&&&& try
181&&&&&&& {
182&&&&&&&&&&& CDBVariant dbV
183&&&&&&&&&&& for (dwCol = 0; dwCol & m_recordset.m_nResultC ++dwCol)
184&&&&&&&&&&& {
185&&&&&&&&&&&&&&& m_recordset.GetFieldValue(dwCol, dbVal);
186&&&&&&&&&&&&&&& Cell(dwRow, dwCol)-&Set(dbVal);
187&&&&&&&&&&&&&&& /*m_recordset.GetFieldValue(dwCol, strText);
188&&&&&&&&&&&&&&& Cell(dwRow, dwCol)-&Set(strText);& */
189&&&&&&&&&&& }
190&&&&&&&&&&& ++dwR& m_recordset.MoveNext();
191&&&&&&& }
192&&&&&&& catch (CDBException* e)
193&&&&&&& {
194&&&&&&&&&&& m_recordset.Close();
195&&&&&&&&&&&&&&&&&&
196&&&&&&& }
198&&& m_recordset.Close();
199&&& UpdateRowCount();
203void CODBCExcelSheet::UpdateRowCount()
205&& for (;!m_Cells.empty();)
207&&&&&& vector&CODBCExcelCell&& vecCol = m_Cells.back();
208&&&&&& vector&CODBCExcelCell&::
209&&&&&& for (iter = vecCol.begin(); iter != vecCol.end(); ++iter)
210&&&&&& {
211&&&&&&&&&& if (!(*iter).m_strVal.IsEmpty())
212&&&&&& }
213&&&&&& if (iter == vecCol.end())&
214&&&&&& {
215&&&&&&&&&& m_Cells.pop_back();
216&&&&&& }
217&&&&&& else
218&&&&&& {
219&&&&&&&&&&
220&&&&&& }
222&& m_dwRows = m_Cells.size();
225bool CODBCExcelSheet::Save()
227&& CString strSQL;
228&& switch(m_nFlag)
230&& case Update:
231&&&&&& {
232&&&&&&&&&& strSQL.Format(_T(&DROP TABLE [%s$A1:IV65536]&), m_strName);
233&&&&&&&&&& try
234&&&&&&&&&& {
235&&&&&&&&&&&&&& m_Excel.m_db.ExecuteSQL(strSQL);
236&&&&&&&&&& }
237&&&&&&&&&& catch (CDBException* e)
238&&&&&&&&&& {
239&&&&&&&&&&&&&&&&&
240&&&&&&&&&& }
241&&&&&&&&&& //$A1:IV65536
242&&&&&&&&&& strSQL.Format(_T(&CREATE TABLE [%s$A1:IV65536] (&), m_strName);
243&&&&&&&&&& for (int i = 0; i & m_dwC ++i)
244&&&&&&&&&& {
245&&&&&&&&&&&&&& strSQL += _T(&[&) + m_ColHeaders.GetAt(i) +_T(&]&) + _T(& char(255), &);
246&&&&&&&&&& }
247&&&&&&&&&& strSQL.Delete(strSQL.GetLength()-2, 2);
248&&&&&&&&&& strSQL += _T(&)&);
249&&&&&&&&&& try
250&&&&&&&&&& {
251&&&&&&&&&&&&&& m_Excel.m_db.ExecuteSQL(strSQL);
252&&&&&&&&&& }
253&&&&&&&&&& catch (CDBException* e)
254&&&&&&&&&& {
255&&&&&&&&&&&&&&
256&&&&&&&&&& }
257&&&&&&&&&& UpdateCells();
258&&&&&& }
261&& case Add:
262&&&&&& {
263&&&&&&&&&& strSQL.Format(_T(&CREATE TABLE [%s] (&), m_strName);
264&&&&&&&&&& for (int i = 0; i & m_dwC ++i)
265&&&&&&&&&& {
266&&&&&&&&&&&&&& strSQL += _T(&[&) + m_ColHeaders.GetAt(i) +_T(&]&) + _T(& char(255), &);
267&&&&&&&&&& }
268&&&&&&&&&& strSQL.Delete(strSQL.GetLength()-2, 2);
269&&&&&&&&&& strSQL += _T(&)&);
270&&&&&&&&&& try
271&&&&&&&&&& {
272&&&&&&&&&&&&&& m_Excel.m_db.ExecuteSQL(strSQL);
273&&&&&&&&&& }
274&&&&&&&&&& catch (CDBException* e)
275&&&&&&&&&& {
276&&&&&&&&&&&&&&&&&
277&&&&&&&&&& }
278&&&&&&&&&& UpdateCells();
279&&&&&& }
282&& case Delete:
283&&&&&& {
284&&&&&&&&&& strSQL.Format (_T(&DROP TABLE [%s$A1:IV65536]&), m_strName);
285&&&&&&&&&& try
286&&&&&&&&&& {
287&&&&&&&&&&&&& m_Excel.m_db.ExecuteSQL(strSQL);
288&&&&&&&&&& }
289&&&&&&&&&& catch (CDBException* e)
290&&&&&&&&&& {
291&&&&&&&&&&&&&&&&
292&&&&&&&&&& }
293&&&&&&& }
299bool CODBCExcelSheet::UpdateCells()
301&&& CString& strSQL, strSQLC
302&&& for (DWORD dwRow = 0, dwC dwRow & m_dwR ++dwRow)
304&&&&&&& strSQL.Format(_T(&INSERT INTO [%s$A1:IV%d] (&), m_strName, dwRow+1);
305&&&&&&& for (dwCol = 0; dwCol & m_dwC ++dwCol)
306&&&&&&& {
307&&&&&&&&&&& strSQLCol.Format(_T(&[%s], &), m_ColHeaders.GetAt(dwCol));
308&&&&&&&&&&& strSQL += strSQLC
309&&&&&&& }
310&&&&&&& strSQL.Delete(strSQL.GetLength()-2, 2);
311&&&&&&& strSQL += _T(&) VALUES (&);
312&&&&&&& for (dwCol = 0; dwCol & m_dwC ++dwCol)
313&&&&&&& {
314&&&&&&&&&&& strSQLCol.Format(_T(&'%s', &), Cell(dwRow, dwCol)-&GetText());
315&&&&&&&&&&& strSQL += strSQLC
316&&&&&&& }
317&&&&&&& strSQL.Delete(strSQL.GetLength()-2, 2);
318&&&&&&& strSQL += _T(&)&);
319&&&&&&& try
320&&&&&&& {
321&&&&&&&&&&& m_Excel.m_db.ExecuteSQL(strSQL);
322&&&&&&& }
323&&&&&&& catch (CDBException* e)
324&&&&&&& {
325&&&&&&&&&&&
326&&&&&&& }
331void CODBCExcelSheet::ResetCells()
333&&& for (DWORD dwRow = 0; dwRow & m_dwR ++dwRow)
335&&&&&&& for (DWORD dwCol = 0; dwCol & m_dwC ++dwCol)
336&&&&&&& {
337&&&&&&&&&&& m_Cells[dwRow][dwCol].Empty();
338&&&&&&& }
342//rowIndex &= 1 colIndex &= 0
343CODBCExcelCell* CODBCExcelSheet::Cell(UINT rowIndex, UINT colIndex)
345&&& if (rowIndex & 65535 || colIndex & 255) return 0;
346&&& if (colIndex &= m_dwCols)& return 0;
348&&& if (rowIndex &= m_dwRows)
350&&&&&&& m_dwRows += 1;
351&&&&&&& m_Cells.resize(m_dwRows);
352&&&&&&& for (DWORD dwRow = 0; dwRow & m_dwR ++dwRow)
353&&&&&&& {
354&&&&&&&&&&& m_Cells[dwRow].resize(m_dwCols);
355&&&&&&&&&&& for (DWORD dwCol = 0; dwCol & m_dwC ++dwCol)
356&&&&&&&&&&& {
357&&&&&&&&&&&&&&& m_Cells[dwRow][dwCol].SetParent(this);
358&&&&&&&&&&& }
359&&&&&&& }
361&&& return &m_Cells[rowIndex][colIndex];
364CODBCExcelCell* CODBCExcelSheet::Cell(UINT rowIndex, const CString& strColName)
366& if (rowIndex & 65535) return 0;
368&&& ASSERT(m_dwCols == m_ColHeaders.GetCount());
369&&& UINT colI
370&&& for (colIndex = 0; colIndex & m_dwC ++colIndex)
372&&&&&&& if (m_ColHeaders[colIndex] == strColName)
373&&&&&&& {
374&&&&&&&&&&&
375&&&&&&& }
377&&& if (colIndex &= m_dwCols) return 0;
378&&& if (rowIndex &= m_dwRows)
380&&&&&&& m_dwRows += 1;
381&&&&&&& m_Cells.resize(m_dwRows);
382&&&&&&& for (DWORD dwRow = 0; dwRow & m_dwR ++dwRow)
383&&&&&&& {
384&&&&&&&&&&& m_Cells[dwRow].resize(m_dwCols);
385&&&&&&&&&&& for (DWORD dwCol = 0; dwCol & m_dwC ++dwCol)
386&&&&&&&&&&& {
387&&&&&&&&&&&&&&& m_Cells[dwRow][dwCol].SetParent(this);
388&&&&&&&&&&& }
389&&&&&&& }
391&&& return &m_Cells[rowIndex][colIndex];
394int CODBCExcelSheet::GetColHeader(const CString& strColName) const
396&&& for (int col = 0; col & m_dwC ++col)
398&&&&&&& if (m_ColHeaders[col] == strColName)
399&&&&&&&&&&&
401&&& return -1;
404int CODBCExcelSheet::GetRow(const CString& strColName, const CString& strCellText)
406&&& int col = GetColHeader(strColName);
407&&& if (-1 == col)& return -1;
408&&& for (int row = 0; row & m_dwR ++row)
410&&&&&&& if (m_Cells[row][col].m_strVal == strCellText)
411&&&&&&&&&&&
413&&& return -1;
416//////////////////////////////////////////////////////////////////////////
417CODBCExcelCell::CODBCExcelCell():
418m_Sheet(NULL)
422void CODBCExcelCell::Set(const CDBVariant& dbVal)
424&&& switch(dbVal.m_dwType)
426&&& case DBVT_NULL:&
427&&& case DBVT_DATE:&&&&&&&&&&&&&&&&&&&
428&&& case DBVT_BINARY:&&&&&&&&&&&&&&&&&
429&&&&&&& m_strVal.Empty();&&&&&&&&&&&&&&&&&&
430&&&&&&&
432&&& case DBVT_BOOL:&&&&&&&&&
433&&&&&&& if (dbVal.m_boolVal) m_strVal = _T(&0&);
434&&&&&&& else m_strVal = _T(&1&);
435&&&&&&&
437&&& case DBVT_UCHAR:
438&&&&&&& m_strVal.Format(_T(&%c&), dbVal.m_chVal);
439&&&&&&&
441&&& case DBVT_SHORT:&&&&&&&&&&&&&&&&&&&
442&&&&&&& m_strVal.Format(_T(&%d&), dbVal.m_iVal);
443&&&&&&&
445&&& case DBVT_LONG:&&&&&&&&&&&&&&&&&&&&&&&
446&&&&&&&& m_strVal.Format(_T(&%ld&), dbVal.m_lVal);&&
447&&&&&&&&
449&&& case DBVT_SINGLE:&&
450&&&&&&& {
451&&&&&&&&&&& long lVal = (long)dbVal.m_fltV
452&&&&&&&&&&& if (dbVal.m_fltVal != (float)lVal)
453&&&&&&&&&&&&&&& m_strVal.Format(_T(&%f&), dbVal.m_fltVal);
454&&&&&&&&&&& else
455&&&&&&&&&&&&&&& m_strVal.Format(_T(&%ld&), lVal);
456&&&&&&& }&
457&&&&&&&
459&&& case DBVT_DOUBLE:&&&&&&&
460&&&&&&& {
461&&&&&&&&& long lVal = (long)dbVal.m_dblV
462&&&&&&&&& if (dbVal.m_dblVal != (double)lVal)
463&&&&&&&&&&&&& m_strVal.Format(_T(&%f&), dbVal.m_dblVal);
464&&&&&&&&& else
465&&&&&&&&&&&&& m_strVal.Format(_T(&%ld&), lVal);
466&&&&&&& }
467&&&&&&&&
469&&& case DBVT_STRING:&&&&&&&&&&&&&&&
470&&&&&&& m_strVal = *dbVal.m_& m_strVal.Trim();
471&&&&&&&
473&&& case DBVT_ASTRING:&&&&&&&
474&&&&&&& m_strVal = *dbVal.m_pstringA;& m_strVal.Trim();
475&&&&&&&
477&&& case DBVT_WSTRING:&&&&&
478&&&&&&& m_strVal = *dbVal.m_pstringW;& m_strVal.Trim();
479&&&&&&&
481&&& default: ASSERT(FALSE);
485void CODBCExcelCell::Set(const CString& strVal)
487&&& ASSERT(m_Sheet);
488&&& if (CODBCExcelSheet::Exist == m_Sheet-&m_nFlag)
490&&&&&&& m_Sheet-&m_nFlag = CODBCExcelSheet::U
492&&& m_strVal = strV&&& m_strVal.Trim();
495void CODBCExcelCell::Set(short sVal)
497&&& ASSERT(m_Sheet);
498&&& if (CODBCExcelSheet::Exist == m_Sheet-&m_nFlag)
500&&&&&&& m_Sheet-&m_nFlag = CODBCExcelSheet::U
502&&& m_strVal.Format(_T(&%d&), sVal);&&
505void CODBCExcelCell::Set(long lVal)
507&&& ASSERT(m_Sheet);
508&&& if (CODBCExcelSheet::Exist == m_Sheet-&m_nFlag)
510&&&&&&& m_Sheet-&m_nFlag = CODBCExcelSheet::U
512&&& m_strVal.Format(_T(&%ld&), lVal);
515void CODBCExcelCell::Set(float fVal)
517&&& ASSERT(m_Sheet);
518&&& if (CODBCExcelSheet::Exist == m_Sheet-&m_nFlag)
520&&&&&&& m_Sheet-&m_nFlag = CODBCExcelSheet::U
522&&& m_strVal.Format(_T(&%f&), fVal);
525void CODBCExcelCell::Set(double dVal)
527&&& ASSERT(m_Sheet);
528&&& if (CODBCExcelSheet::Exist == m_Sheet-&m_nFlag)
530&&&&&&& m_Sheet-&m_nFlag = CODBCExcelSheet::U
532& m_strVal.Format(_T(&%f&), dVal);
作者&天道酬勤&
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'贪吃蛇游戏设计报告(C++)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
贪吃蛇游戏设计报告(C++)
上传于||文档简介
&&个​人​设​计​报​告​~​不​是​很​全
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩7页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 贪吃蛇c 代码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信