锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
2 CComModule _Module;
3 #include <atlwin.h>
4 #include <windows.h>
5 #pragma comment(lib,"atl")
6 #pragma comment(lib,"User32.lib")
7
8
9 LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
10 {
11 RECT rc;
12 IWebBrowser2* iWebBrowser;
13 VARIANT varMyURL;
14 static CAxWindow WinContainer;
15 LPOLESTR pszName=OLESTR("shell.Explorer.2");
16 GetClientRect(hWnd, &rc);
17 switch(message)
18 {
19 case WM_CREATE:
20 WinContainer.Create(hWnd, rc, 0,WS_CHILD |WS_VISIBLE);
21 WinContainer.CreateControl(pszName);
22 WinContainer.QueryControl(__uuidof(IWebBrowser2),(void**)&iWebBrowser);
23 VariantInit(&varMyURL);
24 varMyURL.vt = VT_BSTR;
25 varMyURL.bstrVal = SysAllocString(_T("http://www.baidu.com"));
26 iWebBrowser-> Navigate2(&varMyURL,0,0,0,0);
27 VariantClear(&varMyURL);
28 iWebBrowser-> Release();
29 break;
30 case WM_DESTROY:
31 PostQuitMessage(0);
32 break;
33 default:
34 return (int)DefWindowProc(hWnd,message,wParam,lParam);
35 }
36 return 0;
37 }
38
39
40 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
41 {
42 static TCHAR szAppName[]=TEXT("WebBrowser");
43 static TCHAR szClassName[]=TEXT("WebBrowser");
44 HWND hWnd;
45 MSG msg;
46 WNDCLASS wndclass;
47 wndclass.style=CS_HREDRAW | CS_VREDRAW;
48 wndclass.lpfnWndProc=WndProc;
49 wndclass.cbClsExtra=0;
50 wndclass.cbWndExtra=0;
51 wndclass.hInstance=hInstance;
52 wndclass.hIcon=LoadIcon(hInstance, IDI_APPLICATION);
53 wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
54 wndclass.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
55 wndclass.lpszMenuName=NULL;
56 wndclass.lpszClassName=szClassName;
57
58
59 if(!RegisterClass(&wndclass))
60 {
61 MessageBox(NULL,TEXT("Error!"),szAppName,MB_ICONERROR);
62 return 0;
63 }
64
65
66 hWnd=CreateWindow(szClassName,szAppName,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,
67 0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);
68 ShowWindow(hWnd,nShowCmd);
69 UpdateWindow(hWnd);
70
71 while(GetMessage(&msg, NULL, 0, 0))
72 {
73 TranslateMessage(&msg);
74 DispatchMessage(&msg);
75 }
76 return msg.wParam;
77 }
]]>
1. CListCtrl 椋庢牸
LVS_ICON: 涓烘瘡涓猧tem鏄劇ず澶у浘鏍?br> LVS_SMALLICON: 涓烘瘡涓猧tem鏄劇ず灝忓浘鏍?br> LVS_LIST: 鏄劇ず涓鍒楀甫鏈夊皬鍥炬爣鐨刬tem
LVS_REPORT: 鏄劇ずitem璇︾粏璧勬枡
鐩磋鐨勭悊瑙o細(xì)windows璧勬簮綆$悊鍣紝“鏌ョ湅”鏍囩涓嬬殑“澶у浘鏍囷紝灝忓浘鏍囷紝鍒楄〃錛岃緇嗚祫鏂?#8221;
--------------------------------------------------------------------------------
2. 璁劇疆listctrl 椋庢牸鍙?qiáng)鎵╁睍椋庢?br> LONG lStyle;
lStyle = GetWindowLong(m_list.m_hWnd, GWL_STYLE);//鑾峰彇褰撳墠紿楀彛style
lStyle &= ~LVS_TYPEMASK; //娓呴櫎鏄劇ず鏂瑰紡浣?br> lStyle |= LVS_REPORT; //璁劇疆style
SetWindowLong(m_list.m_hWnd, GWL_STYLE, lStyle);//璁劇疆style
DWORD dwStyle = m_list.GetExtendedStyle();
dwStyle |= LVS_EX_FULLROWSELECT;//閫変腑鏌愯浣挎暣琛岄珮?shù)寒锛堝彧閫傜敤涓巖eport椋庢牸鐨刲istctrl錛?br> dwStyle |= LVS_EX_GRIDLINES;//緗戞牸綰匡紙鍙傜敤涓巖eport椋庢牸鐨刲istctrl錛?br> dwStyle |= LVS_EX_CHECKBOXES;//item鍓嶇敓鎴恈heckbox鎺т歡
m_list.SetExtendedStyle(dwStyle); //璁劇疆鎵╁睍椋庢牸
娉細(xì)listview鐨剆tyle璇鋒煡闃卪sdn
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wceshellui5/html/wce50lrflistviewstyles.asp
--------------------------------------------------------------------------------
3. 鎻掑叆鏁版嵁
m_list.InsertColumn( 0, "ID", LVCFMT_LEFT, 40 );//鎻掑叆鍒?br> m_list.InsertColumn( 1, "NAME", LVCFMT_LEFT, 50 );
int nRow = m_list.InsertItem(0, “11”);//鎻掑叆琛?br> m_list.SetItemText(nRow, 1, “jacky”);//璁劇疆鏁版嵁
--------------------------------------------------------------------------------
4. 涓鐩撮変腑item
閫変腑style涓殑Show selection always錛屾垨鑰呭湪涓婇潰絎?鐐逛腑璁劇疆LVS_SHOWSELALWAYS
--------------------------------------------------------------------------------
5. 閫変腑鍜屽彇娑堥変腑涓琛?br> 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. 寰楀埌l(fā)istctrl涓墍鏈夎鐨刢heckbox鐨勭姸鎬?br> m_list.SetExtendedStyle(LVS_EX_CHECKBOXES);
CString str;
for(int i=0; i<m_list.GetItemCount(); i++)
{
if( m_list.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED || m_list.GetCheck(i))
{
str.Format(_T("絎?d琛岀殑checkbox涓洪変腑鐘舵?), i);
AfxMessageBox(str);
}
}
--------------------------------------------------------------------------------
7. 寰楀埌l(fā)istctrl涓墍鏈夐変腑琛岀殑搴忓彿
鏂規(guī)硶涓錛?br> CString str;
for(int i=0; i<m_list.GetItemCount(); i++)
{
if( m_list.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED )
{
str.Format(_T("閫変腑浜?jiǎn)绗?d琛?), i);
AfxMessageBox(str);
}
}
鏂規(guī)硶浜岋細(xì)
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鐨勪俊鎭?br> 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);
鍏充簬寰楀埌璁劇疆item鐨勭姸鎬侊紝榪樺彲浠ュ弬鑰僲sdn鏂囩珷
Q173242: Use Masks to Set/Get Item States in CListCtrl
http://support.microsoft.com/kb/173242/en-us
--------------------------------------------------------------------------------
9. 寰楀埌l(fā)istctrl鐨勬墍鏈夊垪鐨刪eader瀛楃涓插唴瀹?br> LVCOLUMN lvcol;
char str[256];
int nColNum;
CString strColumnName[4];//鍋囧鏈?鍒?/p>
nColNum = 0;
lvcol.mask = LVCF_TEXT;
lvcol.pszText = str;
lvcol.cchTextMax = 256;
while(m_list.GetColumn(nColNum, &lvcol))
{
strColumnName[nColNum] = lvcol.pszText;
nColNum++;
}
--------------------------------------------------------------------------------
10. 浣縧istctrl涓竴欏瑰彲瑙侊紝鍗蟲(chóng)粴鍔ㄦ粴鍔ㄦ潯
m_list.EnsureVisible(i, FALSE);
--------------------------------------------------------------------------------
11. 寰楀埌l(fā)istctrl鍒楁暟
int nHeadNum = m_list.GetHeaderCtrl()->GetItemCount();
--------------------------------------------------------------------------------
12. 鍒犻櫎鎵鏈夊垪
鏂規(guī)硶涓錛?br> while ( m_list.DeleteColumn (0))
鍥犱負(fù)浣犲垹闄や簡(jiǎn)絎竴鍒楀悗錛屽悗闈㈢殑鍒椾細(xì)渚濇鍚戜笂縐誨姩銆?/p>
鏂規(guī)硶浜岋細(xì)
int nColumns = 4;
for (int i=nColumns-1; i>=0; i--)
m_list.DeleteColumn (i);
--------------------------------------------------------------------------------
13. 寰楀埌鍗曞嚮鐨刲istctrl鐨勮鍒楀彿
娣誨姞listctrl鎺т歡鐨凬M_CLICK娑堟伅鐩稿簲鍑芥暟
void CTest6Dlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
// 鏂規(guī)硶涓錛?br> /*
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);
}
*/
// 鏂規(guī)硶浜?
/*
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. 鍒ゆ柇鏄惁鐐瑰嚮鍦╨istctrl鐨刢heckbox涓?br> 娣誨姞listctrl鎺т歡鐨凬M_CLICK娑堟伅鐩稿簲鍑芥暟
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涓?br> if(nFlag == LVHT_ONITEMSTATEICON)
{
AfxMessageBox("鐐瑰湪listctrl鐨刢heckbox涓?);
}
*pResult = 0;
}
--------------------------------------------------------------------------------
15. 鍙抽敭鐐瑰嚮listctrl鐨刬tem寮瑰嚭鑿滃崟
娣誨姞listctrl鎺т歡鐨凬M_RCLICK娑堟伅鐩稿簲鍑芥暟
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鏃?錛岀姸鎬佺殑涓浜涘彉鍖栭『搴?br> 娣誨姞listctrl鎺т歡鐨凩VN_ITEMCHANGED娑堟伅鐩稿簲鍑芥暟
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. 寰楀埌鍙︿竴涓繘紼嬮噷鐨刲istctrl鎺т歡鐨刬tem鍐呭
http://www.codeproject.com/threads/int64_memsteal.asp
--------------------------------------------------------------------------------
18. 閫変腑listview涓殑item
Q131284: How To Select a Listview Item Programmatically
http://support.microsoft.com/kb/131284/en-us
--------------------------------------------------------------------------------
19. 濡備綍鍦–ListView涓嬌鐢–ListCtrl鐨勬淳鐢熺被
http://www.codeguru.com/cpp/controls/listview/introduction/article.php/c919/
--------------------------------------------------------------------------------
20. listctrl鐨剆ubitem娣誨姞鍥炬爣
m_list.SetExtendedStyle(LVS_EX_SUBITEMIMAGES);
m_list.SetItem(..); //鍏蜂綋鍙傛暟璇峰弬鑰僲sdn
--------------------------------------------------------------------------------
21. 鍦–ListCtrl鏄劇ず鏂囦歡錛屽茍鏍規(guī)嵁鏂囦歡綾誨瀷鏉ユ樉紺哄浘鏍?br> 緗戜笂鎵懼埌鐨勪唬鐮侊紝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鍐呭榪涜澶ф暟鎹噺鏇存柊鏃訛紝閬垮厤闂儊
m_list.SetRedraw(FALSE);
//鏇存柊鍐呭
m_list.SetRedraw(TRUE);
m_list.Invalidate();
m_list.UpdateWindow();
鎴栬呭弬鑰?/p>
--------------------------------------------------------------------------------
23. listctrl鎺掑簭
Q250614錛欻ow To Sort Items in a CListCtrl in Report View
http://support.microsoft.com/kb/250614/en-us
--------------------------------------------------------------------------------
24. 鍦╨istctrl涓変腑鏌愪釜item鏃跺姩鎬佹敼鍙樺叾icon鎴朾itmap
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. 鍦ㄦ坊鍔爄tem鍚庯紝鍐岻nsertColumn()鍚庡鑷存暣鍒楁暟鎹Щ鍔ㄧ殑闂
Q151897: CListCtrl::InsertColumn() Causes Column Data to Shift
http://support.microsoft.com/kb/151897/en-us
--------------------------------------------------------------------------------
26. 鍏充簬listctrl絎竴鍒楀緇堝眳宸︾殑闂
瑙e喅鍔炴硶錛氭妸絎竴鍒楀綋涓涓櫄鍒楋紝浠庣浜屽垪寮濮嬫彃鍏ュ垪鍙?qiáng)鏁版嵁锛屾渶鍚庡垹闄ょ涓鍒椼?br>
鍏蜂綋瑙i噴鍙傞槄
--------------------------------------------------------------------------------
27. 閿佸畾column header鐨勬嫋鍔?br>http://msdn.microsoft.com/msdnmag/issues/03/06/CQA/
--------------------------------------------------------------------------------
28. 濡備綍闅愯棌clistctrl鐨勫垪
鎶婇渶闅愯棌鐨勫垪鐨勫搴﹁涓?,鐒跺悗媯(gè)嫻嬪綋璇ュ垪涓洪殣钘忓垪鏃訛紝鐢ㄤ笂闈㈢27鐐圭殑閿佸畾column 鐨勬嫋鍔ㄦ潵瀹炵幇
--------------------------------------------------------------------------------
29. listctrl榪涜澶ф暟鎹噺鎿嶄綔鏃訛紝浣跨敤virtual list
http://www.codeguru.com/cpp/controls/listview/advanced/article.php/c4151/
http://www.codeproject.com/listctrl/virtuallist.asp
--------------------------------------------------------------------------------
30. 鍏充簬item鍙兘鏄劇ず259涓瓧絎︾殑闂
瑙e喅鍔炴硶錛氶渶瑕佸湪item涓婃斁涓涓猠dit銆?/p>
--------------------------------------------------------------------------------
31. 鍝嶅簲鍦╨istctrl鐨刢olumn header涓婄殑榧犳爣鍙抽敭鍗曞嚮
Q125694: How To Find Out Which Listview Column Was Right-Clicked
http://support.microsoft.com/kb/125694/en-us
--------------------------------------------------------------------------------
32. 綾諱技浜巜indows璧勬簮綆$悊鍣ㄧ殑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. 鍦↙istCtrl涓璒nTimer鍙搷搴斾袱嬈$殑闂
Q200054錛?br>PRB: OnTimer() Is Not Called Repeatedly for a List Control
http://support.microsoft.com/kb/200054/en-us
--------------------------------------------------------------------------------
34. 浠ヤ笅涓轟竴浜涗負(fù)瀹炵幇鍚勭鑷畾涔夊姛鑳界殑listctrl媧劇敓綾?br> (1) 鎷栨斁
http://www.codeproject.com/listctrl/dragtest.asp
鍦–ListCtrl鍜孋TreeCtrl闂存嫋鏀?br>http://support.microsoft.com/kb/148738/en-us
(2) 澶氬姛鑳絣istctrl
鏀寔subitem鍙紪杈戯紝鍥炬爣錛宺adiobutton錛宑heckbox錛屽瓧絎︿覆鏀瑰彉棰滆壊鐨勭被
http://www.codeproject.com/listctrl/quicklist.asp
鏀寔鎺掑簭錛宻ubitem鍙紪杈戯紝subitem鍥炬爣錛宻ubitem鏀瑰彉棰滆壊鐨勭被
http://www.codeproject.com/listctrl/ReportControl.asp
(3) subitem涓樉紺鴻秴閾炬帴
http://www.codeproject.com/listctrl/CListCtrlLink.asp
(4) subitem鐨則ooltip鎻愮ず
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) 鍔ㄦ佹敼鍙榮ubitem鐨勯鑹插拰鑳屾櫙鑹?br> http://www.codeproject.com/listctrl/highlightlistctrl.asp
http://www.codeguru.com/Cpp/controls/listbox/colorlistboxes/article.php/c4757/
(7) 綾籿b灞炴у璇濇
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(鍙珮?shù)寒閫変腑鐨刬tem)
http://www.codeproject.com/listctrl/SubItemSel.asp
http://www.codeproject.com/listctrl/ListSubItSel.asp
(9) 鏀瑰彉琛岄珮
http://www.codeproject.com/listctrl/changerowheight.asp
(10) 鏀瑰彉琛岄鑹?br> http://www.codeproject.com/listctrl/coloredlistctrl.asp
(11) 鍙紪杈憇ubitem鐨刲istctrl
http://www.codeproject.com/listctrl/nirs2000.asp
http://www.codeproject.com/listctrl/editing_subitems_in_listcontrol.asp
(12) subitem鍙紪杈戯紝鎻掑叆combobox錛屾敼鍙樿棰滆壊錛宻ubitem鐨則ooltip鎻愮ず
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) 鑷傚簲瀹藉害鐨刲istctrl
http://www.codeproject.com/useritems/AutosizeListCtrl.asp
(17) 鏀瑰彉ListCtrl楂樹(shù)寒鏃剁殑棰滆壊(榛樿涓鴻摑鑹?
澶勭悊 NM_CUSTOMDRAW
http://www.codeproject.com/listctrl/lvcustomdraw.asp
杞澆鍦板潃錛?a >http://www.cnblogs.com/cy163/archive/2006/
鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/wuyijc/archive/2009/02/26/3938871.aspx