青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

啤酒

一個(gè)空白者

 

CListCtrl使用技巧

//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
排序算發(fā)
// SortTextItems	- Sort the list based on column text// Returns		- Returns truefor success// nCol			- column that contains the text to be sorted// bAscending		- indicate sort order// low			- row to start scanning from - default row is 0// high			- row to end scan. -1 indicates last row
字符串
/////////////////////////// BOOL CMyListCtrl::SortTextItems( int nCol, BOOL bAscending,? int low /*= 0*, int high /*= -1* ) { if( nCol >= ((CHeaderCtrl*)GetDlgItem(0))->GetItemCount() ) return FALSE; if( high == -1 ) high = GetItemCount() - 1; int lo = low; int hi = high; CString midItem; if( hi <= lo ) return FALSE; midItem = GetItemText( (lo+hi)/2, nCol ); // loop through the list until indices crosswhile( lo <= hi ) { // rowText will hold all column text for one row CStringArray rowText; // find the first element that is greater than or equal to?// the partition element starting from the left Index.if( bAscending ) while( ( lo < high ) && ( GetItemText(lo, nCol) < midItem ) ) ++lo; elsewhile( ( lo < high ) && ( GetItemText(lo, nCol) > midItem ) ) ++lo; // find an element that is smaller than or equal to?// the partition element starting from the right Index.if( bAscending ) while( ( hi > low ) && ( GetItemText(hi, nCol) > midItem ) ) --hi; elsewhile( ( hi > low ) && ( GetItemText(hi, nCol) < midItem ) ) --hi; // if the indexes have not crossed, swap// and if the items are not equalif( lo <= hi ) { // swap only if the items are not equalif( GetItemText(lo, nCol) != GetItemText(hi, nCol)) { // swap the rows LV_ITEM lvitemlo, lvitemhi; int nColCount =? ((CHeaderCtrl*)GetDlgItem(0))->GetItemCount(); rowText.SetSize( nColCount ); int i; for( i=0; i<nColCount; i++) rowText[i] = GetItemText(lo, i); lvitemlo.mask = LVIF_IMAGE | LVIF_PARAM | LVIF_STATE; lvitemlo.iItem = lo; lvitemlo.iSubItem = 0; lvitemlo.stateMask = LVIS_CUT | LVIS_DROPHILITED |? LVIS_FOCUSED |? LVIS_SELECTED |? LVIS_OVERLAYMASK | LVIS_STATEIMAGEMASK; lvitemhi = lvitemlo; lvitemhi.iItem = hi; GetItem( &lvitemlo ); GetItem( &lvitemhi ); for( i=0; i<nColCount; i++) SetItemText(lo, i, GetItemText(hi, i)); lvitemhi.iItem = lo; SetItem( &lvitemhi ); for( i=0; i<nColCount; i++) SetItemText(hi, i, rowText[i]); lvitemlo.iItem = hi; SetItem( &lvitemlo ); } ++lo; --hi; } } // If the right index has not reached the left side of array// must now sort the left partition.if( low < hi ) SortTextItems( nCol, bAscending , low, hi); // If the left index has not reached the right side of array// must now sort the right partition.if( lo < high ) SortTextItems( nCol, bAscending , lo, high ); return TRUE; }

//////////////////////////////////////////////////////////

