日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > 充電吧
[導(dǎo)讀]1.添加表頭:  定義一個CListCtrl控件的關(guān)聯(lián)變量ListControl,在OnInitDialog()函數(shù)里面加上如下代碼?1?????////初始化界面 ?2?????ListContro

1.添加表頭:

  定義一個CListCtrl控件的關(guān)聯(lián)變量ListControl,在OnInitDialog()函數(shù)里面加上如下代碼

?1?????////初始化界面
?2?????ListControl.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
?3?????LONG?lStyle;
?4?????lStyle?=?GetWindowLong(ListControl.m_hWnd,?GWL_STYLE);//獲取當(dāng)前窗口style
?5?????lStyle?&=?~LVS_TYPEMASK;?//清除顯示方式位
?6?????lStyle?|=?LVS_REPORT;?//設(shè)置style
?7?????SetWindowLong(ListControl.m_hWnd,?GWL_STYLE,?lStyle);//設(shè)置style
?8?
?9?????//添加列
10?????ListControl.InsertColumn(?0,?_T("映像名稱"),LVCFMT_CENTER,?150);//插入列
11?????ListControl.InsertColumn(1,_T("PID"),LVCFMT_CENTER,50);????????
12?????ListControl.InsertColumn(2,_T("優(yōu)先級"),LVCFMT_CENTER,100);????
13?????ListControl.InsertColumn(3,_T("線程數(shù)"),LVCFMT_CENTER,?50);

?

2.插入信息:

1?????????void?InsertData()
2?????????{
3?????????????int?nCount?=?ListControl.GetItemCount();//獲取當(dāng)前已插入的行數(shù)
4?????????????ListControl.InsertItem(nCount,?_T(""));//插入一行
5?????????????ListControl.SetItemText(nCount,?0,?iterBegin->second.strExeFile);//第一列
6?????????????ListControl.SetItemText(nCount,?1,?iterBegin->second.strPID);//第二列
7?????????????ListControl.SetItemText(nCount,?2,?iterBegin->second.strPriority);//第三列
8?????????????ListControl.SetItemText(nCount,?3,?iterBegin->second.strThreadCount);//第四列
9?????????}

3.獲取當(dāng)前選中的項:

方法1:

????POSITION?p?=?ListControl.GetFirstSelectedItemPosition();//獲取當(dāng)前選中的行的第一行的位置
????//獲取選中的第一行的行索引
????int?nIndex?=?ListControl.GetNextSelectedItem(p);//可能多選,GetNextSelectedItem使p移動一個位置

????//得到第index行.第2列的內(nèi)容(下標(biāo)從0開始)
????CString?strColumn?=?ListControl.GetItemText(nIndex,1);

方法2:

1?????int?nIndex=ListControl.GetSelectionMark();//獲取選中的行
2?????CString?strPID?=ListControl.GetItemText(nIndex,?1);?//選中的行、列的值

?

?

4.獲取選中的行和列

1?void?CMFC_TestDlg::OnNMClickList2(NMHDR?*pNMHDR,?LRESULT?*pResult)
2?{
3?????LPNMLISTVIEW?pNMLV?=?reinterpret_cast(pNMHDR);
4?????m_nSelectColumn?=?pNMLV->iSubItem;//獲取選中的行
5?????m_nSelectLine?=?ListControl.GetSelectionMark();//獲取選中的列
6?}

?

5.右鍵添加菜單

  添加NM_RCLICK消息,消息響應(yīng)代碼如下:

?1?void?CMFC_TestDlg::OnNMRClickList2(NMHDR?*pNMHDR,?LRESULT?*pResult)
?2?{
?3?????CMenu?menu?,*?pSubMenu;?//定義下面要用到的cmenu對象?
?4?????menu.LoadMenu(IDR_POPMENU);?//裝載自定義的右鍵菜單?IDR_POPMENU彈出菜單的ID

?5?
?6?????//獲取第一個彈出菜單,所以第一個菜單必須有子菜單?
?7?????pSubMenu?=?menu.GetSubMenu(0);?

?8?
?9?????CPoint?oPoint;?//定義一個用于確定光標(biāo)位置的位置?
10?????GetCursorPos(?&oPoint);?//獲取當(dāng)前光標(biāo)的位置,以便使得菜單可以跟隨光標(biāo)11?
12?????pSubMenu->TrackPopupMenu?(TPM_LEFTALIGN,?oPoint.x,?oPoint.y,?this);?//顯示菜單,第四個為傳遞的參數(shù)
13?????*pResult?=?0;
    //pSubMenu->EnableMenuItem(ID_EDIT_PASTE,?MF_DISABLED?|?MF_GRAYED)禁用菜單的某項
14?}

