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

啤酒

一個空白者

 

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);
// 序號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();//所選表項數(shù) 
?int nItemCount=m_mm_host_ListCtrl.GetItemCount();//表項總數(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 風格

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

2. 設(shè)置listctrl 風格及擴展風格

????? LONG lStyle;
????? lStyle = GetWindowLong(m_list.m_hWnd, GWL_STYLE);//獲取當前窗口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風格的listctrl)
????? dwStyle |= LVS_EX_GRIDLINES;//網(wǎng)格線(只適用與report風格的listctrl)
????? dwStyle |= LVS_EX_CHECKBOXES;//item前生成checkbox控件
????? m_list.SetExtendedStyle(dwStyle); //設(shè)置擴展風格
?
????? 注:listview的style請查閱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點中設(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中所有選中行的序號

				
						
????? 方法一:
????? 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中一項可見,即滾動滾動條

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

11. 得到listctrl列數(shù)

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

12. 刪除所有列

??? ? 方法一:
???? ??? while ( m_list.DeleteColumn (0))
??? ?? 因為你刪除了第一列后,后面的列會依次向上移動。
??? ? 方法二:
????? int nColumns = 4;
????? for (int i=nColumns-1; i>=0; i--)
????? ??? m_list.DeleteColumn (i);
				
?

13. 得到單擊的listctrl的行列號

????? 添加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. 判斷是否點擊在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);
?????????? //判斷是否點在checkbox上
?????????? if(nFlag == LVHT_ONITEMSTATEICON)
?????????? {
??????????????? AfxMessageBox("點在listctrl的checkbox上");
?????????? }
?????????? *pResult = 0;
????? }
				
?

15. 右鍵點擊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切換焦點時(包括用鍵盤和鼠標切換item時),狀態(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. 得到另一個進程里的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添加圖標

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

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

????? 網(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)容進行大數(shù)據(jù)量更新時,避免閃爍

????? 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中選中某個item時動態(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()后導致整列數(shù)據(jù)移動的問題

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

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

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

27. 鎖定column header的拖動

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

28. 如何隱藏clistctrl的列

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

29. listctrl進行大數(shù)據(jù)量操作時,使用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個字符的問題

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

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

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. 以下為一些為實現(xiàn)各種自定義功能的listctrl派生類

????????? (1)??? 拖放??????? 
?????????????????? http://www.codeproject.com/listctrl/dragtest.asp
?????????????????? 在CListCtrl和CTreeCtrl間拖放
?????????????????? http://support.microsoft.com/kb/148738/en-us
?
????????? (2)??? 多功能listctrl
?????????????????? 支持subitem可編輯,圖標,radiobutton,checkbox,字符串改變顏色的類
?????????????????? http://www.codeproject.com/listctrl/quicklist.asp
?
?????????????????? 支持排序,subitem可編輯,subitem圖標,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中顯示進度條??? 
?????????????????? 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)??? 動態(tài)改變subitem的顏色和背景色
??????????????????? http://www.codeproject.com/listctrl/highlightlistctrl.asp
??? ??? ??? ??? ??? http://www.codeguru.com/Cpp/controls/listbox/colorlistboxes/article.php/c4757/
?
????????? (7)??? 類vb屬性對話框
??????????????????? 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高亮時的顏色(默認為藍色)
??? ?? ?? ?? ?? ?? 處理 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);//獲取當前窗口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風格的listctrl)
?dwStyle |= LVS_EX_GRIDLINES;//網(wǎng)格線(只適用與report風格的listctrl)
?dwStyle |= LVS_EX_CHECKBOXES;//item前生成checkbox控件
?m_mm_host_ListCtrl.SetExtendedStyle(dwStyle); //設(shè)置擴展風格






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












m_mm_host_ListCtrl.InsertColumn(0,"日志序號",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,"時間",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,"計算機",LVCFMT_CENTER,120,7);


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

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

導航

統(tǒng)計

常用鏈接

留言簿(2)

隨筆檔案