數(shù)值:
bool CMyListCtrl::SortNumericItems( int nCol, BOOL bAscending,int low/*=0*, int high/*=-1* )
{
	if( nCol >= ((CHeaderCtrl*)GetDlgItem(0))->GetItemCount() )
		return FALSE;

	if( high == -1 ) high = GetItemCount() - 1;

	int lo = low;
	int hi = high;
	CString midItem;

	if( hi <= lo )
	      return FALSE;

	midItem = GetItemText( (lo+hi)/2, nCol );

	// loop through the list until indices crosswhile( lo <= hi )
	{
 		// rowText will hold all column text for one row
 		CStringArray rowText;

 		// find the first element that is greater than or equal to// the partition element starting from the left Index.if( bAscending )
  			//while( ( lo < high ) && (atoi(GetItemText(lo, nCol)) < midItem ) )
			/*!!!*  while( ( lo < high ) && ( CmpItems( GetItemText(lo, nCol) , midItem, nCol) < 0 ) )
   				++lo;
 		else//while( ( lo < high ) && (atoi(GetItemText(lo, nCol)) > midItem ) )
			/*!!!*  while( ( lo < high ) && ( CmpItems( GetItemText(lo, nCol) , midItem, nCol) > 0 ) )
   			++lo;

 		// find an element that is smaller than or equal to// the partition element starting from the right Index.if( bAscending )
  			//while( ( hi > low ) && (atoi(GetItemText(hi, nCol)) > midItem ) )
			/*!!!*  while( ( hi > low ) && ( CmpItems(GetItemText(hi, nCol) , midItem, nCol ) > 0 ) )
   				--hi;
 		else//while( ( hi > low ) && (atoi(GetItemText(hi, nCol)) < midItem ) )
			/*!!!*  while( ( hi > low ) && ( CmpItems(GetItemText(hi, nCol) , midItem, nCol ) < 0 ) )
   			--hi;

 		// if the indexes have not crossed, swap// and if the items are not equalif( lo <= hi )
 		{
			// swap only if the items are not equal//if(atoi(GetItemText(lo, nCol)) != atoi(GetItemText(hi, nCol)) )
			/*!!!*  if( CmpItems (GetItemText(lo, nCol) , GetItemText(hi, nCol), Col  ) != 0) {
	   			// swap the rows
	   			LV_ITEM lvitemlo, lvitemhi;

	   			int nColCount = ((CHeaderCtrl*)GetDlgItem(0))->GetItemCount();
	   			rowText.SetSize( nColCount );

	   			int i;
	   			for( i=0; i < nColCount; i++)
	      			rowText[i] = GetItemText(lo, i);

	   			lvitemlo.mask = LVIF_IMAGE | LVIF_PARAM | LVIF_STATE;
	   			lvitemlo.iItem = lo;
	   			lvitemlo.iSubItem = 0;
	   			lvitemlo.stateMask = LVIS_CUT | LVIS_DROPHILITED |
	      					LVIS_FOCUSED |  LVIS_SELECTED |
	      					LVIS_OVERLAYMASK | LVIS_STATEIMAGEMASK;
	   			lvitemhi = lvitemlo;
	   			lvitemhi.iItem = hi;

	   			GetItem( &lvitemlo );
	   			GetItem( &lvitemhi );

	   			for( i=0; i< nColCount; i++)
	      			SetItemText(lo, i, GetItemText(hi, i) );

	   			lvitemhi.iItem = lo;
	   			SetItem( &lvitemhi );

	   			for( i=0; i< nColCount; i++)
	      			SetItemText(hi, i, rowText[i]);

	   			lvitemlo.iItem = hi;
	   			SetItem( &lvitemlo );
	  		}

	  		++lo;
	  		--hi;
	 	}
	}

	// If the right index has not reached the left side of array// must now sort the left partition.if( low < hi )
 		SortNumericItems( nCol, bAscending , low, hi);

	// If the left index has not reached the right side of array// must now sort the right partition.if( lo < high )
 		SortNumericItems( nCol, bAscending , lo, high );

	return TRUE;
}








//////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////// int i = 0;
CString str;
str.Format("%d",i*10);
// 序號(hào)for(i=0;i<10;i++)
?{? ??
??????str.Format("%d",i*10);
?? m_mm_host_ListCtrl.InsertItem(i, str, 0);
??????m_mm_host_ListCtrl.SetItemText(i, 1, str);??????m_mm_host_ListCtrl.SetItemText(i, 2, str);??????m_mm_host_ListCtrl.SetItemText(i, 3, str);}
/////////////////////////////////

void CMmDlg::OnDelete()
{
?int i,iState;

?int nItemSelected=m_mm_host_ListCtrl.GetSelectedCount();//所選表項(xiàng)數(shù) 
?int nItemCount=m_mm_host_ListCtrl.GetItemCount();//表項(xiàng)總數(shù) 
?if(nItemSelected<1)
??return;
?for(i=nItemCount-1;i>=0;i--)
?{
??iState=m_mm_host_ListCtrl.GetItemState(i,LVIS_SELECTED); 
??if(iState!=0) 
???m_mm_host_ListCtrl.DeleteItem(i);
?}
}
////////////////////////////////////////////////////////////////
CListCtrl使用技巧[轉(zhuǎn)]








/////////////////////////////////////////////////////////////////
?

1. CListCtrl 風(fēng)格

????? LVS_ICON: 為每個(gè)item顯示大圖標(biāo)
????? LVS_SMALLICON: 為每個(gè)item顯示小圖標(biāo)
????? LVS_LIST: 顯示一列帶有小圖標(biāo)的item
????? LVS_REPORT: 顯示item詳細(xì)資料
????? 直觀的理解:windows資源管理器,“查看”標(biāo)簽下的“大圖標(biāo),小圖標(biāo),列表,詳細(xì)資料”
				
?

2. 設(shè)置listctrl 風(fēng)格及擴(kuò)展風(fēng)格

????? LONG lStyle;
????? lStyle = GetWindowLong(m_list.m_hWnd, GWL_STYLE);//獲取當(dāng)前窗口style
????? lStyle &= ~LVS_TYPEMASK; //清除顯示方式位
????? lStyle |= LVS_REPORT; //設(shè)置style
????? SetWindowLong(m_list.m_hWnd, GWL_STYLE, lStyle);//設(shè)置style
?
????? DWORD dwStyle = m_list.GetExtendedStyle();
????? dwStyle |= LVS_EX_FULLROWSELECT;//選中某行使整行高亮(只適用與report風(fēng)格的listctrl)
????? dwStyle |= LVS_EX_GRIDLINES;//網(wǎng)格線(只適用與report風(fēng)格的listctrl)
????? dwStyle |= LVS_EX_CHECKBOXES;//item前生成checkbox控件
????? m_list.SetExtendedStyle(dwStyle); //設(shè)置擴(kuò)展風(fēng)格
?
????? 注:listview的style請(qǐng)查閱msdn
????? http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wceshellui5/html/wce50lrflistviewstyles.asp
				
				?

3. 插入數(shù)據(jù)

				
				
				
				????? m_list.InsertColumn( 0, "ID", LVCFMT_LEFT, 40 );//插入列
????? m_list.InsertColumn( 1, "NAME", LVCFMT_LEFT, 50 );
????? int nRow = m_list.InsertItem(0, “11”);//插入行
????? m_list.SetItemText(nRow, 1, “jacky”);//設(shè)置數(shù)據(jù)
?

4. 一直選中item

				??? 選中style中的Show selection always,或者在上面第2點(diǎn)中設(shè)置LVS_SHOWSELALWAYS


5. 選中和取消選中一行

??? int nIndex = 0;
??? //選中
??? m_list.SetItemState(nIndex, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
??? //取消選中
??? m_list.SetItemState(nIndex, 0, LVIS_SELECTED|LVIS_FOCUSED);
?

6. 得到listctrl中所有行的checkbox的狀態(tài)

????? m_list.SetExtendedStyle(LVS_EX_CHECKBOXES);
????? CString str;
????? for(int i=0; i????? {
?????????? if( m_list.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED || m_list.GetCheck(i))
?????????? {
??????????????? str.Format(_T("第%d行的checkbox為選中狀態(tài)"), i);
??????????????? AfxMessageBox(str);
?????????? }
????? }
				
?

7. 得到listctrl中所有選中行的序號(hào)

				
						
????? 方法一:
????? CString str;
????? for(int i=0; i????? {
?????????? if( m_list.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED )
?????????? {
??????????????? str.Format(_T("選中了第%d行"), i);
??????????????? AfxMessageBox(str);
?????????? }
????? }
????? 方法二:
????? POSITION pos = m_list.GetFirstSelectedItemPosition();
????? if (pos == NULL)
?????????? TRACE0("No items were selected!\n");
????? else
????? {
?????????? while (pos)
?????????? {
??????????????? int nItem = m_list.GetNextSelectedItem(pos);
??????????????? TRACE1("Item %d was selected!\n", nItem);
??????????????? // you could do your own processing on nItem here
?????????? }
????? }
				
?

8. 得到item的信息

????? TCHAR szBuf[1024];
????? LVITEM lvi;
????? lvi.iItem = nItemIndex;
????? lvi.iSubItem = 0;
????? lvi.mask = LVIF_TEXT;
????? lvi.pszText = szBuf;
????? lvi.cchTextMax = 1024;
????? m_list.GetItem(&lvi);
????? 關(guān)于得到設(shè)置item的狀態(tài),還可以參考msdn文章
????? Q173242: Use Masks to Set/Get Item States in CListCtrl
?????????????? http://support.microsoft.com/kb/173242/en-us
				
						
?

9. 得到listctrl的所有列的header字符串內(nèi)容

????? LVCOLUMN lvcol;
????? char? str[256];
????? int?? nColNum;
????? CString? strColumnName[4];//假如有4列
????? nColNum = 0;
????? lvcol.mask = LVCF_TEXT;
????? lvcol.pszText = str;
????? lvcol.cchTextMax = 256;
????? while(m_list.GetColumn(nColNum, &lvcol))
????? {
?????????? strColumnName[nColNum] = lvcol.pszText;
?????????? nColNum++;
????? }
				
?

10. 使listctrl中一項(xiàng)可見,即滾動(dòng)滾動(dòng)條

??? m_list.EnsureVisible(i, FALSE);

11. 得到listctrl列數(shù)

??? int nHeadNum = m_list.GetHeaderCtrl()->GetItemCount();

12. 刪除所有列

??? ? 方法一:
???? ??? while ( m_list.DeleteColumn (0))
??? ?? 因?yàn)槟銊h除了第一列后,后面的列會(huì)依次向上移動(dòng)。
??? ? 方法二:
????? int nColumns = 4;
????? for (int i=nColumns-1; i>=0; i--)
????? ??? m_list.DeleteColumn (i);
				
?

13. 得到單擊的listctrl的行列號(hào)

????? 添加listctrl控件的NM_CLICK消息相應(yīng)函數(shù)
????? void CTest6Dlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)
????? {
?????????? // 方法一:
?????????? /*
?????????? DWORD dwPos = GetMessagePos();
?????????? CPoint point( LOWORD(dwPos), HIWORD(dwPos) );
??
?????????? m_list.ScreenToClient(&point);
??
?????????? LVHITTESTINFO lvinfo;
?????????? lvinfo.pt = point;
?????????? lvinfo.flags = LVHT_ABOVE;
????
?????????? int nItem = m_list.SubItemHitTest(&lvinfo);
?????????? if(nItem != -1)
?????????? {
??????????????? CString strtemp;
??????????????? strtemp.Format("單擊的是第%d行第%d列", lvinfo.iItem, lvinfo.iSubItem);
??????????????? AfxMessageBox(strtemp);
?????????? }
????????? */
??
????????? // 方法二:
????????? /*
?????????? NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
?????????? if(pNMListView->iItem != -1)
?????????? {
??????????????? CString strtemp;
??????????????? strtemp.Format("單擊的是第%d行第%d列",
??????????????????????????????? pNMListView->iItem, pNMListView->iSubItem);
??????????????? AfxMessageBox(strtemp);
?????????? }
????????? */
?????????? *pResult = 0;
????? }
?