?

6.列排序

  

?1?BOOL?g_bSort;//全局變量,用于標(biāo)識是按從大到小還是從小到大排序
?2?
?3?typedef?struct
?4?{
?5?????CListCtrl?*plist;//存儲當(dāng)前的ListCtrl指針
?6?????int?col;//存儲當(dāng)前選中的列
?7?}?SortList;
?8?
?9?
10?//添加LVNCOLUMNCLICK消息
11?void?CMFC_TestDlg::OnLvnColumnclickList2(NMHDR?*pNMHDR,?LRESULT?*pResult)
12?{
13?????LPNMLISTVIEW?pNMLV?=?reinterpret_cast

?

排序函數(shù):

?該函數(shù)返回-1,代表第一項排應(yīng)在第二項前面;
?返回1代表第一項排應(yīng)在第二項后面;
?返回0代表兩項相等。

int?CALLBACK?MylistCompare(LPARAM?lParam1,?LPARAM?lParam2,?LPARAM?lParamSort)?

{
????SortList?*?listData?=?(SortList*)lParamSort;//獲取傳入的參數(shù)
????CListCtrl*???pListCtrl??=??listData->plist;?

????CString??strItem1;
????CString??strItem2;
????strItem1???=???pListCtrl->GetItemText(lParam1,?listData->col);??
????strItem2???=???pListCtrl->GetItemText(lParam2,?listData->col);?

????USES_CONVERSION;
????char?*???s1=T2A(strItem1);??//轉(zhuǎn)換為CString為char?*
????char?*???s2=T2A(strItem2);?

????int?nResult?=?0;
????switch(listData->col)//根據(jù)選擇的列的數(shù)據(jù)類型進行自定義排序
????{
//整形的排序
????case?1:
????case?3:
????????{
????????????int???n1?=?atoi(s1);??
????????????int???n2?=?atoi(s2);??

????????????if???(?n1?>=?n2)??
????????????{
????????????????nResult?=?1;??
????????????}

????????????else????
????????????????nResult?=?-1;??
????????}
????????break;

//字符串的排序
????case?0:
????case?2:
????????{
????????????for?(int?i?=?0;?i=?0)
????????????{
????????????????nResult?=?1;
????????????}
????????????else
????????????????nResult?=?-1;

????????}
????????break;
????}

//根據(jù)全局變量的值改變排序方法
????if?(g_bSort)
????{
????????return?nResult;
????}
????else
????{
????????return?-nResult;
????}
}

?

7.全選(CTRL+A)

?1?BOOL?CMFC_TestDlg::PreTranslateMessage(MSG*?pMsg)
?2?{
?3?????if?(pMsg->message?==?WM_KEYDOWN)
?4?????{
?5?????????if(pMsg->wParam?==?'A')
?6?????????{
?7?????????????if?(::GetKeyState(VK_CONTROL)<0)
?8?????????????{
?9?????????????????for?(int?i?=?0;?i<ListControl.GetItemCount();?i++)
10?????????????????{
11?????????????????????ListControl.SetItemState(i,LVIS_SELECTED|LVIS_FOCUSED,?LVIS_SELECTED|LVIS_FOCUSED);
12?????????????????}
13?????????????}
14?????????}
15?????}
16?????return?FALSE;
17?}

?

8.修改列的新名稱

1?????LVCOLUMN?Column;
2?????ListControl.GetColumn(0,&Column);
3?????Column.pszText=L"0列新名稱";
4?????ListControl.SetColumn(0,&Column);

?

9.可編輯狀態(tài)

(1)設(shè)置EDIT Labels的屬性為TRUE

(2)添加事件NM_DBCLICK事件

?1?????*pResult?=?0;
?2?
?3?????//雙擊事件產(chǎn)生edit控件,EditLabel會先確定list是否setFocus
?4?????POSITION?pos?=?ListControl.GetFirstSelectedItemPosition();
?5?????int?tIndex?=?ListControl.GetNextSelectedItem(pos);
?6?
?7?????if?(?tIndex?>=?0?)
?8?????{
?9?????????ListControl.SetFocus();
10?????????CEdit*?pEdit?=ListControl.EditLabel(?tIndex?);
11?????}

?

(3)添加事件LVN_ENDLABELEDIT事件

?1?????NMLVDISPINFO?*pDispInfo?=?reinterpret_cast(pNMHDR);
?2?????//?TODO:?在此添加控件通知處理程序代碼
?3?????*pResult?=?0;
?4?
?5?????CString?pName?=?pDispInfo->item.pszText;
?6?????int?tIndex?=?pDispInfo->item.iItem;
?7?????ListControl.SetFocus();
?8?
?9?????if(?(?!?pName.IsEmpty()?)?&&?tIndex?>=?0?)
10?????{
11?????????ListControl.SetItemText(?tIndex,?0,?pName);
12?????}

?

10.添加圖標(biāo):

(1)聲明:

1?????//首先聲明一個類的變量????
2?????CImageList?m_imageList;
3?????//設(shè)置ListCtrl的圖像列表
4?????m_imageList.Create(32,32,?TRUE|ILC_COLOR32,?8,?8);
5?????m_listCtrl.SetImageList(&m_imageList,?LVSIL_SMALL);

(2)獲取圖標(biāo):

1?SHFILEINFO???sfi?=?{0};
2?????SHGetFileInfo("d:\a.txt",0,&sfi,sizeof(SHFILEINFO),SHGFI_ICON);
3?????m_imageList.Add(sfi.hIcon);

?

(3)添加項:

1?????LVITEM?lvItem;
2?????lvItem.iItem?=?m_listCtrl.GetItemCount();
3?????lvItem.iSubItem?=?0;
4?????lvItem.iImage?=m_imageList.GetImageCount()-1;//取最后一個
5?????lvItem.mask?=?LVIF_TEXT|LVIF_IMAGE;
6?????lvItem.pszText?=?_T("TEST");????
7?????m_listCtrl.InsertItem(&lvItem);

?

11.樣式設(shè)置:

(1).

  首先區(qū)分LVS_與LVS_EX_,哪些是常規(guī)樣式,哪些是擴展樣式:能在屬性對話框里看到的樣式都是常規(guī)樣式,例如LVS_REPORT。

擴展樣式:

LVS_EX_CHECKBOXES 您可以獲得 ListView_GetCheckState 指定項目的復(fù)選框的狀態(tài)。若要設(shè)置檢查狀態(tài),請使用 ListView_SetCheckState。如果設(shè)置了此樣式,則當(dāng)用戶單擊該復(fù)選框,或按空格鍵在列表視圖控件自動切換復(fù)選狀態(tài)。 LVS_EX_FLATSB 扁平滾動條
列表視圖中的啟用平面滾動條。如果您需要更多的控制列表視圖滾動條的外觀,您應(yīng)該操作平的滾動欄 Api 使用直接的列表視圖滾動條。如果更改系統(tǒng)度量,您負(fù)責(zé)調(diào)整與 FlatSB_SetScrollProp 的滾動欄度量。有關(guān)進一步的詳細(xì)信息請參閱平滾動條。 LVS_EX_FULLROWSELECT 選擇整行
當(dāng)選擇某個項目時,強調(diào)了項目和其所有子項。此樣式是僅在 LVS_REPORT 風(fēng)格結(jié)合中可用。 LVS_EX_GRIDLINES 繪制表格
顯示項及其子項周圍的網(wǎng)格線。此樣式是僅在 LVS_REPORT 風(fēng)格結(jié)合中可用 LVS_EX_HEADERDRAGDROP 報表頭可以拖拽
允許拖放的列表視圖控件中的列重新排序。此樣式是只可用于使用 LVS_REPORT 樣式的列表視圖控件。 LVS_EX_INFOTIP 將提示信息窗口的消息通知父窗口
當(dāng)列表視圖控件使用的 LVS_EX_INFOTIP 樣式時,LVN_GETINFOTIP 通知代碼發(fā)送到父窗口顯示工具提示項之前。 LVS_EX_LABELTIP ? LVS_EX_MULTIWORKAREAS 多工作區(qū) LVS_EX_ONECLICKACTIVATE 單擊激活 LVS_EX_REGIONAL ? LVS_EX_SUBITEMIMAGES 子項目圖標(biāo)列表 LVS_EX_TRACKSELECT 自動換行 LVS_EX_TWOCLICKACTIVATE 雙擊激活 LVS_EX_UNDERLINECOLD ? LVS_EX_UNDERLINEHOT

?

(2).

?? 下面弄清楚怎么設(shè)置常規(guī)樣式和擴展樣式。

?? 設(shè)置常規(guī)樣式使用的函數(shù):GetWindowLong(僅32位下)、SetWindowLong()

?? 設(shè)置擴展樣式使用的函數(shù):GetExtendedStyle、SetExtendedStyle

?? 示例代碼:

1?  DWORD?dwStyle=GetWindowLong(m_list.m_hWnd,GWL_STYLE);??
2?  SetWindowLong(m_list.m_hWnd,GWL_STYLE,dwStyle|LVS_REPORT);??
3?
4??? DWORD?styles=m_list.GetExtendedStyle();??
5?
6??? m_list.SetExtendedStyle(styles|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);

?

MFC ListControl技巧匯總

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