锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
]]>
//SP-A1.鐢ㄥ伐鍏鋒爮鐢諱竴涓狢ListCtrl鎺т歡
//SP-A2.鎻掑叆鏍忥紙鍒楋級(jí)鍒版帶浠?br> ((CListCtrl *)GetDlgItem(IDC_LIST1))->InsertColumn(0, _T("Name"), LVCFMT_LEFT);
((CListCtrl *)GetDlgItem(IDC_LIST1))->InsertColumn(1, _T("Scores"), LVCFMT_LEFT);
//SP-A3.璁劇疆鍚勪釜鏍忕殑瀹藉害
((CListCtrl *)GetDlgItem(IDC_LIST1))->SetColumnWidth(0,50);
((CListCtrl *)GetDlgItem(IDC_LIST1))->SetColumnWidth(1,50);
//SP-23鎻掑叆鏍忥紝騫跺埗瀹氶珮搴?/strong>
//鎴?(CListCtrl *)GetDlgItem(IDC_LIST1))->InsertColumn(1, _T("Scores"), LVCFMT_LEFT,50);
// int nColumnCount = ((CListCtrl *)GetDlgItem(IDC_LIST1))->GetHeaderCtrl()->GetItemCount();
//SP-A4.1.鎻掑叆琛?
LV_ITEM lvitem; //LVITEM緇撴瀯浣?/p>
lvitem.mask=LVIF_TEXT; //鎸囧嚭瀵規(guī)垚鍛樹腑鐨勫摢浜涙暟鎹繘琛岃緗?br> lvitem.pszText=L"vv"; //灝嗘枃鏈涓簐v
lvitem.iItem=0; //绱㈠紩鍊間負(fù)0
lvitem.iSubItem=0; //娌℃湁瀛愰」
((CListCtrl *)GetDlgItem(IDC_LIST1))->InsertItem(&lvitem);
//SP-A4.2.鎻掑叆琛?
//((CListCtrl *)GetDlgItem(IDC_LIST1))->SetItemText(0,0,L"aa");
//((CListCtrl *)GetDlgItem(IDC_LIST1))->SetItemText(0,1,L"bb");
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
6銆佸湪Test鎸夐挳鐨勬秷鎭浉搴斿嚱鏁頒腑瀹氫箟瀵硅薄錛屽脊鍑哄璇濇
void CMainFrame::OnTest()
{
// TODO: Add your command handler code here
CTest test;
test.DoModal();
}
/*
聽//SP-A2.鏋氫婦宸茶鍦ㄧ殑鏁版嵁搴撳嵎
聽CEGUID guid;
聽TCHAR szVolume[10];
聽TCHAR szVolumef[10];
聽int nCnt = 0;
聽CREATE_INVALIDGUID(&guid);
聽while(CeEnumDBVolumes(&guid,szVolume,sizeof(szVolume)))
聽{
聽聽nCnt++;
聽聽wsprintf(szVolumef,TEXT("Mounted Vol is %s"),szVolume);聽//鏍煎紡鍖栬緭鍑?br />聽聽MessageBox(szVolumef);聽//寮瑰嚭鎵鏈夊凡瑁呰澆鏁版嵁搴撶殑鍚嶅瓧
聽}
聽
聽聽//2.寮瑰嚭宸茶杞芥暟鎹簱鐨勬暟閲弉Cnt
聽TCHAR temp[20];
聽TCHAR tempf[20];
聽
聽_itow(nCnt,temp,10);聽//灝唅杞崲涓哄瓧絎︿覆鏀懼叆temp涓?鏈鍚庝竴涓暟瀛楄〃紺哄崄榪涘埗
聽wsprintf(tempf,TEXT("The Number of Mounted Vol is %s"),temp);
聽MessageBox(tempf);
聽//SP-A3.鍗歌澆鏁版嵁搴撳嵎錛屽茍閲嶆柊寮瑰嚭鎵鏈夊凡瑁呰澆鏁版嵁搴撶殑鍚嶅瓧鍙?qiáng)鏁伴?br />聽CEGUID guid1;
聽TCHAR szVolume1[10];
聽int nCnt1 = 0;
聽CREATE_INVALIDGUID(&guid1);
聽CeUnmountDBVol(&m_ceguid);
聽while(CeEnumDBVolumes(&guid1,szVolume1,sizeof(szVolume1)))
聽{
聽聽nCnt1++;
聽聽MessageBox(szVolume1);聽//寮瑰嚭鎵鏈夊凡瑁呰澆鏁版嵁搴撶殑鍚嶅瓧
聽}
聽TCHAR temp1[10];
聽_itow(nCnt1,temp1,10);聽//灝唅杞崲涓哄瓧絎︿覆鏀懼叆temp涓?鏈鍚庝竴涓暟瀛楄〃紺哄崄榪涘埗
聽MessageBox(temp1);
*/
/**/
聽//SP-A4.鍒涘緩鏁版嵁搴?/p>
//聽#define PID_PASSWORD聽聽聽聽聽聽 MAKELONG (CEVT_LPWSTR, 1)
聽HANDLE m_hdb=0;聽聽聽聽聽聽聽聽//榪斿洖鐨勫凡鎵撳紑鏁版嵁搴撶殑鍙ユ焺
聽CEOID m_ceoid=0;聽聽聽聽聽聽聽//typedef DWORD CEOID;
聽TCHAR DBTABLENAME[20] = _T("myDB");
聽//1.鎵撳紑鏁版嵁搴擄紝騫舵鏌ヨ繑鍥炲?br />聽m_hdb = CeOpenDatabaseEx(&m_ceguid,聽聽聽//鏁版嵁搴撳嵎鐨勪綅緗?br />聽聽聽聽聽聽聽&m_ceoid,聽聽聽//閫氳繃鍚嶇О寮曠敤鏁版嵁搴擄紝鎵浠ュ皢CEOID鍊艱涓?
聽聽聽聽聽聽聽DBTABLENAME,聽聽//鏁版嵁搴撳悕縐?br />聽聽聽聽聽聽聽NULL,聽聽聽聽//
聽聽聽聽聽聽聽CEDB_AUTOINCREMENT,聽//璇誨彇涓涓褰曞悗錛屾暟鎹簱鎸囬拡鑷
聽聽聽聽聽聽聽NULL);聽聽聽聽//鎺у埗鍙戦佹暟鎹簱鍙樺寲娑堟伅鐨勬柟寮?/p>
聽聽聽 if (m_hdb == INVALID_HANDLE_VALUE)
聽{
聽聽int rc;
聽聽聽聽聽聽聽 rc = GetLastError();
聽聽TCHAR temp1[10];
聽聽_itow(rc,temp1,10);聽
聽聽MessageBox(temp1);
聽聽//2.濡傛灉娌℃湁璇ユ暟鎹簱錛屽垯鍒涘緩涓柊鐨?br />聽聽聽聽聽聽聽 if (rc == ERROR_FILE_NOT_FOUND)聽聽
聽聽{
聽聽聽//2.1濉啓鏁版嵁搴撲俊鎭?br />聽聽聽CEDBASEINFO cedbaseinfo;聽聽聽//鏁版嵁搴撲俊鎭殑緇撴瀯浣?br />聽聽聽cedbaseinfo.dwFlags = CEDB_VALIDNAME
聽聽聽聽聽聽聽聽| CEDB_VALIDTYPE
聽聽聽聽聽聽聽聽| CEDB_VALIDSORTSPEC; //淇緩鏁版嵁搴撲腑瑕佺敤鍒扮殑綾誨瀷
聽聽聽wcscpy(cedbaseinfo.szDbaseName,DBTABLENAME);
聽聽聽cedbaseinfo.dwDbaseType = 0;
聽聽聽cedbaseinfo.wNumSortOrder = 1 ;
聽聽聽cedbaseinfo.rgSortSpecs[0].propid = PID_PASSWORD;
聽聽聽cedbaseinfo.rgSortSpecs[0].dwFlags = CEDB_SORT_CASEINSENSITIVE;
聽聽聽//2.2鍒涘緩鏁版嵁搴?br />聽聽聽m_ceoid = CeCreateDatabaseEx(&m_ceguid,&cedbaseinfo);
聽聽聽if(m_ceoid==0)
聽聽聽{
聽聽聽聽MessageBox(TEXT("fail"));
聽聽聽}
聽聽聽else
聽聽聽{
聽聽聽聽//3鍒涘緩鍚庢墦寮鏁版嵁搴?br />聽聽聽聽m_hdb = CeOpenDatabaseEx(&m_ceguid,
聽聽聽聽聽聽聽聽聽聽&m_ceoid,
聽聽聽聽聽聽聽聽聽聽DBTABLENAME,
聽聽聽聽聽聽聽聽聽聽NULL,
聽聽聽聽聽聽聽聽聽聽CEDB_AUTOINCREMENT,
聽聽聽聽聽聽聽聽聽聽NULL);
聽聽聽聽MessageBox(TEXT("build Database success"));
聽聽聽聽//3.1.鎵撳紑鏁版嵁搴撻敊璇垽鏂?br />聽聽聽聽if(INVALID_HANDLE_VALUE == m_hdb)
聽聽聽聽{
聽聽聽聽聽rc = GetLastError();
聽聽聽聽聽switch(rc)
聽聽聽聽聽{
聽聽聽聽聽聽case ERROR_INVALID_PARAMETER:
聽聽聽聽聽聽MessageBox(L"ERROR_INVALID_PARAMETER");
聽聽聽聽聽聽break;
聽聽聽聽聽聽case ERROR_FILE_NOT_FOUND:
聽聽聽聽聽聽MessageBox(L"ERROR_FILE_NOT_FOUND");
聽聽聽聽聽聽break;
聽聽聽聽聽聽case ERROR_NOT_ENOUGH_MEMORY:
聽聽聽聽聽聽MessageBox(L"ERROR_NOT_ENOUGH_MEMORY");
聽聽聽聽聽聽break;
聽聽聽聽聽聽default :
聽聽聽聽聽聽MessageBox(L"Database Opened");
聽聽聽聽聽聽break;
聽聽聽聽聽}
聽聽聽聽}
聽聽聽}
聽聽}
聽聽else聽//1.1鎵撳紑鏁版嵁搴撻敊璇垽鏂?br />聽聽{
聽聽聽switch(rc)
聽聽聽{
聽聽聽聽case ERROR_INVALID_PARAMETER:
聽聽聽聽MessageBox(L"ERROR_INVALID_PARAMETER");
聽聽聽聽break;
聽聽聽聽case ERROR_FILE_NOT_FOUND:
聽聽聽聽MessageBox(L"ERROR_FILE_NOT_FOUND");
聽聽聽聽break;
聽聽聽聽case ERROR_NOT_ENOUGH_MEMORY:
聽聽聽聽MessageBox(L"ERROR_NOT_ENOUGH_MEMORY");
聽聽聽聽break;
聽聽聽聽default :
聽聽聽聽MessageBox(L"Database Opened");
聽聽聽聽break;
聽聽聽}
聽聽}
聽}
聽//SP-A5.鏌ユ壘(鎼滅儲(chǔ))璁板綍
聽DWORD dwIndex;聽聽聽聽聽聽聽聽//绱㈠紩
聽CEOID oid;聽聽聽聽聽聽聽聽聽//CEOID鏄疍WORD
聽聽聽/*
聽聽聽聽@type CEOID | Unique identifier for all WINCE objects
聽聽聽聽@comm Every WINCE object can be efficiently referred to by its OID. OID's are unique
聽聽聽聽 in the system and are not reused
聽聽聽*/
聽oid = CeSeekDatabase(m_hdb,聽聽聽聽聽//宸叉墦寮鏁版嵁搴撶殑鍙ユ焺
聽聽聽聽聽聽CEDB_SEEK_BEGINNING,聽//鏌ユ壘鏁版嵁搴撶殑絎琻涓褰?br />聽聽聽聽聽聽0,聽聽聽聽聽聽//n鍊?br />聽聽聽聽聽聽&dwIndex);聽聽聽聽// receives the index from the start of the database to the beginning of the record that was found. This parameter can be NULL.
聽if(0 == oid)
聽{
聽聽MessageBox(L"there is no first item in the database!");
聽聽///insert record
聽聽CEPROPVAL * pRorps;
聽聽pRorps = new CEPROPVAL;
聽聽//
聽聽memset(pRorps,0,LocalSize(pRorps));
聽聽pRorps->propid = PID_PASSWORD;
聽聽pRorps->val.lpwstr = TEXT("SONGPENG");
聽聽oid =0;
聽聽oid = CeWriteRecordProps(m_hdb,聽聽聽//宸叉墦寮鏁版嵁搴撳彞鏌?br />聽聽聽聽聽聽聽聽0,聽聽聽聽//涓?錛屽垯鍒涘緩鏂拌褰?br />聽聽聽聽聽聽聽聽1,聽聽聽聽//灞炴D緇撴瀯鏁扮粍涓」鐩殑鏁伴噺
聽聽聽聽聽聽聽聽pRorps);聽聽//瑕佽褰曠殑涓滀笢
聽聽if (oid == 0)
聽聽{
聽聽聽MessageBox(TEXT("insert failues"));
聽聽}
聽聽else
聽聽{
聽聽聽MessageBox(TEXT("insert success"));
聽聽聽oid = CeSeekDatabase(m_hdb,聽聽聽聽聽//宸叉墦寮鏁版嵁搴撶殑鍙ユ焺
聽聽聽聽聽聽CEDB_SEEK_BEGINNING,聽//鏌ユ壘鏁版嵁搴撶殑絎琻涓褰?br />聽聽聽聽聽聽0,聽聽聽聽聽聽//n鍊?br />聽聽聽聽聽聽&dwIndex);聽
聽聽聽if(0 != oid)
聽聽聽{
聽聽聽聽MessageBox(L"first item found!");
聽聽聽}
聽聽}
聽}
聽else
聽{
聽聽MessageBox(L"first item found!");
聽}
聽//SP-A6.璇誨彇璁板綍
聽WORD wProps;聽聽聽聽聽//灞炴т釜鏁?br />聽PBYTE pBuff;聽聽聽聽聽//緙撳啿鍖?br />聽pBuff=0;
聽DWORD dwRecSize;聽聽聽聽//緙撳啿鍖哄ぇ灝?/p>
聽oid=CeReadRecordProps(m_hdb,聽//宸叉墦寮鏁版嵁搴撶殑鍙ユ焺
聽CEDB_ALLOWREALLOC,聽聽聽聽//鍑芥暟鍙互鎵╁ぇ緙撳啿鍖猴紝浠ヤ究瀹圭撼榪斿洖鏁版嵁
聽&wProps,聽聽聽聽聽聽//鍖呭惈浜?jiǎn)rProgID鎸囧悜鐨凜EPROPID緇撴瀯鐨?鏁伴噺
聽NULL,聽聽聽聽聽聽聽//涓嬈¤鍙栬褰曟墍鏈夊繀欏誨睘鎬?br />聽&(LPBYTE)pBuff,聽聽聽聽//鎸囧悜緙撳啿鍖烘寚閽堢殑鎸囬拡
聽&dwRecSize);
聽if (oid == 0)
聽{
聽聽聽聽聽聽聽 TCHAR szTxt[64];
聽聽聽聽聽聽聽 INT rc = GetLastError();
聽聽聽聽聽聽聽 wsprintf (szTxt, TEXT ("Db item not read. rc = %d (%x)"),
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 rc, rc);
聽聽聽聽聽聽聽 MessageBox (szTxt);
聽}
聽else
聽{
聽聽PCEPROPVAL pRecord;
聽聽pRecord = (PCEPROPVAL)pBuff;聽//鎸囧悜CEPROVAL鏁扮粍
聽聽TCHAR tmp[20];
聽聽for(int i=0;i<wProps;i++)
聽聽{
聽聽聽switch(pRecord->propid)
聽聽聽{
聽聽聽case PID_PASSWORD:
聽聽聽聽lstrcpy(tmp,pRecord->val.lpwstr);
聽聽聽聽break;
聽聽聽default:
聽聽聽聽break;
聽聽聽}
聽聽聽pRecord++;
聽聽}
聽聽MessageBox(tmp);
聽聽LocalFree(pBuff);
聽}
聽//SP-A7.鍒犻櫎璁板綍
聽oid = CeSeekDatabase(m_hdb,CEDB_SEEK_BEGINNING,0,NULL);
聽if( CeDeleteRecord(m_hdb,oid))
聽MessageBox(_T("DELE success"));
聽if(CloseHandle(m_hdb))
聽MessageBox(_T("close success"));
聽if(CeUnmountDBVol(&m_ceguid))
聽MessageBox(_T("unmount success"));
}
/*
//鐢ㄥ埌鐨勭粨鏋勪綋鍜岃仈鍚堜綋
typedef struct _CEPROPVAL {
CEPROPID propid;聽//灞炴D
WORD wLenData;聽聽//涓嶇敤
WORD wFlags;聽聽//鏍囪瘑
CEVALUNION val;聽聽//灞炴у鹼紙鑱斿悎浣擄級(jí)
} CEPROPVAL;
typedef CEPROPVAL *PCEPROPVAL;
typedef union _CEVALUNION {
short iVal;
USHORT uiVal;
long lVal;
ULONG ulVal;
FILETIME filetime;
LPWSTR lpwstr;聽聽//瀛楃涓插艦寮?br />CEBLOB blob;
BOOL boolVal
double dblVal
} CEVALUNION;
typedef struct _CEDBASEINFO {
聽聽聽 DWORD聽聽聽 dwFlags;聽聽聽聽聽聽聽聽聽聽 //@field Indicates which fields are valid. Possible values are:
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //聽 @flag CEDB_VALIDNAME | The name field is valid and should be used
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //聽 @flag CEDB_VALIDTYPE | The type field is valid and should be used
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //聽 @flag CEDB_VALIDSORTSPEC | The sortspecs are valid and should be used
聽聽聽 WCHAR聽聽聽 szDbaseName[CEDB_MAXDBASENAMELEN]; //@field Name of Database. Max CEDB_MAXDBASENAMELEN characters.
聽聽聽 DWORD聽聽聽 dwDbaseType;聽聽聽聽聽聽 //@field A type ID for this database
聽聽聽 WORD聽聽聽聽 wNumRecords;聽聽聽聽聽聽 //@field Number of records in the database
聽聽聽 WORD聽聽聽聽 wNumSortOrder;聽聽聽聽 //@field Number of sort orders active in the database
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // Maximum is CEDB_MAXSORTORDER.
聽聽聽 DWORD聽聽聽 dwSize;聽聽聽聽聽聽聽聽聽聽聽 //@field Size in bytes that this database is using
聽聽聽 FILETIME ftLastModified;聽聽聽 //@field Last time this database was modified
聽聽聽 SORTORDERSPEC rgSortSpecs[CEDB_MAXSORTORDER];聽 //@field Actual sort order descriptions.
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // Only first wNumSortOrder of this array are valid.
} CEDBASEINFO, *PCEDBASEINFO;
*/
TRACE( L"This is a TRACE statement\n" );
TRACE( L"The value of x is %d\n", x );
聽聽聽聽聽聽聽聽//瀹氫箟璇誨啓緙撳啿鍖?br />聽聽TCHAR buffer[]=L"a";聽//4涓瓧鑺?br />聽聽TCHAR buffer_r[]=L"";
/*聽聽
聽聽//SP-A2鏂囦歡鍐欏叆
聽聽file.Write(buffer,sizeof(buffer));
聽聽file.Close();聽//鏂囦歡鐢ㄥ畬蹇呴』鍏抽棴錛屽惁鍒欎笅嬈℃棤娉曟搷浣?br />*/
/*
聽聽//鏂囦歡闀垮害
聽聽DWORD dwBytesRemaining = file.GetLength();
聽聽_itow(dwBytesRemaining,buffer_r,10);
*/
聽聽//SP-A3鏂囦歡璇誨叆,瑕佽鍙栵紝灝辮鎶婂墠闈㈢殑鍐欏叆鍘繪帀錛屽惁鍒欎細(xì)鏃犳硶璇誨彇
聽聽file.Read(buffer_r,4);
聽聽MessageBox(buffer_r);
聽聽file.Close();聽//鏂囦歡鐢ㄥ畬蹇呴』鍏抽棴錛屽惁鍒欎笅嬈℃棤娉曟搷浣?br />/*
聽//鍐欐枃鏈紝澶辮觸
聽RECT rect;
聽聽聽 GetClientRect (&rect);
聽HDC hdc;
聽hdc = (HDC)GetDC();
聽ExtTextOut(hdc,0,0,0,NULL,L"aa",lstrlen(L"aa"),NULL);
*/聽
聽Show_Num(i);
//聽MessageBox(L"i");
聽Show_Num(l);
//聽MessageBox(L"l");
聽Show_Num(ul);
//聽MessageBox(L"ul");
}
//------------------------------
//鍙橀噺鏄劇ず鍑芥暟-i
//
void Show_Num(int i)
{
聽TCHAR temp[8];
聽_itow(i,temp,16);聽//灝唅杞崲涓哄瓧絎︿覆鏀懼叆temp涓?鏈鍚庝竴涓暟瀛楄〃紺哄崄榪涘埗
聽AfxMessageBox(temp);
//聽MessageBox(NULL,temp,NULL,MB_OK);
}
//------------------------------
//鍙橀噺鏄劇ず鍑芥暟-l
//
void Show_Num(long l)
{
聽TCHAR temp[16];
聽_itow(l,temp,16);聽//灝唅杞崲涓哄瓧絎︿覆鏀懼叆temp涓?鏈鍚庝竴涓暟瀛楄〃紺哄崄榪涘埗
聽AfxMessageBox(temp);
//聽MessageBox(NULL,temp,NULL,MB_OK);
}
//------------------------------
//鍙橀噺鏄劇ず鍑芥暟-ul
//
void Show_Num(unsigned long ul)
{
聽TCHAR temp[16];
聽_itow(ul,temp,16);聽//灝唅杞崲涓哄瓧絎︿覆鏀懼叆temp涓?鏈鍚庝竴涓暟瀛楄〃紺哄崄榪涘埗
聽AfxMessageBox(temp);
//聽MessageBox(NULL,temp,NULL,MB_OK);
}
聽/*
聽聽//SP-A2鍒涘緩鏂囦歡2鐢–reateFile鍒涘緩鏂囦歡
聽聽HANDLE g_hFile = 0;聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // Handle to the opened file
聽聽g_hFile = CreateFile(L"test.txt",GENERIC_READ | GENERIC_WRITE,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
*/