14. 判斷是否點(diǎn)擊在listctrl的checkbox上

????? 添加listctrl控件的NM_CLICK消息相應(yīng)函數(shù)
????? void CTest6Dlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)
????? {
?????????? DWORD dwPos = GetMessagePos();
?????????? CPoint point( LOWORD(dwPos), HIWORD(dwPos) );
??
?????????? m_list.ScreenToClient(&point);
??
?????????? LVHITTESTINFO lvinfo;
?????????? lvinfo.pt = point;
?????????? lvinfo.flags = LVHT_ABOVE;
????
?????????? UINT nFlag;
?????????? int nItem = m_list.HitTest(point, &nFlag);
?????????? //判斷是否點(diǎn)在checkbox上
?????????? if(nFlag == LVHT_ONITEMSTATEICON)
?????????? {
??????????????? AfxMessageBox("點(diǎn)在listctrl的checkbox上");
?????????? }
?????????? *pResult = 0;
????? }
				
?

15. 右鍵點(diǎn)擊listctrl的item彈出菜單

????? 添加listctrl控件的NM_RCLICK消息相應(yīng)函數(shù)
????? void CTest6Dlg::OnRclickList1(NMHDR* pNMHDR, LRESULT* pResult)
????? {
?????????? NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
?????????? if(pNMListView->iItem != -1)
?????????? {
??????????????? DWORD dwPos = GetMessagePos();
??????????????? CPoint point( LOWORD(dwPos), HIWORD(dwPos) );
???
??????????????? CMenu menu;
??????????????? VERIFY( menu.LoadMenu( IDR_MENU1 ) );
??????????????? CMenu* popup = menu.GetSubMenu(0);
??????????????? ASSERT( popup != NULL );
??????????????? popup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this );
?????????? }
?????????? *pResult = 0;
? }
				