收藏夾

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲天堂av图片| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 欧美承认网站| 亚洲一区二区久久| 欧美日韩黄色大片| 亚洲综合精品四区| 国产视频精品网| 亚洲美女在线视频| 亚洲一区免费网站| 亚洲综合不卡| 亚洲一本视频| 久久久综合精品| 欧美www视频在线观看| 亚洲伊人观看| 另类激情亚洲| 性久久久久久久久| 欧美不卡一区| 久久精品国产v日韩v亚洲| 99国产一区| 亚洲激情国产| 另类综合日韩欧美亚洲| 欧美日韩国产综合新一区| 欧美在线网址| 亚洲女人天堂成人av在线| 久久精品首页| 久久美女艺术照精彩视频福利播放| 国产人成精品一区二区三| 麻豆精品视频| 欧美日韩免费在线观看| 欧美高清在线一区二区| 亚洲综合日韩在线| 亚洲日产国产精品| 久久午夜视频| 欧美一级日韩一级| 欧美不卡在线| 久久一区精品| 欧美在线播放一区| 久久综合九色综合久99| 欧美v亚洲v综合ⅴ国产v| 久久久久久电影| 欧美另类99xxxxx| 国产综合久久| 久久精品综合一区| 欧美极品欧美精品欧美视频| 亚洲欧洲另类国产综合| 亚洲一区二区免费视频| 亚洲黄色免费| 亚洲人体1000| 久久综合网络一区二区| 久久成人亚洲| 亚洲尤物视频在线| 日韩网站在线观看| 亚洲欧美日韩视频二区| 亚洲高清不卡一区| 日韩天天综合| 91久久国产综合久久| 亚洲高清资源| 亚洲黄一区二区三区| 亚洲一级片在线观看| 欧美一进一出视频| 久久激情网站| 9色精品在线| 亚洲天堂av在线免费观看| 国产婷婷一区二区| 亚洲自拍偷拍色片视频| 激情另类综合| 亚洲午夜精品一区二区三区他趣| 亚洲国产精品一区二区三区| 亚洲欧美日韩直播| 日韩午夜视频在线观看| 欧美中文在线观看| 揄拍成人国产精品视频| 一区二区高清在线| 国产亚洲高清视频| 亚洲免费观看在线视频| 欧美午夜精品理论片a级按摩| 欧美一区二区在线| 久久性色av| 一本色道久久综合狠狠躁的推荐| 亚洲欧美日韩国产综合| 亚洲国产一区二区视频| 午夜免费久久久久| 99re热这里只有精品免费视频| 久久精品人人做人人爽| 午夜精品视频在线| 欧美成人中文字幕| 久久永久免费| 欧美无砖砖区免费| 伊人狠狠色j香婷婷综合| 欧美aⅴ99久久黑人专区| 欧美精品v国产精品v日韩精品| 国产欧美日韩另类一区| 永久免费视频成人| 国产日韩欧美亚洲一区| 欧美大片免费| 日韩亚洲精品在线| 亚洲一区欧美| 亚洲欧美日韩区| 国产精品麻豆成人av电影艾秋| 日韩网站在线| 在线一区欧美| 欧美日本韩国一区二区三区| 亚洲国产日韩欧美| 亚洲精品久久久久久下一站| 免费欧美高清视频| 欧美国产精品人人做人人爱| 亚洲国产精品一区二区尤物区| 欧美**人妖| 日韩视频在线免费观看| 亚洲午夜伦理| 国产精品久久久久久久浪潮网站| 亚洲一区二区三区在线看| 欧美一级午夜免费电影| 国产一区二区三区日韩| 久久综合九色综合欧美就去吻| 欧美国产日本| 日韩午夜电影| 国产精品视频| 久久精品系列| 亚洲国产激情| 亚洲欧美综合精品久久成人| 国产午夜精品一区二区三区视频| 午夜精品一区二区三区四区| 一本色道久久88综合亚洲精品ⅰ| 午夜欧美大片免费观看| 欧美二区视频| 欧美另类专区| 韩国在线视频一区| 亚洲精选在线观看| 好吊一区二区三区| 欧美激情精品久久久久久免费印度 | 久久精品噜噜噜成人av农村| 久久亚洲国产成人| 亚洲国产成人av好男人在线观看| 欧美成人午夜剧场免费观看| 在线中文字幕一区| 乱码第一页成人| 一区二区动漫| 狠狠干综合网| 欧美高清视频在线| 亚洲欧美日韩精品久久久| 在线观看日韩国产| 久热爱精品视频线路一| 亚洲主播在线观看| 国产精品永久免费视频| 一区二区欧美视频| 亚洲激情精品| 久久最新视频| 91久久精品国产91久久性色tv| 美女脱光内衣内裤视频久久影院| 一本到高清视频免费精品| 欧美在线精品一区| 国产精品一区二区三区久久久| 欧美一级网站| 亚洲国产精品视频| 国产一区99| 欧美性做爰猛烈叫床潮| 欧美成人小视频| 久久久精品日韩欧美| 亚洲一区视频在线| 99re6这里只有精品| 亚洲第一页中文字幕| 国产精品一区一区三区| 久久国产一区二区| 欧美成人高清| 久久精品国产91精品亚洲| 久久久亚洲综合| 老司机精品视频网站| 欧美在线视频不卡| 亚洲国产精品va| 在线视频欧美精品| 亚洲福利国产| 欧美久久一区| 免费精品99久久国产综合精品| 亚洲综合国产| 国产伦精品一区二区三区| 欧美日韩一区国产| 欧美伦理a级免费电影| 免费成人你懂的| 麻豆国产精品一区二区三区| 欧美一区二区在线看| 性18欧美另类| 午夜久久tv| 久久久久久一区二区| 麻豆91精品| 欧美精品一区在线观看| 欧美日本精品| 国产精品色网| 国产在线一区二区三区四区 | 亚洲女性裸体视频| 亚洲欧美精品一区| 久久成人18免费观看| 美国十次成人| 欧美日本在线视频| 国产精品福利在线| 国产无一区二区| 亚洲国产91色在线| 玖玖精品视频| 伊大人香蕉综合8在线视| 午夜精品久久久久久99热软件|