開(kāi)源的CGridCtrl類(lèi),是VC中的可用的表格控件。相對(duì)VC自帶的CListCtrl網(wǎng)格控件功能要強(qiáng)很多。但是除原工程代碼自帶的示例外,很少有完整描述使用的過(guò)程。在VC2015中的用法如下:
創(chuàng)新互聯(lián)公司專(zhuān)注于中大型企業(yè)的成都做網(wǎng)站、成都網(wǎng)站制作和網(wǎng)站改版、網(wǎng)站營(yíng)銷(xiāo)服務(wù),追求商業(yè)策劃與數(shù)據(jù)分析、創(chuàng)意藝術(shù)與技術(shù)開(kāi)發(fā)的融合,累計(jì)客戶上千余家,服務(wù)滿意度達(dá)97%。幫助廣大客戶順利對(duì)接上互聯(lián)網(wǎng)浪潮,準(zhǔn)確優(yōu)選出符合自己需要的互聯(lián)網(wǎng)運(yùn)用,我們將一直專(zhuān)注品牌網(wǎng)站制作和互聯(lián)網(wǎng)程序開(kāi)發(fā),在前進(jìn)的路上,與客戶一起成長(zhǎng)!(1)先將源代碼的中的GridCtrl_src文件夾和NewCellTypes文件夾復(fù)制到當(dāng)前新建工程源代碼目錄下。
在窗口的.h文件中添加:
#include "GridCtrl_src\GridCtrl.h"
在窗口的.cpp文件中添加:
#include "NewCellTypes/GridURLCell.h" #include "NewCellTypes/GridCellCombo.h" #include "NewCellTypes/GridCellCheck.h" #include "NewCellTypes/GridCellNumeric.h" #include "NewCellTypes/GridCellDateTime.h"
(2)在對(duì)話框上添加一個(gè)自定義控件(Custom Control)將ID設(shè)為:IDC_GRID
在窗口中,添加關(guān)聯(lián)變量:CGridCtrl m_Grid;
控件Class屬性為:MFCGridCtrl
(3)在窗口的OnInitDialog函數(shù)中,添加如下代碼:
fillData(); m_Grid.GetDefaultCell(FALSE, FALSE)->SetBackClr(RGB(0xFF, 0xFF, 0xE0)); m_Grid.SetFixedColumnSelection(TRUE); m_Grid.SetFixedRowSelection(TRUE); m_Grid.EnableColumnHide(); m_Grid.AutoSize(); m_Grid.SetCompareFunction(CGridCtrl::pfnCellNumericCompare); m_Grid.SetTrackFocusCell(FALSE); //填充數(shù)據(jù) VOID Ctest1Dlg::fillData() { INT m_nFixCols = 0; INT m_nFixRows = 1; INT m_nCols = 6; INT m_nRows = 16; m_Grid.SetAutoSizeStyle(); TRY { m_Grid.SetRowCount(m_nRows); //設(shè)置行數(shù) m_Grid.SetColumnCount(m_nCols); //設(shè)置列數(shù) m_Grid.SetFixedRowCount(m_nFixRows); //固定行 m_Grid.SetFixedColumnCount(m_nFixCols); //固定列 } CATCH(CMemoryException, e) { e->ReportError(); return; } END_CATCH //用文本填充行列數(shù)據(jù) for (int row = 0; row < m_Grid.GetRowCount(); row++) { for (int col = 0; col < m_Grid.GetColumnCount(); col++) { CString str; GV_ITEM Item; Item.mask = GVIF_TEXT; Item.row = row; Item.col = col; if (row < m_nFixRows) str.Format(_T("列 %d"), col); else if (col < m_nFixCols) str.Format(_T("行 %d"), row); else str.Format(_T("%d"), row*col); Item.strText = str; if (rand() % 10 == 1) {//設(shè)置部分單元格顏色 COLORREF clr = RGB(rand() % 128 + 128, rand() % 128 + 128, rand() % 128 + 128); Item.crBkClr = clr; //或者m_Grid.SetItemBkColour(row, col, clr); Item.crFgClr = RGB(255, 0, 0); //或者m_Grid.SetItemFgColour(row, col, RGB(255,0,0)); Item.mask |= (GVIF_BKCLR | GVIF_FGCLR); } m_Grid.SetItem(&Item); } } }
(4)編譯時(shí)提示:C4996: 'GetVersionExW': 被聲明為已否決
處理方法如下:
1.Project Properties > Configuration Properties > C/C++ > General > SDL checks關(guān)掉
2.#pragma warning(disable: 4996)
3./wd 4996
任選一種方法即可。
(5)清空表格控件
m_Grid.DeleteAllItems();//全部清空
m_Grid.DeleteNonFixedRows(); //保留標(biāo)題行,其他刪除
(6)表格編輯事件處理
//添加事件映射 BEGIN_MESSAGE_MAP(Ctest1Dlg, CDialogEx) ON_NOTIFY(GVN_ENDLABELEDIT,IDC_GRID,&Ctest1Dlg::OnEditCell) END_MESSAGE_MAP()
.h頭文件中添加:
afx_msg VOID OnEditCell(NMHDR * pNMHDR, LRESULT *pResult);
.cpp文件中添加代碼如下:
VOID Ctest1Dlg::OnEditCell(NMHDR * pNMHDR, LRESULT *pResult) {//事件處理 NM_GRIDVIEW * pItem = (NM_GRIDVIEW*)pNMHDR; CString s; s.Format(_T("您編輯了%d行,%d列"), pItem->iRow + 1, pItem->iColumn + 1); CString str = m_Grid.GetItemText(pItem->iRow, pItem->iColumn); AfxMessageBox(str); //return Ctest1Dlg::OnNotify(wParam, lParam, pResult); }
(7)禁止表格編輯
m_Grid.SetEditable(FALSE);
(8)刪除一行
m_Grid.DeleteRow(m_nSelectGrid);
(9)右鍵菜單
在窗口類(lèi)中,添加如下代碼:
//1020為CGridCtrl的資源ID ON_NOTIFY(NM_RCLICK, 1020, &CScale3DCTotalTableView::OnDelMenu) VOID CScale3DCTotalTableView::OnDelMenu(NMHDR * pNMHDR, LRESULT *pResult) { NM_GRIDVIEW * pItem = (NM_GRIDVIEW*)pNMHDR; m_nSelectGrid = pItem->iRow; POINT pt; GetCursorPos(&pt); CMenu menu; menu.LoadMenu(IDR_MENU1); CMenu * pPopup = menu.GetSubMenu(0); ScreenToClient(&pt); CRect rt; this->GetWindowRect(rt); pPopup->TrackPopupMenu(TPM_RIGHTBUTTON | TPM_RIGHTBUTTON, pt.x + rt.left, rt.top + pt.y, this); *pResult = 0; }
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
文章標(biāo)題:CGridCtrl控件類(lèi)的用法-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://bm7419.com/article8/ihgip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、外貿(mào)建站、網(wǎng)站導(dǎo)航、品牌網(wǎng)站設(shè)計(jì)、虛擬主機(jī)、用戶體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容