?
?

16. item切換焦點(diǎn)時(shí)(包括用鍵盤和鼠標(biāo)切換item時(shí)),狀態(tài)的一些變化順序

????? 添加listctrl控件的LVN_ITEMCHANGED消息相應(yīng)函數(shù)
????? void CTest6Dlg::OnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult)
????? {
?????????? NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
?????????? // TODO: Add your control notification handler code here
???
?????????? CString sTemp;
?
?????????? if((pNMListView->uOldState & LVIS_FOCUSED) == LVIS_FOCUSED &&
??????????? (pNMListView->uNewState & LVIS_FOCUSED) == 0)
?????????? {
??????????????? sTemp.Format("%d losted focus",pNMListView->iItem);
?????????? }
?????????? else if((pNMListView->uOldState & LVIS_FOCUSED) == 0 &&
?????????????? (pNMListView->uNewState & LVIS_FOCUSED) == LVIS_FOCUSED)
?????????? {
??????????????? sTemp.Format("%d got focus",pNMListView->iItem);
?????????? }
?
?????????? if((pNMListView->uOldState & LVIS_SELECTED) == LVIS_SELECTED &&
??????????? (pNMListView->uNewState & LVIS_SELECTED) == 0)
?????????? {
??????????????? sTemp.Format("%d losted selected",pNMListView->iItem);
?????????? }
?????????? else if((pNMListView->uOldState & LVIS_SELECTED) == 0 &&
??????????? (pNMListView->uNewState & LVIS_SELECTED) == LVIS_SELECTED)
?????????? {
??????????????? sTemp.Format("%d got selected",pNMListView->iItem);
?????????? }
???
?????????? *pResult = 0;
????? }
				

?

17. 得到另一個(gè)進(jìn)程里的listctrl控件的item內(nèi)容

				
				
				
						http://www.codeproject.com/threads/int64_memsteal.asp
				
				


18. 選中l(wèi)istview中的item

Q131284: How To Select a Listview Item Programmatically
http://support.microsoft.com/kb/131284/en-us


19. 如何在CListView中使用CListCtrl的派生類

				
						http://www.codeguru.com/cpp/controls/listview/introduction/article.php/c919/
				
				
				
						
?

20. listctrl的subitem添加圖標(biāo)

????? m_list.SetExtendedStyle(LVS_EX_SUBITEMIMAGES);
????? m_list.SetItem(..); //具體參數(shù)請(qǐng)參考msdn
?

21. 在CListCtrl顯示文件,并根據(jù)文件類型來顯示圖標(biāo)

