亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

CGridCtrl控件類的用法

發布時間:2020-08-04 21:15:37 來源:網絡 閱讀:8536 作者:Chinayu2014 欄目:編程語言

開源的CGridCtrl類,是VC中的可用的表格控件。相對VC自帶的CListCtrl網格控件功能要強很多。但是除原工程代碼自帶的示例外,很少有完整描述使用的過程。在VC2015中的用法如下:

(1)先將源代碼的中的GridCtrl_src文件夾和NewCellTypes文件夾復制到當前新建工程源代碼目錄下。

在窗口的.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)在對話框上添加一個自定義控件(Custom Control)將ID設為:IDC_GRID

在窗口中,添加關聯變量:CGridCtrl m_Grid;

控件Class屬性為:MFCGridCtrl

(3)在窗口的OnInitDialog函數中,添加如下代碼:

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);
//填充數據
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);            //設置行數
		m_Grid.SetColumnCount(m_nCols);         //設置列數
		m_Grid.SetFixedRowCount(m_nFixRows);    //固定行
		m_Grid.SetFixedColumnCount(m_nFixCols); //固定列
	}
	CATCH(CMemoryException, e)
	{
		e->ReportError();
		return;
	}
	END_CATCH

	//用文本填充行列數據
	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)
			{//設置部分單元格顏色
				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)編譯時提示:C4996: 'GetVersionExW': 被聲明為已否決

處理方法如下:

1.Project Properties > Configuration Properties > C/C++ > General > SDL checks關掉

2.#pragma warning(disable: 4996)          

3./wd 4996

任選一種方法即可。

(5)清空表格控件

m_Grid.DeleteAllItems();//全部清空

m_Grid.DeleteNonFixedRows(); //保留標題行,其他刪除

(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)右鍵菜單

在窗口類中,添加如下代碼:

//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;
}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

厦门市| 南和县| 嵊州市| 慈溪市| 株洲县| 永新县| 漠河县| 五家渠市| 江孜县| 泰安市| 长岭县| 嘉善县| 安塞县| 齐齐哈尔市| 稷山县| 中山市| 同心县| 集贤县| 贵德县| 元氏县| 武夷山市| 浦北县| 简阳市| 澜沧| 宁武县| 五寨县| 肇源县| 富川| 玛纳斯县| 科尔| 平罗县| 三门峡市| 濉溪县| 无极县| 禄劝| 石渠县| 双城市| 合川市| 金溪县| 和政县| 大余县|