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

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

1.添加表頭:

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

?1?????////初始化界面
?2?????ListControl.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
?3?????LONG?lStyle;
?4?????lStyle?=?GetWindowLong(ListControl.m_hWnd,?GWL_STYLE);//獲取當前窗口style
?5?????lStyle?&=?~LVS_TYPEMASK;?//清除顯示方式位
?6?????lStyle?|=?LVS_REPORT;?//設置style
?7?????SetWindowLong(ListControl.m_hWnd,?GWL_STYLE,?lStyle);//設置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("線程數"),LVCFMT_CENTER,?50);

?

2.插入信息:

1?????????void?InsertData()
2?????????{
3?????????????int?nCount?=?ListControl.GetItemCount();//獲取當前已插入的行數
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.獲取當前選中的項:

方法1:

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

????//得到第index行.第2列的內容(下標從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消息,消息響應代碼如下:

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

?

6.列排序

  

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

?

排序函數:

?該函數返回-1,代表第一項排應在第二項前面;
?返回1代表第一項排應在第二項后面;
?返回0代表兩項相等。

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

{
????SortList?*?listData?=?(SortList*)lParamSort;//獲取傳入的參數
????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);??//轉換為CString為char?*
????char?*???s2=T2A(strItem2);?

????int?nResult?=?0;
????switch(listData->col)//根據選擇的列的數據類型進行自定義排序
????{
//整形的排序
????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;
????}

//根據全局變量的值改變排序方法
????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)設置EDIT Labels的屬性為TRUE

(2)添加事件NM_DBCLICK事件

?1?????*pResult?=?0;
?2?
?3?????//雙擊事件產生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.添加圖標:

(1)聲明:

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

(2)獲取圖標:

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.樣式設置:

(1).

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

擴展樣式:

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

?

(2).

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

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

?? 設置擴展樣式使用的函數: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技巧匯總

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

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

關鍵字: 驅動電源

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

關鍵字: 工業(yè)電機 驅動電源

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

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

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

關鍵字: 電動汽車 新能源 驅動電源

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

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

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

關鍵字: LED 驅動電源 功率因數校正

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

關鍵字: LED照明技術 電磁干擾 驅動電源

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

關鍵字: LED 驅動電源 開關電源

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

關鍵字: LED 隧道燈 驅動電源
關閉