????? 網(wǎng)上找到的代碼,share
????? BOOL CTest6Dlg::OnInitDialog()
????? {
?????????? CDialog::OnInitDialog();
??
?????????? HIMAGELIST himlSmall;
?????????? HIMAGELIST himlLarge;
?????????? SHFILEINFO sfi;
?????????? char? cSysDir[MAX_PATH];
?????????? CString? strBuf;
?
?????????? memset(cSysDir, 0, MAX_PATH);
??
?????????? GetWindowsDirectory(cSysDir, MAX_PATH);
?????????? strBuf = cSysDir;
?????????? sprintf(cSysDir, "%s", strBuf.Left(strBuf.Find("\\")+1));
?
?????????? himlSmall = (HIMAGELIST)SHGetFileInfo ((LPCSTR)cSysDir,?
????????????????????? 0,?
????????????????????? &sfi,
????????????????????? sizeof(SHFILEINFO),?
????????????????????? SHGFI_SYSICONINDEX | SHGFI_SMALLICON );
??
?????????? himlLarge = (HIMAGELIST)SHGetFileInfo((LPCSTR)cSysDir,?
????????????????????? 0,?
????????????????????? &sfi,?
????????????????????? sizeof(SHFILEINFO),?
????????????????????? SHGFI_SYSICONINDEX | SHGFI_LARGEICON);
??
?????????? if (himlSmall && himlLarge)
?????????? {
??????????????? ::SendMessage(m_list.m_hWnd, LVM_SETIMAGELIST,
???????????????????????????? (WPARAM)LVSIL_SMALL, (LPARAM)himlSmall);
??????????????? ::SendMessage(m_list.m_hWnd, LVM_SETIMAGELIST,
???????????????????????????? (WPARAM)LVSIL_NORMAL, (LPARAM)himlLarge);
?????????? }
?????????? return TRUE;? // return TRUE? unless you set the focus to a control
????? }
?
????? void CTest6Dlg::AddFiles(LPCTSTR lpszFileName, BOOL bAddToDocument)
????? {
?????????? int nIcon = GetIconIndex(lpszFileName, FALSE, FALSE);
?????????? CString strSize;
?????????? CFileFind filefind;
?
?????????? //? get file size
?????????? if (filefind.FindFile(lpszFileName))
?????????? {
??????????????? filefind.FindNextFile();
??????????????? strSize.Format("%d", filefind.GetLength());
?????????? }
?????????? else
??????????????? strSize = "0";
??
?????????? // split path and filename
?????????? CString strFileName = lpszFileName;
?????????? CString strPath;
?
?????????? int nPos = strFileName.ReverseFind('\\');
?????????? if (nPos != -1)
?????????? {
??????????????? strPath = strFileName.Left(nPos);
??????????????? strFileName = strFileName.Mid(nPos + 1);
?????????? }
??
?????????? // insert to list
?????????? int nItem = m_list.GetItemCount();
?????????? m_list.InsertItem(nItem, strFileName, nIcon);
?????????? m_list.SetItemText(nItem, 1, strSize);
?????????? m_list.SetItemText(nItem, 2, strFileName.Right(3));
?????????? m_list.SetItemText(nItem, 3, strPath);
????? }
?
????? int CTest6Dlg::GetIconIndex(LPCTSTR lpszPath, BOOL bIsDir, BOOL bSelected)
????? {
?????????? SHFILEINFO sfi;
?????????? memset(&sfi, 0, sizeof(sfi));
??
?????????? if (bIsDir)
?????????? {
??????????? SHGetFileInfo(lpszPath,?
???????????????????????? FILE_ATTRIBUTE_DIRECTORY,?
???????????????????????? &sfi,?
???????????????????????? sizeof(sfi),?
???????????????????????? SHGFI_SMALLICON | SHGFI_SYSICONINDEX |
???????????????????????? SHGFI_USEFILEATTRIBUTES |(bSelected ? SHGFI_OPENICON : 0));?
??????????? return? sfi.iIcon;
?????????? }
?????????? else
?????????? {
??????????? SHGetFileInfo (lpszPath,?
???????????????????????? FILE_ATTRIBUTE_NORMAL,?
???????????????????????? &sfi,?
???????????????????????? sizeof(sfi),?
???????????????????????? SHGFI_SMALLICON | SHGFI_SYSICONINDEX |?
???????????????????????? SHGFI_USEFILEATTRIBUTES | (bSelected ? SHGFI_OPENICON : 0));
??????????? return?? sfi.iIcon;
?????????? }
?????????? return? -1;
????? }
				
?

22. listctrl內(nèi)容進(jìn)行大數(shù)據(jù)量更新時(shí),避免閃爍

????? m_list.SetRedraw(FALSE);
????? //更新內(nèi)容
????? m_list.SetRedraw(TRUE);
????? m_list.Invalidate();
????? m_list.UpdateWindow();
?
或者參考
				
						http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_cwnd.3a3a.setredraw.asp
				
				
				
						
?

23. listctrl排序

Q250614:How To Sort Items in a CListCtrl in Report View
http://support.microsoft.com/kb/250614/en-us
				
						
?

24. 在listctrl中選中某個(gè)item時(shí)動(dòng)態(tài)改變其icon或bitmap

Q141834: How to change the icon or the bitmap of a CListCtrl item in Visual C++
http://support.microsoft.com/kb/141834/en-us


25. 在添加item后,再InsertColumn()后導(dǎo)致整列數(shù)據(jù)移動(dòng)的問題

