15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту

 

MFC Grid control (наследованный от CWnd)


Автор: Chris Maunder.

Copyright © 1998-1999 Chris Maunder.

изображение демонстрашки

Скачать исходники (56 Kb) или демонстрашку (101 Kb).

Оболочки: VC++ 5.0, VC 6.0 SP1, NT 4.0 (SP3,4), Win95/98, WinCE 2.0/2.11

Описание

Если у Вас возникла необходимость добавить в своё приложение табличку наподобие Excel, то данный элемент управления может очень даже пригодиться. Во всяком случае у меня он зазаботал с первого раза и не потребовалось вникать в длинное описание грида.

Файлы

Чтобы использовать элемент управления Grid Вам необходимо включить в свой проект следующие файлы:

gridctrl.cpp, gridctrl.h Основной код элемента управления и заголовочный файл.
CellRange.h Вспомогательный заголовочный файл для ячеек.
MemDC.h Вспомогательный заголовочный файл для работы с отображением в памяти.
InPlaceEdit.cpp, InPlaceEdit.h Исходные коды для функций редактирования ячеек.
GridDropTarget.cpp, GridDropTarget.h Исходник для возможности перетаскивания. Эти файлы необходимы только если Вы не объявляли GRIDCONTROL_NO_DRAGDROP в gridctrl.h
Titletip.cpp, Titletip.h Заголовки для ячеек. Необходимы только если Вы не объявляли GRIDCONTROL_NO_TITLETIPS в gridctrl.h

Конструирование

OK - итак, как это сделать?

Основной класс грида - это CGridCtrl , который наследуется от CWnd. Чтобы использовать его, необходимо в редакторе ресурсов MS Visual C++ поместить на форму или диалог "custom control", и ввести в имени класса (Class name) "MFCGridCtrl" (без кавычек) либо использовать функцию CGridCtrl::Create:


   CGridCtrl(int nRows = 0, int nCols = 0, int nFixedRows = 0,
	 int nFixedCols = 0);
   BOOL Create(const RECT& rect, CWnd* parent, UINT nID,
         DWORD dwStyle = WS_CHILD | WS_BORDER | WS_TABSTOP | WS_VISIBLE);

   void AFXAPI DDX_GridControl(CDataExchange* pDX, int nIDC,
		 CGridCtrl&rControl);