Q151897: CListCtrl::InsertColumn() Causes Column Data to Shift 
http://support.microsoft.com/kb/151897/en-us
				
						
?

26. 關(guān)于listctrl第一列始終居左的問題

解決辦法:把第一列當(dāng)一個(gè)虛列,從第二列開始插入列及數(shù)據(jù),最后刪除第一列。
?????
具體解釋參閱?? http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/listview/structures/lvcolumn.asp
				
				?

27. 鎖定column header的拖動(dòng)

				
						http://msdn.microsoft.com/msdnmag/issues/03/06/CQA/
				
				
				
						
?

28. 如何隱藏clistctrl的列

??? 把需隱藏的列的寬度設(shè)為0,然后檢測(cè)當(dāng)該列為隱藏列時(shí),用上面第27點(diǎn)的鎖定column 的拖動(dòng)來實(shí)現(xiàn)

29. listctrl進(jìn)行大數(shù)據(jù)量操作時(shí),使用virtual list???

				
						http://www.codeguru.com/cpp/controls/listview/advanced/article.php/c4151/
				
				
http://www.codeproject.com/listctrl/virtuallist.asp
				
						
?

30. 關(guān)于item只能顯示259個(gè)字符的問題

解決辦法:需要在item上放一個(gè)edit。
				
?

31. 響應(yīng)在listctrl的column header上的鼠標(biāo)右鍵單擊

Q125694: How To Find Out Which Listview Column Was Right-Clicked
http://support.microsoft.com/kb/125694/en-us
				
						
?

32. 類似于windows資源管理器的listview

Q234310: How to implement a ListView control that is similar to Windows Explorer by using DirLV.exe
http://support.microsoft.com/kb/234310/en-us
				
				?

33. 在ListCtrl中OnTimer只響應(yīng)兩次的問題

Q200054:
PRB: OnTimer() Is Not Called Repeatedly for a List Control
http://support.microsoft.com/kb/200054/en-us

34. 以下為一些為實(shí)現(xiàn)各種自定義功能的listctrl派生類

????????? (1)??? 拖放??????? 
?????????????????? http://www.codeproject.com/listctrl/dragtest.asp
?????????????????? 在CListCtrl和CTreeCtrl間拖放
?????????????????? http://support.microsoft.com/kb/148738/en-us
?
????????? (2)??? 多功能listctrl
?????????????????? 支持subitem可編輯,圖標(biāo),radiobutton,checkbox,字符串改變顏色的類
?????????????????? http://www.codeproject.com/listctrl/quicklist.asp
?
?????????????????? 支持排序,subitem可編輯,subitem圖標(biāo),subitem改變顏色的類
?????????????????? http://www.codeproject.com/listctrl/ReportControl.asp
????????? (3)??? subitem中顯示超鏈接
?????????????????? http://www.codeproject.com/listctrl/CListCtrlLink.asp
????????? (4)??? subitem的tooltip提示
?????????????????? http://www.codeproject.com/listctrl/ctooltiplistctrl.asp
????????? (5)??? subitem中顯示進(jìn)度條??? 
?????????????????? http://www.codeproject.com/listctrl/ProgressListControl.asp
?????????????????? http://www.codeproject.com/listctrl/napster.asp
?????????????????? http://www.codeguru.com/Cpp/controls/listview/article.php/c4187/
????????? (6)??? 動(dòng)態(tài)改變subitem的顏色和背景色
??????????????????? http://www.codeproject.com/listctrl/highlightlistctrl.asp
??? ??? ??? ??? ??? http://www.codeguru.com/Cpp/controls/listbox/colorlistboxes/article.php/c4757/
?
????????? (7)??? 類vb屬性對(duì)話框
??????????????????? http://www.codeproject.com/listctrl/propertylistctrl.asp
??????????????????? http://www.codeguru.com/Cpp/controls/listview/propertylists/article.php/c995/
??????????????????? http://www.codeguru.com/Cpp/controls/listview/propertylists/article.php/c1041/
?
????????? (8)??? 選中subitem(只高亮選中的item)
??????????????????? http://www.codeproject.com/listctrl/SubItemSel.asp
??????????????????? http://www.codeproject.com/listctrl/ListSubItSel.asp
?
????????? (9)??? 改變行高
??????????????????? http://www.codeproject.com/listctrl/changerowheight.asp
?
????????? (10)?? 改變行顏色
??????????????????? http://www.codeproject.com/listctrl/coloredlistctrl.asp
?
????????? (11)?? 可編輯subitem的listctrl
??????????????????? http://www.codeproject.com/listctrl/nirs2000.asp
??????????????????? http://www.codeproject.com/listctrl/editing_subitems_in_listcontrol.asp
?
????????? (12)?? subitem可編輯,插入combobox,改變行顏色,subitem的tooltip提示
??????????????????? http://www.codeproject.com/listctrl/reusablelistcontrol.asp
?
????????? (13)?? header 中允許多行字符串
??????????????????? http://www.codeproject.com/listctrl/headerctrlex.asp
?
????????? (14)?? 插入combobox
??????????????????? http://www.codeguru.com/Cpp/controls/listview/editingitemsandsubitem/article.php/c979/
?
????????? (15)?? 添加背景圖片
??????????????????? http://www.codeguru.com/Cpp/controls/listview/backgroundcolorandimage/article.php/c4173/
??????????????????? http://www.codeguru.com/Cpp/controls/listview/backgroundcolorandimage/article.php/c983/
??????????????????? http://www.vchelp.net/vchelp/archive.asp?type_id=9&class_id=1&cata_id=1&article_id=1088&search_term=
???
????????? (16)? 自適應(yīng)寬度的listctrl
??????????????????? http://www.codeproject.com/useritems/AutosizeListCtrl.asp
??? ?? ?? (17)? 改變ListCtrl高亮?xí)r的顏色(默認(rèn)為藍(lán)色)
??? ?? ?? ?? ?? ?? 處理 NM_CUSTOMDRAW
??????????
http://www.codeproject.com/listctrl/lvcustomdraw.asp

				
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////






m_mm_host_ListCtrl.DeleteAllItems()


m_mm_host_ListCtrl.ModifyStyle(0,LVS_REPORT);
?////////////
?LONG lStyle = m_mm_host_ListCtrl.SendMessage(
????????LVM_GETEXTENDEDLISTVIEWSTYLE);
?lStyle |= LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES |
????LVS_EX_HEADERDRAGDROP;
?m_mm_host_ListCtrl.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0,
???(LPARAM)lStyle);






?////////////

?或者:
LONG lStyle;
?lStyle = GetWindowLong(m_mm_host_ListCtrl.m_hWnd, GWL_STYLE);//獲取當(dāng)前窗口style
?lStyle &= ~LVS_TYPEMASK; //清除顯示方式位
?lStyle |= LVS_REPORT; //設(shè)置style
?SetWindowLong(m_mm_host_ListCtrl.m_hWnd, GWL_STYLE, lStyle);//設(shè)置style
?
?DWORD dwStyle = m_mm_host_ListCtrl.GetExtendedStyle();
?dwStyle |= LVS_EX_FULLROWSELECT;//選中某行使整行高亮(只適用與report風(fēng)格的listctrl)
?dwStyle |= LVS_EX_GRIDLINES;//網(wǎng)格線(只適用與report風(fēng)格的listctrl)
?dwStyle |= LVS_EX_CHECKBOXES;//item前生成checkbox控件
?m_mm_host_ListCtrl.SetExtendedStyle(dwStyle); //設(shè)置擴(kuò)展風(fēng)格






?/////////////












m_mm_host_ListCtrl.InsertColumn(0,"日志序號(hào)",LVCFMT_CENTER,60,0);
?m_mm_host_ListCtrl.InsertColumn(1,"來源",LVCFMT_CENTER,80,1);
?m_mm_host_ListCtrl.InsertColumn(2,"日期",LVCFMT_CENTER,80,2);
?m_mm_host_ListCtrl.InsertColumn(3,"時(shí)間",LVCFMT_CENTER,80,3);
?m_mm_host_ListCtrl.InsertColumn(4,"分類",LVCFMT_CENTER,80,4);
?m_mm_host_ListCtrl.InsertColumn(5,"ID",LVCFMT_CENTER,50,5);
?m_mm_host_ListCtrl.InsertColumn(6,"用戶",LVCFMT_CENTER,120,6);
?m_mm_host_ListCtrl.InsertColumn(7,"計(jì)算機(jī)",LVCFMT_CENTER,120,7);


/////////////////////////////////////////////////////////////////////////
				
?

posted on 2006-08-30 13:31 啤酒 閱讀(1353) 評(píng)論(0)  編輯 收藏 引用


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


導(dǎo)航

統(tǒng)計(jì)

常用鏈接

留言簿(2)

隨筆檔案

收藏夾

搜索

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            一本色道久久99精品综合| 模特精品在线| 欧美一区二区三区精品| 亚洲人成网站777色婷婷| 亚洲天堂av综合网| 欧美性猛交99久久久久99按摩| 亚洲精品偷拍| 亚洲精品久久久久中文字幕欢迎你| 久久久午夜电影| 在线精品福利| 一区二区高清在线观看| 欧美激情综合色综合啪啪| 亚洲国产精品成人综合| 国产视频在线观看一区二区| 欧美.www| 暖暖成人免费视频| 亚洲精品一区二区在线| 亚洲午夜在线| 日韩视频一区二区在线观看| 欧美高清视频在线观看| 亚洲肉体裸体xxxx137| 国产日韩欧美夫妻视频在线观看| 久久亚洲精品一区二区| 欧美日韩视频不卡| 免费在线亚洲欧美| 国产精品香蕉在线观看| 欧美成人午夜免费视在线看片| 欧美日韩精品二区| 久久久美女艺术照精彩视频福利播放 | 精品av久久久久电影| 欧美国产国产综合| 精品成人在线观看| 在线午夜精品自拍| 一本色道**综合亚洲精品蜜桃冫 | av成人免费在线| 亚洲日本一区二区| 久久精品导航| 久久精品免费看| 国产精品视频一二| 在线视频亚洲欧美| 久久国产直播| 欧美激情精品久久久久久免费印度 | 欧美日韩在线一二三| 欧美二区乱c少妇| 亚洲激情电影在线| 欧美成年人在线观看| 亚洲视频免费| 欧美视频导航| 午夜一区不卡| 蜜桃av一区二区三区| 91久久久在线| 欧美视频中文字幕在线| 亚洲天堂黄色| 久久国产99| 亚洲精品免费一区二区三区| 欧美日韩亚洲视频一区| 亚洲欧美国产高清va在线播| 久久天天综合| 亚洲天堂免费在线观看视频| 国产女主播一区二区| 久久亚洲精品网站| 亚洲国产另类久久精品| 亚洲一二三四久久| 亚洲二区免费| 国产免费亚洲高清| 欧美国产亚洲另类动漫| 亚洲一区国产视频| 欧美韩国日本一区| 久久亚洲风情| 久久久久久久久综合| 亚洲欧美一级二级三级| 亚洲人在线视频| 一区免费观看视频| 国产视频久久久久久久| 欧美天天综合网| 欧美日本簧片| 欧美不卡三区| 久久精品理论片| 亚洲调教视频在线观看| 亚洲人成网站色ww在线| 原创国产精品91| 伊人男人综合视频网| 好吊妞这里只有精品| 国产日韩精品电影| 国产精品ⅴa在线观看h| 欧美四级伦理在线| 国产农村妇女毛片精品久久莱园子 | 久久久亚洲综合| 久久亚洲精品网站| 欧美成年人视频| 亚洲国产小视频| 亚洲精品乱码久久久久久日本蜜臀 | 欧美日韩国产精品一区二区亚洲 | 欧美国产日产韩国视频| 亚洲激情成人网| 久久黄色级2电影| 久久综合九九| 亚洲精品综合精品自拍| 这里只有精品视频在线| 午夜久久久久久| 美女视频一区免费观看| 欧美激情一二三区| 欧美有码在线观看视频| 亚洲一区二区精品在线观看| 欧美综合激情网| 亚洲国产一成人久久精品| 日韩亚洲视频在线| 欧美一级电影久久| 亚洲欧洲日韩在线| 久久国产99| 国产精品海角社区在线观看| 在线观看一区二区视频| 小辣椒精品导航| 一本色道久久88精品综合| 久久青青草原一区二区| 国产精品免费一区二区三区观看| 在线高清一区| 国产欧美日韩一区二区三区在线观看 | 欧美高清一区| 亚洲国产成人不卡| 校园激情久久| 国产伦精品一区二区三区视频孕妇 | 国产精品视频999| 亚洲免费高清视频| 欧美激情欧美激情在线五月| 久久精品五月婷婷| 激情文学一区| 一色屋精品视频在线看| 久久av红桃一区二区小说| 亚洲一区三区在线观看| 国产精品久久久久久av下载红粉 | 欧美一级视频| 亚洲欧美激情一区| 激情懂色av一区av二区av| 久久久999成人| 欧美视频精品在线| 性久久久久久久| 久久综合中文色婷婷| 亚洲毛片一区二区| 午夜精品视频在线| 亚洲国产精品一区二区久| 亚洲国产精品高清久久久| 欧美激情一区二区三区在线 | 亚洲欧美经典视频| 一本久久综合| 一区精品在线| 亚洲综合首页| 久久夜色精品一区| 欧美国产日产韩国视频| 性8sex亚洲区入口| 欧美激情在线狂野欧美精品| 欧美在线视屏| 亚洲在线中文字幕| 99在线热播精品免费| 久久高清免费观看| 欧美一二三视频| 欧美特黄一区| 99re6热在线精品视频播放速度| 国产亚洲欧美一区二区| 99爱精品视频| 欧美成人国产一区二区| 久久精品一区二区三区不卡牛牛| 欧美日韩精品综合| 欧美激情一区二区三区不卡| 国产亚洲欧美一区二区| 亚洲影音先锋| 亚洲欧美日本另类| 在线观看的日韩av| 久久久久国产精品一区| 久久婷婷久久| 99国产精品99久久久久久粉嫩| 欧美在线播放高清精品| 国产精品网红福利| 午夜精品福利在线| 久久精品国产第一区二区三区最新章节| 欧美精品激情在线| 亚洲自拍偷拍一区| 久久精品首页| 欧美成人国产一区二区| 欧美一区二区视频在线观看| 亚洲特级片在线| 香蕉成人久久| 国产综合网站| 嫩草影视亚洲| 夜夜嗨网站十八久久| 亚洲免费在线观看| 国产精品自在线| 久久天天狠狠| 国产精品一区二区欧美| 亚洲精品乱码久久久久久| 亚洲免费影院| 亚洲欧洲日本mm| 国产精品免费一区二区三区观看 | 先锋影音国产精品| 免费黄网站欧美| 亚洲欧美三级在线| 亚洲精品国产品国语在线app| 国产麻豆午夜三级精品| 欧美精品久久久久久久| 久久蜜臀精品av|