Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
41
Добавлен:
16.02.2016
Размер:
26.09 Mб
Скачать

Int GetTopIndex () const;

При успешном завершении метод возвращает индекс (начиная с 0) первого видимого элемента окна списка, а при возникновении ошибки - значение LB_ERR int SetTopIndex (int nlndex);

Метод прокручивает окно списка к указанному элементу, отображая его первым видимым элементом. DWORD GetltemData (int nlndex) const;

Метод определяет 32-разрядное значение, ассоциируемое с элементом списка с указанным индексом. void* GetltemDataPtr (int nlndex) const;

Метод определяет указатель на 32-разрядное значение, ассоциируемое с элементом списка с указанным индексом. int SetltemData (int nlndex, DWORD dwItemData);

Метод устанавливает 32-разрядное значение, ассоциируемое с элементом списка с указанным индексом.

int SetltemDataPtr (int nlndex, void* pData);

Метод устанавливает указатель на 32-разрядное значение, ассоциируемое с элементом списка с указанным индексом.

int GetltemRect (int nlndex, LPRECT ipReci) const;

Метод определяет размер прямоугольной области, ограничивающей указанный элемент списка.

UINT ItemFromPoint (CPoint pt, BOOL& bOutside) const;

Метод возвращает индекс элемента списка, наиболее близко расположенного к указанной точке.

int SetltemHeight (int nlndex, UINT cyltemHeight);

Метод устанавливает высоту (в пикселях) указанного элемента списка, если окно списка имеет стиль LBS_OWNERDRAWVARIABLE. В противном случае метод устанавливает высоту всех элементов окна списка. int GetltemHeight (int nlndex) const;

Метод определяет высоту (в пикселях) указанного элемента списка. Параметры:

nlndex - индекс элемента списка. Если окно списка не имеет стиля LBS_OWNERDRAWVARIABLE, то данный параметр должен быть равен нулю. int GetSel (int nlndex) const;

При успешном завершении метод возвращает положительное значение в том случае, если указанный элемент списка выделен, и 0 - в противном случае. При возникновении ошибки возвращается значение LB_ERR. int GetText (int nlndex, LPTSTR ipszBujfer) const; void GetText (int nlndex, CString& rString) const;

Эти методы получают строку по указанному индексу элемента списка. В первом случае метод возвращает длину скопированной строки в байтах. int GetTextLen (int nlndex) const;

Метод определяет длину строки в окне списка по указанному индексу элемента списка.

void SetColumnWidth (int cxWidth);

Метод устанавливает ширину всех столбцов окна списка. Параметры:

cxWidth - ширина столбца в пикселях.

Отметим, что такое окно списка должно иметь стиль LBS_MULTICOLUMN.

Void SetTabStops ();

BOOL SetTabStops (const int& cxEachStop);

BOOL SetTabStops (int nTabStops, LPINT rgTabStops);

Метод устанавливает позиции перехода по символам табуляции.

Окно списка, обрабатываемое данным методом, должно иметь стиль LBS_LTSETABSTOPS. int GetCurSel () const;

Метод возвращает индекс выделенного элемента окна списка. Если выделения нет или окно списка использует множественный выбор, то метод возвращает значение LB_ERR. int SetCurSel (int nSelect);

Метод выделяет указанный элемент списка и при необходимости прокручивает окно списка так, чтобы выделенный элемент стал видимым.

Параметры:

nSelect - индекс выделяемого элемента. Если nSelect равно -1, то выделение любого элемента снимается.

Отметим, что этот метод следует использовать только для окна списка с единичным выбором. int SetSel (int nlndex, BOOL bSelect = TRUE);

Метод выделяет или снимает выделение элемента списка в окне списка с множественным выбором.

Параметры:

nlndex - индекс элемента списка. Если этот параметр равен -1, то в зависимости от значения bSelect выделение добавляется или снимается со всех элементов списка.

bSelect - при значении TRUE выделение устанавливается, а при значении FALSE снимается. int GetSelCount () const;

Метод возвращает общее количество выделенных элементов в окне списка с множественным выбором. int SelltemRange (BOOL bSelect, int nFirstltem, int nLastltem);

Метод позволяет выделить несколько подряд расположенных элементов в окне списка с множественным выбором или отменить выделение элементов.

Параметры:

bSelect - при значении TRUE выполняется выделение указанных элементов списка, а при значении FALSE выделение снимается.

nFirstltem - индекс первого элемента указываемого диапазона (начиная с нуля).

nLastltem - индекс последнего элемента указываемого диапазона.

Отметим, что для выделения элемента в окне списка с единичным выбором следует использовать метод SetSel.

int AddString (LPCTSTR Ipszltem);

Метод добавляет в окно списка новый элемент, содержащий указанную строку. При успешном завершении метод возвращает индекс добавленного элемента. При возникновении ошибки возвращается значение LB_ERR или LB_ERRSPACE.

Место, в которое будет вставлен добавляемый элемент, зависит от того, имеет ли окно списка стиль LBS_SORT: если стиль не установлен, то происходит добавление в конец списка, а если установлен, то при добавлении строки выполняется сортировка списка.

Для добавления элемента в конкретное место списка следует использовать метод InsertString.

int DeleteString (UINT nlndex);

Метод удаляет из окна списка строку с соответствующим индексом и при успешном завершении возвращает количество оставшихся элементов списка. При указании неверного значения индекса метод возвращает значение LB_ERR.

int InsertString (int nlndex, LPCTSTR Ipszltem);

Метод вставляет в указанное место окна списка новый элемент, содержащий заданную строку. Если значение параметра nlndex равно -1, то элемент будет добавлен в конец списка.

При успешном завершении метод возвращает индекс добавленного элемента. При возникновении ошибки возвращается значение LB_ERR или LB_ERRSPACE.

void ResetContent ();

Метод удаляет все элементы окна списка. int Dir (UINT attr, LPCTSTR ipszWildCard);

Метод добавляет в окно списка список имен файлов и/или дисков.

При успешном завершении метод возвращает индекс последнего добавленного имени. При возникновении ошибки возвращается значение LB_ERR или LB_ERRSPACE.

int FindString (int nStartAfter, LPCTSTR Ipszltem) const;

Метод выполняет поиск указанной строки в окне списка. Поиск начинается с элемента с индексом nStartAfter и при достижении конца списка продолжается с начала списка, пока не будут просмотрены все элементы списка. Если значение параметра nStartAfter равно -1, то поиск начинается с первого элемента окна списка. При успешном завершении метод возвращает индекс найденного элемента списка.

Отметим, что найденный элемент списка автоматически не выделяется.

int SelectString (int nStartAfter, LPCTSTR Ipszltem);

Метод выполняет поиск указанной строки в окне списка и выделяет найденную строку. При, необходимости окно списка прокручивается таким образом, чтобы найденная строка была видима. Строка считается найденной, если ее первые символы совпадают со строкой Ipszltem.

Отметим, что этот метод не используется для окна списка, имеющего стиль LBS_MULTIPLESEL.

Класс ClistCtrl

Класс CListCtrl инкапсулирует возможности элемента управления список (list view control), показывающего набор элементов, состоящих из пиктограммы и метки (надписи). Класс предоставляет возможность упорядочивать и отображать элементы различным образом. Каждому элементу списка может быть сопоставлено до трех пиктограмм различного размера и некоторая дополнительная информация.

Элемент управления список может показывать элементы списка четырьмя различными способами, называемыми режимами отображения (views). Например, отображение в виде списка и в виде таблицы, содержащей дополнительную информацию о каждом элементе списка. Текущее отображение определяется стилем окна элемента управления, которые представлены в следующей таблице.

Стиль

Способ

Описание

отображения

LVS ICON

Icon view

Каждый элемент списка отобража-

(режим

ется пиктограммой (32x32 пиксе-

пиктограммы)

ля) и расположенной под ней над-

писью. Пользователь может пере-

мещать эти элементы внутри окна

отображения списка

LVS_SMALLICON

Small icon view

Каждый элемент списка отобража-

(режим

ется маленькой пиктограммой

малой

(16x16 пикселей) и расположенной

пиктограммы)

справа от нее надписью. Пользова-

тель может перемещать эти эле-

менты внутри окна отображения

списка

LVSJLIST

List view

Все элементы списка выравнены

(режим

по столбцам. Каждый элемент

списка)

списка отображается маленькой

пиктограммой (16x16 пикселей)

и расположенной справа от нее

надписью. Пользователь не может

перемещать эти элементы внутри

окна отображения списка

LVS_REPORT

Report view

Элементы списка отображаются

(режим

в виде таблицы. В первых столбцах

таблицы)

таблицы отображаются маленькая

пиктограмма и надпись, а следую-

щие столбцы могут содержать до-

полнительную информацию об эле-

менте списка (подэлементы). Если

установлен стиль

LVS_NOCOLUMNHEADER, то ка-

ждый столбец имеет заголовок

Для изменения способа отображения и выравнивания элементов списка для элемента управления список можно использовать методы GetWindow-Long и SetWindowLong.

Пиктограммы для элементов списка размещаются в списках изображений. Создаются два списка изображений - для поддержки работы с большими и малыми пиктограммами соответственно. Дополнительно может быть создан список изображений с изображениями состояния. Состояние элемента может быть отображено слева от его пиктограммы.

Список изображений может быть разделяемым ресурсом и одновременно использоваться несколькими элементами управления список. В этом случае он не уничтожается одновременно с элементом управления.

Элементами обратного вызова (callback item) называются элементы элемента управления список, для которых приложение (а не только элемент управления) может сохранять текст, пиктограмму или то и другое. Несмотря на то что элемент управления также может сохранять эти атрибуты, бывают случаи, когда желательно, чтобы приложение управляло этой информацией. Маска обратного вызова определяет, какие биты состояния элемента будут управляться приложением. По умолчанию маска обратного вызова равно нулю. Это значит, что элемент управления полностью контролирует все свои состояния.

Список используемых сообщений

Сообщения, посылаемые элементом управления список своему родительскому окну, можно обрабатывать различными способами, например

применяя метод CWnd::OnNotify или соответствующий макрос.

Для этого следует внести обрабатываемое сообщение в таблицу сообщений

родительского окна, указав используемый метод - обработчик сообщения. Элемент управления список может инициировать следующие сообщения:

LVN_BEGINDRAG - начало операции перемещения и сброса (используя левую кнопку мыши);

LVN_BEGINLABELEDIT - начало операции редактирования надписи элемента списка;

LVN_BEGINRDRAG - начало операции перемещения и сброса (используя правую кнопку мыши);

LVN_COLUMNCLICK - выполнен щелчок мышью на заголовке столбца в режиме таблицы;

LVN_DELETEALLITEMS - инициировано удаление всех элементов списка;

LVN_DELETEITEM - инициировано удаление одного элемента списка;

LVN_ENDLABELEDIT - завершена операция редактирования надписи элемента списка;

LVN_GETDISPINFO - требуется информация об элементе списка для его отображения;

LVN_NSERTITEM - инициирована операция вставки элемента списка;

LVN_ITEMCHANGED - инициировано изменение элемента списка;

LVN_ITEMCHANGING - инициирован запрос на изменение элемента списка. Если при обработке этого сообщения вернуть значение TRUE, то изменения не произойдет;

LVN_KEYDOWN - была нажата клавиша;

LVN_SETDISPINFO - требуется изменить информацию об элементе списка.

Члены класса CListCtrl ();

Конструктор объекта CListCtrl. BOOL Create (DWORD dwStyle, const RECT& reel, CWnd* pParentWnd,

UINT Nid);

Метод создает элемент управления и ставит его в соответствие объекту CListCtrl (созданного ранее конструктором класса) и в случае успешного завершения возвращает ненулевое значение.

Параметры:

dwStyle - комбинация стилей, используемых для отображения списка. red - размер и положение элемента управления список. Параметр может быть указан объектом Crect или структурой RECT.

pParentWnd - указатель родительского окна (как правило, класса, производного от Cdialog). Этот параметр должен быть отличным от NULL. Nid - идентификатор элемента управления (ID).

Параметр dwStyle может содержать комбинацию следующих стилей:

LVS_ALIGNLEFT - выравнивание по левому краю при отображении в режиме пиктограмм и малых пиктограмм (1-й и 2-й способ, см. предыдущую таблицу);

LVS_ALIGNTOP - выравнивание по верхнему краю при отображении в режиме пиктограмм и малых пиктограмм;

LVS_AUTOARRANGE - режим автоматического упорядочения элементов в списке;

LVS_EDITIABELS - допускает режим редактирования надписей элементов

списка на месте. Для этого режима родительское окно должно обрабатывать сообщение LVN_ENDLABELEDIT;

LVS_ICON - указывает отображение в режиме пиктограмм;

LVS_LIST - указывает отображение в режиме списка;

LVS_NOCOLUMNHEADER - отменяет отображение заголовков столбцов в режиме таблицы;

LVS_NOLABELWRAP - определяет, что в режиме пиктограмм текст будет выводиться одной строкой (без переноса на следующую). По умолчанию этот стиль не установлен;

LVS_NOSCROLL - запрещает скроллинг элементов списка. Все элементы должны быть расположены в клиентской области окна;

LVS_NOSORTHEADER - отключает для заголовков столбцов режим кнопки, который позволяет выполнять по щелчку пользователя различные действия, например, сортировку элементов спис;

LVS_OWNERDRAWFIXED - позволяет родительскому окну (owner window) перерисовывать элементы в режиме таблицы. Элемент управления список каждый раз для перерисовки элемента списка посылает сообщение WMDRAWITEM. Этот элемент описывается структурой DRAWITEMSTRUCT (член itemDat;

LVS_REPORT - устанавливает режим табли;

LVS_SHAREIMAGELISTS - позволяет нескольким элементам управления

список использовать один список изображений. В этом случае элемент управления не является владельцем этого списка изображений и он не уничтожается при удалении элемента управления;

LVS_SHOWSELALWAYS - режим отображения/выделения как при фокусе на элементе управления список, так и без него;

LVS_SINGLESEL - позволяет выделять одновременно не более одного элемента списка. По умолчанию разрешается выделять одновременно несколько элементов списка;

LVS_SMALLICON - устанавливает режим малых пиктограмм;

LVS_SORTASCENDING - сортирует элементы списка по возрастанию (текстовые надписи);

LVS_SORTDESCENDING - сортирует элементы списка по убыванию (текстовые надписи).

COLORREF GetBkCoIor () const;

Метод возвращает 32-битовое значение RGB-цвета фона элемента управления. BOOL SetBkCoIor (COLORREF cr);

Метод устанавливает значение RGB-цвета фона элемента управления и при успешном завершении возвращает ненулевое значение.

Параметры:

сr - устанавливаемый цвет фона. Если фон отсутствует, то параметр равен CLR_NONE.

Отметим, что перерисовка элемента управления список, имеющего цвет фона, выполняется значительно быстрее, чем при его отсутствии. Clmagelist* GetlmageList (int nlmageList) const;

Метод возвращает указатель списка изображений, используемого для отрисовки элементов списка.

Параметры:

nlmageList - определяет указатель, на какой список будет возвращен. Параметр может принимать одно из следующих значений: LVSIL_NORMAL - список изображений с большими пиктограммами; LVSIL_SMALL - список изображений с малыми пиктограммами; LVSIL_STATE - список изображений состояний. Clmagelist* SetlmageList (CImageList* plmageList, int nlmageList);

Функция устанавливает новый список изображений и возвращает указатель на предыдущий список изображений. int GetltemCount ();

Метод возвращает количество элементов в списке. BOOL Getltem (LV_ITEM* pltem) const;

Метод заносит в структуру LV_ITEM атрибуты элемента списка и при Успешном завершении возвращает ненулевое значение.

Структура LV_ITEM имеет следующее описание:

typedef struct _LV_ITEM {

UINT mask; // маска достоверности

int iltem; // индекс элемента

int iSubltem; // индекс подэлемента

UINT state; // текущее состояние, указываемое флажками

UINT stateMask; // текущее состояние, указываемое флажками

LPSTR pszText; // адрес текста или буфера текста для элемента

int cchTextMax; // размер буфера

int ilmage; // индекс изображения

LPARAM lParam; // 32-битовое значение, ассоциируемое с элементом } LV_ITEM;

Приведем описание некоторых членов этой структуры: mask - переменная, определяющая, какие из членов содержат достоверные данные; может определяться комбинацией следующих значений:

LVIF_TEXT - член pszText содержит достоверные данные;

LVIF_IMAGE - член ilmage содержит достоверные данные;

LVIF_PARAM - член lParam содержит достоверные данные;

LVIF_STATE - член state содержит достоверные данные.

iltem - индекс элемента, описываемого данной структурой.

iSubltem - подэлемент (поле) - это строка, содержащая текст, отображаемый справа от пиктограммы, и надписи в режиме таблицы. Все элементы;

списка имеют одинаковое число подэлементов. Этот член содержит индекс

подэлемента или 0, если структура описывает элемент.

state и stateMask - текущее и возможное состояние элемента, которые могут

быть представлены комбинацией следующих значений:

LVIS_CUT - элемент списка отмечен для операций вырезания и вставки;

LVIS_DROPHILITED - элемент выделен для операций перемещения и сброса;

LVIS_FOCUSED - элемент имеет фокус; только один элемент может иметь фокус;

LVIS_SELECTED - элемент выделен;

LVIS_OVERLAYMASK - приложение сохраняет индекс текущего состояния изображения списка изображений для каждого элемента;

LVTS_STATEIMAGEMASK- приложение сохраняет индекс текущего изображения списка изображений для каждого элемента.

pszText - адрес строки, содержащей текст элемента, для структуры, определяющей атрибуты элемента. Для элемента обратного вызова этот член имеет значение LPSTRTEXTCALLBACK. Если структура получает атрибуты элемента, то этот член является адресом буфера, получающего текст элемента.

cchTextMax - размер буфера в байтах.

ilmage - индекс пиктограммы элемента в списках изображений (для больших и малых пиктограмм). Для элемента обратного вызова этот член содержит значение IIMAGECALLBACK.

DWORD GetltemData (int nltem) const;

Метод возвращает 32-битовое значение, ассоциируемое с элементом (член lParam структуры LV_ITEM).

Параметры:

nltem - индекс элемента списка. BOOL SetltemData (int nltem, DWORD dwData);

Метод определяет новое 32-битовое значение, ассоциируемое с элементом, указываемым параметром dwData.

BOOL Setltem (const LVJTEM* pltem);

BOOL Setltem (int nltem, int nSubltem, UINT nMask, LPCTSTR IpszItem,

int nlmage, UINT nState, UINT nStateMask, LPARAM lParam);

Эти методы устанавливают новые атрибуты элемента списка и при успешном завершении возвращают ненулевое значение.

Элемент списка или подэлемент идентифицируются членами структуры LVJTEM iltem и iSubltem или указываются параметрами nltem и nSubltem.

int GetNextltem (int nltem, int nFlags) const;

Метод выполняет поиск элемента с состоянием указываемым флажками. При успешном завершении метод возвращает индекс найденного элемента, в противном случае -1.

Параметры:

nltem - индекс элемента, с которого начинается поиск (указанный индексом элемент не просматривается), или -1, если следует найти первый подходящий элемент списка. nFlags - указывает направление поиска и список искомых флажков.

Направление поиска указывается одним из следующих флажков: LVNI_ABOVE - поиск вверх от указанного элемента; LVNI_ALL - поиск по индексам (значение по умолчанию); LVNI_BELOW - поиск вниз от указанного элемента; LVNI_TOLEFT - поиск влево от указанного элемента; LVNI_TORIGHT - поиск вправо от указанного элемента.

Следующие флажки определяют искомое состояние элемента списка:

LVNI_DROPHILITED - для элемента установлен флажок состояния LVIS_DROPHILITED;

LVNI_FOCUSED - для элемента установлен флажок состояния

LVIS_FOCUSED; LVNI_SELECTED - для элемента установлен флажок состояния

LVIS_SELECTED; LVNI_MARKED - для элемента установлен флажок состояния

LVIS_MARKED.

Поиск продолжается, пока не будет найден элемент, для которого установлены все указанные параметром флажки.

BOOL GetltemRect (int nltem, LPRECT ipRect, UINT nCode) const;

Метод определяет размеры прямоугольной области, ограничивающей указанную часть элемента.

Параметры:

nltem - индекс элемента.

IpRect - адрес структуры RECT, в которую будут занесены данные о прямоугольной области.

nCode - определяет значение, указывающее, какую прямоугольную область определять:

LVIR_BOUNDS - прямоугольная область, ограничивающая весь элемент, включая пиктограмму и надпись;

LVIR_ICON - прямоугольная область, ограничивающая большую или малую пиктограмму;

LVIR_LABEL - прямоугольная область, ограничивающая только надпись.

BOOL SetltemPosition (int nltem, POINT pi);

Метод перемещает элемент на указанную позицию в списке.

Параметры:

nltem - индекс перемещаемого элемента.

pt - структура POINT, указывающая новую позицию (в координатах относительно верхнего левого угла).

BOOL GetltemPosition (int nltem, LPPOINT ipPoint) const;

Метод определяет позицию (координаты) элемента в списке.

Параметры:

nltem - индекс элемента.

ipPoint - адрес структуры POINT, содержащей позицию (в координатах относительно верхнего левого угла).

int GetStringWidth (LPCTSTR Ipsz) const;

Метод возвращает значение (в пикселях) минимально необходимой ширины столбца, позволяющей отобразить полностью всю строку. Параметр Ipsz определяет адрес строки (ограниченной 0-символом), для которой определяется ширина столбца.

Cedit* GetEditControl () const;

При успешном завершении метод возвращает указатель на объект класса Cedit (окно редактирования), используемый для редактирования текста элемента списка, в противном случае - NULL.

BOOL GetColumn (int nCol, LV_COLUMN* pColumn) const; Метод получает параметры столбца. Параметры:

п Col - номер столбца, для которого запрашиваются параметры. pColumn - адрес структуры LV_COLUMN, содержащей информацию о столбце. Член mask определяет, какие атрибуты запрашиваются. Если его значение равно LVCF_TEXT, то член pszText должен содержать адрес буфера, в который заносится текст элемента, a cchTextMax - определять размер этого буфера.

Структура LV_COLUMN содержит информацию о столбце при отображении элемента управления список в режиме таблицы. Оно описывается следующим образом:

typedef struct _LV_COLUMN {

UINT mask;

int fmt; // выравнивание

int ex; // ширина столбца в пикселях

LPSTR pszText; // указатель строки или буфера

int cchTextMax; // размер буфера

int iSubltem; // индекс подэлемента, ассоциируемого со столбцом } LV_COLUMN;

Структура содержит следующие члены:

mask - переменная, определяющая, какие члены структуры содержат информацию. Она может быть равна нулю или указываться комбинацией следующих значений:

LVCF_FMT - член fmt содержит достоверные данные; LVCF_SUBITEM - член iSubltem содержит достоверные данные; LVCF_TEXT - член pszText содержит достоверные данные; LVCF_WIDTH - член сх содержит достоверные данные, fmt - определяет выравнивание столбца и указывается одним из следующих значений: LVCFMT_LEFT, LVCFMT_RIGHT, LVCFMT_CENTER. pszText - указатель на строку, содержащую заголовок столбца, или указатель буфера (если структура получает информацию о столбце). cchTextMax - размер буфера, указанного членом pszText.

BOOL SetColumn (int nCol, const LV_COLUMN* pColumn);

Метод устанавливает новые параметры столбца. int GetCoIumnWidth (int n Cot) const;

Метод возвращает ширину (в пикселях) указанного параметром nCol столбца для элемента управления список, отображаемого в режиме списка) или режиме таблицы. BOOL SetColumnWidth (int nCol, int ex);

Метод устанавливает новую ширину столбца для режима списка или, режима таблицы.

Параметры:

п Col - индекс столбца. Для режима списка значение этого параметра должно быть -1.

сх - новая ширина столбца. BOOL GetViewRect (LPRECT ipRect) const;

Метод определяет размер прямоугольной области, ограничивающей все элементы списка, для режима с большими или малыми пиктограммами.

COLORREF GetTextColor () const;

Метод возвращает 32-битовое значение RGB-цвета для текста элемента управления список. BOOL SetTextColor (COLORREF cr);

Метод устанавливает новое 32-битовое значение RGB-цвета для текста элемента управления список.

COLORREF GetTextBkColor () const;

Метод возвращает 32-битовое значение RGB-цвета фона элемента управления список.

BOOL SetTextBkCoIor (COLORREF cr);

Метод устанавливает новое 32-битовое значение RGB-цвета фона элемента управления список. int GetTopIndex () const;

Метод возвращает индекс первого верхнего видимого элемента списка для режима списка или режима таблицы. int GetCountPerPage () const;

Метод возвращает количество элементов, которые могут быть отображены по вертикали в видимой области элемента управления список для режима список или режима таблица.

BOOL GetOrigin (LPPOINT ipPoint) const;

Метод определяет начало (координаты) текущего расположения элемента управления список.

BOOL SetltemState (int nltem, LV_ITEM* pltem);

BOOL SetltemState (int nltem, UINT nState, UINT nMask);

Эти методы изменяют текущее состояние элемента списка.

Структура LV_ITEM была описана в разделе о методе CListCtrl::GetItem. UINT GetltemState (int nltem, UINT nMask) const;

Метод возвращает установленные для указанного элемента списка флажки состояния.

int GetltemText (int nltem, int nSubltem, LPTSTR ipszText, int nLen) const; Cstring GetltemText (int nltem, int nSubltem) const;

Метод определяет текст элемента (если nSubltem равен нулю) или подэлемента списка. Первый метод возвращает длину полученной строки текста, а второй - текст элемента.

Параметры:

nltem - индекс элемента.

nSubltem - индекс подэлемента.

IpszText - указатель на строку, в которую заносится текст элемента.

nLen - длина буфера IpszText.

BOOL SetltemText (int nltem, int nSubltem, LPTSTR IpszText);

Метод изменяет текст элемента или подэлемента списка. void SetltemCount (int nltems);

Метод используется для подготовки элемента управления список для добавления большого количества элементов. Это позволяет выполнить перераспределение памяти для его внутренних структур данных только один раз, а не при каждом добавлении элемента. Параметр nltems определяет количество добавляемых элементов.

UINT GetSelectedCount () const;

Метод возвращает количество выделенных элементов.

int Insertltem (const LVJTEM* pltem);

mt Insertltem (int nltem, LPCTSTR Ipszltem);

int Insertltem (int nltem, LPCTSTR Ipszltem, int nlmage);

int Insertltem (UINT nMask, int nltem, LPCTSTR Ipszltem, UINT nState,

UINT nStateMask, int nlmage, LPARAM IParam);

Эти методы используются для добавления элемента списка. При успешном завершении методы возвращают индекс нового элемента, а в противном случае - значение -1, Параметры:

pltem - указатель на структуру LV_TEM, содержащую атрибуты добавляемого элемента списка.

nltem - индекс элемента, перед которым будет вставлен новый элемент. Ipszltem - указатель строки, содержащей надпись элемента или, для элемента обратного вызова, значение LPSTR_TEXTCALLBACK. nlntage - индекс изображения элемента или, для элемента обратного вызова, значение I_MAGECALLBACK.

nMask - определяет достоверные атрибуты и может указываться комбинацией следующих флажков: LVIF_TEXT, LVIF_STATE, LVIF_MAGE. IParam - 32-битовое значение, ассоциируемое с элементом списка. BOOL Deleteltem (int nltem);

Метод используется для удаления указанного элемента списка. BOOL DeleteAllItems ();

Метод выполняет удаление всех элементов списка. int Findltem (LV_FINDINFO* pFindlnfo, int nStart - -1) const;

Этот метод выполняет поиск элемента, удовлетворяющего указанным характеристикам. Если элемент найден, то метод возвращает индекс этого элемента, а в противном случае - значение -1.

Параметры:

pFindlnfo - указатель на структуру LVFINDINFO, содержащую атрибуте искомого элемента списка.

nStart - индекс элемента, с которого начинается поиск. Если значение этого параметра равно -1, то поиск выполняется с начала списка.

Структура LV_FINDINFO используется для задания информации по поиску элемента списка и имеет следующее описание:

typedef struct _LV_FINDINFO {

UINT flags; // флажки

LPCSTR psz; //указатель на строку текста

LPARAM IParam; // 32-битовое значение, ассоциируемое с элементом] } LV_FINDINFO;

Член flags определяет тип поиска и может определяться комбинацией следующих значений:

LVFI_PARAM - поиск выполняется по значению IParam. Выполняется сравнение IParam из структуры LVJTEM и IParam из данной структуры. Если указан этот флажок, то все другие значения игнорируются;

LVFI_PARTIAL - поиск выполняется до совпадения текста элемента и

строки, указанной членом psz (длина этой строки может быть меньше длины строки текста элемента). Флажок LVFI_STRING при этом также должен быть установлен;

LVFI_STRING - поиск выполняется до совпадения текста элемента и строки, указанной членом psz. Если не указаны дополнительные флажки, то предполагается точное совпадение;

LVFI_WRAP - если элемент не был найден, то поиск будет продолжен с начала списка;

LVFI_NEARESTXY - определяет поиск ближайшего элемента по указанному направлению.

Член структуры psz указывает строку, используемую для сравнения, в том случае, если заданы флажки LVFI_STRING или LVFI_PARTIAL.

BOOL Sortltems (PFNLVCOMPARE pfnCompare, DWORD dwData);

Метод выполняет сортировку элементов списка, используя метод сравнения элементов, определяемый приложением. После сортировки индексы элементов изменяются, отражая их новое расположение.

Параметры:

pfnCompare - адрес определяемой приложением функции сравнения. Эта функция вызывается во время сортировки каждый раз для сравнения двух элементов. Эта функция должна или быть статическим членом класса, или располагаться вне всякого класса.

dwData - значение, определяемое приложением и передаваемое в функцию сравнения.

Функция сравнения имеет следующее описание:

int CALLBACK CompareFunc (LPARAM IParaml, LPARAM lParam2, LPARAM IParamSort);

Эта функция должна возвращать следующие значения:

• отрицательное, если первый элемент списка должен предшествовать второму;

• положительное, если второй элемент списка должен предшествовать первому;

• нулевое, если элементы равны.

Параметры IParaml и 1Раrат2 указывают 32-битовые значения, ассоциируемые с элементами. Значение параметра IParamSort равно значению параметра dwData.

int HitTest (LV_HITTESTINFO* pHitTestlnfo) const; int HitTest (Cpoint pt, UINT* pFlags = NULL) const;

Эти методы возвращают индекс элемента, расположенного в указанной позиции, или, при его отсутствии, значение -1. Они могут быть использованы для определения позиции мыши.

Структура LV_HITTESTINFO описывает позицию и другую информацию для поиска элемента и имеет следующее описание:

typedef struct _LV_HITTESTINFO {

POINT pt; // координаты точки в координатах соответственно

// режиму отображения элемента управления список

UINT flags; // комбинация флажков

int iltem; // получает индекс подходящего элемента } LV_HITTESTINFO;

В член структуры flags заносится информация о результатах тестирования точки. Это может быть комбинация следующих флажков:

LVHT_ABOVE - позиция точки расположена выше клиентской области

элемента управления; LVHT_BELOW - позиция точки расположена ниже клиентской области

элемента управления; LVHT_NOWHERE - позиция точки расположена в клиентской области okна элемента управления, но вне элемента списка; LVHT_ONITEMICON - позиция точки расположена над пиктограммой

элемента списка; LVHT_ONITEMLABEL - позиция точки расположена над надписью элемента списка; LVHT_ONITEMSTATEICON - позиция точки расположена над изображением состояния элемента списка; LVHTJTOLEFT - позиция точки расположена левее клиентской области

элемента управления; LVHTJTORIGHT - позиция точки расположена правее клиентской области

элемента управления.

Флажки LVHT_ABOVE, LVHT_BELOW, LVHT_TOLEFT LVHT_TORIGHT можно использовать для определения требования прокрутки содержимого элемента управления список.

Для того чтобы определить, расположена ли указанная точка над любой частью элемента списка, достаточно проверить, указан ли хотя бы один из флажков LVHT_ONITEMICON, LVHT_ONITEMLABEL или LVHT_ONITEMSTATEICON. BOOL EnsureVisible (int nltem, BOOL bPartialOK);

Этот метод обеспечивает, что указанный элемент списка будет видимым (или частично видимым) в элементе управления список.

Параметры:

nltem - индекс элемента списка.

bPartialOK- определяет, допускается ли частичная видимость элемента, или его надо показывать полностью.

BOOL Scroll (Csize size);

Этот метод прокручивает содержимое элемента управления список на указываемое объектом Csize количество пикселей. BOOL Redrawltems (int nFirst, int nLast);

Метод инициирует перерисовку элементов списка, диапазон которых задан параметрами.

Перерисовка не происходит до тех пор, пока окно элемента управления не получит сообщение WM_PAINT. Для того чтобы сразу выполнить перерисовку элемента, следует использовать метод UpdateWindow.

BOOL Update (int nltem);

Метод выполняет перерисовку указанного элемента списка. При этом если установлен стиль LVS_AUTOARRANGE, то автоматически происходит упорядочение элементов.

BOOL Arrange (UINT nCode);

Метод выполняет переупорядочение элементов списка.

Параметр nCode определяет стиль выравнивания и может быть указан одним из следующих флажков:

LVA_ALIGNLEFT LVA_ALIGNTOP LVA_DEFAULT LVA_SNAPTOGRID

Cedit* EditLabel (int nltem);

При успешном завершении метод возвращает указатель на объект Cedit, используемый для редактирования текста, или в противном случае - NULL

Параметр nltem указывает индекс редактируемого элемента списка.

Редактирование текста элемента списка разрешено в том случае, если для элемента управления список установлен стиль LVS_EDITLABELS. В этом случае редактирование начинается при щелчке мышью на элементе списка, имеющем фокус.

int InsertColumn (int nCol, const LV_COLUMN* pColumn);

int InsertColumn (int nCol, LPCTSTR ipszColumnHeading,

int nFormat = LVCFMT_LEFT, int n Width = - 1, int nSubltem = - 1);

Эти методы выполняют вставку нового столбца в элемент управления список. При успешном завершении метод возвращает индекс нового столбца, в противном случае возвращается значение -1.

Параметры: nCol - индекс нового столбца.

pColumn - указатель на структуру LV_COLUMN, содержащую атрибуты нового столбца.

ipszColumnHeading - указатель на строку, содержащую заголовок столбца. nFormat - число, определяющее выравнивание столбца. Этот параметр может быть указан одним из следующих флажков: LVCFMT_LEFT, LV_CFMT_RIGHT, LVCFMT_CENTER.

пWidth - ширина столбца в пикселях. Если указано значение -1, то ширина столбца не устанавливается.

nSubltem - индекс подэлемента, ассоциируемого со столбцом. Если указано значение -1, то нет ассоциируемых подэлементов.

Напомним, что структура LV_COLUMN содержит атрибуты столбца для отображения элемента управления список в режиме таблица, а также используется для получения информации о столбце.

BOOL DeleteColumn (int nCol);

Этот метод выполняет удаление указанного столбца. CImageList* CreateDraglmage (int nltem, LPPOINT ipPoini);

Этот метод следует использовать для создания перемещаемого списка изображений для указанного элемента. Объект CImageList после завершения операции следует удалить.

Например:

CImageList* pMylmageList = MyListCtrl.CreateDragImage(nItem, &mypoint);

delete plmageList; virtual void Drawltem (LPDRAWITEMSTRUCT ipDrawItemStruci);

Этот метод вызывается средой выполнения (framework) при изменении элемента управления список.

Параметр lpDrawItemStruct содержит указатель на структуру DRAWITEMSTRUCT с информацией о типе требуемых действий (перерисовке).

Класс CrichEditCtrl

Элемент управления окно расширенного редактирования (rich edit control) дает возможность пользователю не только редактировать текст, в отличие от элемента управления окно редактирования, но и выполнять форматирование символов и абзацев, встраивать OLE-объекты.

Данный элемент управления обеспечивает программный интерфейс для форматирования текста, при этом в приложении должны быть реализованы все компоненты интерфейса пользователя, делающие доступными сами операции форматирования.

Члены класса CRichEditCtrl ();

Конструктор объекта CRichEditCtrl.

BOOL Create (DWORD dwStyle, const RECT& red, CWnd* pParentWnd, UINT Nid);

Как и создание любого другого оконного объекта, создание окна расширенного редактора выполняется в два этапа:

• создается объект класса CRichEditCtrl;

• вызывается метод Create, выполняющий создание окна элемента управления и сопоставление его созданному объекту класса CRichEditCtrl. Параметры:

dwStyle - указывает комбинацию флажков, определяющих стили окна расширенного редактирования.

rect - определяет размер и расположение окна расширенного редактирования. Этот параметр может быть указан объектом Crect или структурой RECT. Напомним, что структура RECT имеет следующее описание:

typedef struct tag RECT { - LONG left; - LONG top; - LONG right; - LONG bottom; } RECT;

pParentWnd - указатель родительского окна (например, класса Cdialog).

Значение параметра не может быть равным NULL.

Nid - ID элемента управления окно расширенного редактирования.

При выполнении метода Create Windows посылает для элемента управления следующие сообщения: WM_NCCREATE, WM_VCCALCSIZE, WM_CREATE, WM_GETMINMAXINFO.

По умолчанию обработка этих сообщений выполняется соответственно следующими методами - обработчиками сообщений: CWnd::OnNcCreate, CWnd::OnNcCalcSize, CWnd::OnCreate и CWnd::OnGetMinMaxInfo. Для указания собственной обработки какого-либо сообщения следует создать класс - производный от CRichEditCtrl, и переопределить в нем метод, обработчик сообщения, а также добавить его вход в таблицу сообщений класса. (Напомним, что ClassWizard выполняет это автоматически).

Для окна расширенного редактирования могут быть применимы наряду с несколькими собственными стилями также и оконные стили, начинающиеся с префикса WS_, и стили, используемые одновременно и для окна редактирования, начинающиеся с префикса ES_.

В следующей таблице приведено описание наиболее используемых стилей.

Стиль

Описание

WS_CHILD

Окно является дочерним

WS_VISIBLE

Окно видимо

WS_DISABLED

Окно недоступно

WS_GROUP

Используется для объединения элементов

управления в группу

WS_TABSTOP

Включает элемент управления в табулируемую

последовательность (переход по клавише TAB)

ES_AUTOHSCROLL

Автоматическая прокрутка на 10 символов при

вводе символа в конце строки или переход на

следующую строку при нажатии комбинации

клавиш Ctrl+Enter (или Enter, если установлен

режим ES_WANTRETURN). Если в режиме

многострочного редактирования стиль

ESAUTOHSCROLL не установлен, то при дос-

тижении правого края окна редактирования

происходит автоматический перенос текста на

следующую строку

ES_ AUTOVSCROLL

Автоматическая прокрутка на одну строку при

нажатии комбинации клавиш Ctrl+Enter (или

Enter, ' если установлен режим

ES_WANTRETURN) в конце последней строки.

Если в режиме многострочного редактирования

стиль ES_ AUTOVSCROLL не установлен, то

при достижении нижнего края окна редактиро-

вания раздается звуковой сигнал

ES_CENTER

Центрирование текста

ES_LEFT

Выравнивание текста влево

ES_LOWERCASE

Все вводимые символы переводятся в строчные

ES_MULTILINE

Разрешен режим многострочного редактирова-

ния (по умолчанию отключен)

ES_NOHIDESEL

При потере фокуса элементом управления не

снимается выделение текста (по умолчанию

этот стиль отключен)

ES_OEMCONVERT

Все вводимые в окно редактирования символы конвертируются из кодировки ANSI в OEM, a при получении текста из окна редактирования выполняется обратное преобразование - из OEM в ANSI

ES_PASSWORD

Все вводимые в окно редактирования символы отображаются символом *

ES RIGHT

Выравнивание текста вправо

ES UPPERCASE

Все вводимые символы переводятся в прописные

ES_READONLY

Устанавливает режим только чтение

ES_WANTRETURN

Определяет режим вставки символа возврата каретки при нажатии клавиши Enter

ES_SAVESEL

При потере фокуса элементом управления не снимается выделение выделенного фрагмента текста окна редактирования

ES_SUNKEN

Отображение окна расширенного редактирова­ния в "утопленном" виде

ES_DISABLENOSCROLL

Принудительное отображение полос прокрутки

int GetLineCount () const;

Метод возвращает количество строк объекта CRichEditCtrl.

int GetLine (int nlndex, LPTSTR ipszBuffer) const;

int GetLine (int nlndex, LPTSTR IpszBuffer, int nMaxLength) const;

Метод копирует в буфер IpszBuffer строку текста (без 0-символа) объекта CRichEditCtrl и возвращает количество символов в строке.

Параметры:

nlndex - номер копируемой строки (начиная с нуля).

IpszBuffer - указатель буфера для копирования символов. Для первого метода следует указать в первом слове буфера максимальный размер буфера. Для второго метода значение максимального размера буфера заносится из параметра nMaxLength в первое слово буфера автоматически.

Отметим, что размер буфера не должен быть меньше 4 байт.

int GetFirstVisibleLine () const;

Метод возвращает номер первой видимой строки объекта CRichEditCtrl. int Linelndex (int nLine = -1) const;

Метод определяет номер символа (от начала окна редактирования) для строки объекта CRichEditCtrl.

Если параметр nLine указывает номер строки текста элемента управления, то возвращается количество символов от начала до указанной строки, если nLine = -1, то возвращается количество символов от начала до текущей строки (в которой расположен курсор ввода). Если значение nLine больше количества строк объекта CRichEditCtrl, то метод возвращает значение -1.

long LineFromChar (long nlndex) const;

Метод возвращает номер строки по указанному номеру символа. Если параметр nlndex равен -1, то возвращается номер строки, содержащей первый символ выделенного текста, или если выделение отсутствует, то возвращается номер текущей строки (в которой расположен курсор ввода).

При подсчете количества символов элемент OLE считается как один символ.

int LineLength (int nLine = -1) const;

Метод возвращает длину указанной строки. При этом для однострочного окна редактирования возвращается длина всего текста окна редактирования (в байтах), а для многострочного окна редактирования - только длина указанной строки.

Если параметр nLine равен -1, то для многострочного окна редактирования возвращается длина текущей строки за вычетом количества символов в выделенном фрагменте текста (данной строки).

Параметры:

nLine - номер символа, расположенного в строке, длина которой определяется, или -1.

void LineScroll (int nLines, int nChars = 0);

Метод позволяет прокручивать текст в окне расширенного редактирования по вертикали и/или горизонтали.

Параметры:

nLines - количество строк, прокручиваемых по горизонтали. nChars - количество символов, прокручиваемых по вертикали. Значение этого параметра игнорируется в том случае, если установлен стиль ES_RIGHT или ES_CENTER.

Если указанное количество прокручиваемых строк плюс номер текущей строки превышает общее число строк окна редактирования, то последняя строка отображается первой видимой строкой окна редактирования. void GetSel (CHARRANGE& cr) const; void GetSel (long& nStartChar, long& nEndChar) const;

Эти методы возвращают границы выделенного фрагмента текста. Пер-вый метод заносит информацию в структуру CHARRANGE, а второй - в указываемые параметры.

Параметры:

сr - ссылка на структуру CHARRANGE, в которую заносятся границы текущего выделения: начальная граница - в член структуры cpMin, а конечная - в срМах.

nStartChar - номер первого выделенного символа (начиная с 0). nEndChar - номер последнего выделенного символа.

Если номер первого выделенного символа (cpMin или nStartChar) равен 0, а номер последнего (срМах или nEndChar) равен -1, то выделено все содержимое окна редактирования. long GetSelText (LPTSTR ipBuf) const; CString GetSelText () const;

Эти методы копируют выделенный фрагмент текста и возвращают значение: первый метод - количество скопированных в буфер IpBuf символов, а второй - строку, содержащую выделенный фрагмент текста.

Отметим, что при копировании в буфер следует убедиться, что его раз­мер не меньше, чем размер выделенного фрагмента текста. WORD GetSelectionType () const;

Метод возвращает значение текущего состояния выделенного фрагмента окна редактирования, которое указывается следующими флажками:

SEL_EMPTY - нет выделенного фрагмента; SEL_TEXT - выделенный фрагмент содержит текст; SEL_OBJECT - выделенный фрагмент содержит не менее одного OLE-объекта;

SEL_MULTICHAR - выделенный фрагмент содержит более одного символа; SEL_MULTIOBJECT - выделенный фрагмент содержит более одного OLE-объекта. void Clear ();

Метод удаляет выделенный фрагмент.

Отметим, что операция удаления может быть отменена вызовом метода Undo.

void SetSel (long nStartChar, long nEndChar); void SetSel (CHARRANGE& cr);

Эти методы устанавливают выделение для указанного параметрами фрагмента.

Отметим, что метод не выполняет прокрутку к выделенному фрагменту.

void ReplaceSel (LPCTSTR ipszNewText, BOOL bCanUndo = FALSE);

Метод замещает содержание выделенного фрагмента окна редактирования на указанную строку текста IpszNewText. Если нет выделенного фрагмента, то метод вставляет указанную строку текста ipszNewText в текущую позицию курсора ввода. Параметры:

IpszNewText - указатель на строку текста, используемую для замены или вставки.

bCanUndo - значение TRUE указывает, что операция может быть отменена вызовом метода Undo. По умолчанию значение этого параметра равно FALSE.

Напомним, что для замещения всего текста окна редактирования (объекта CRichEditCtrl) также можно использовать метод CWnd::SetWindowText. void HideSelection (BOOL bHide, BOOL bPerm);

Метод позволяет отображать или скрывать текущее выделение в окне редактирования.

DWORD GetDefaultCharFonnat (CHARFORMAT& cj) const;

Метод возвращает значение dwMask структуры с/ указывающее атрибуты форматирования символов по умолчанию. Параметры:

сf- указатель структуры CHARFORMAT, содержащей атрибуты форматирования символов по умолчанию.

Структура CHARFORMAT имеет следующее описание:

typedef struct _charforraat {

UINT cbSize; // размер структуры в байтах

_WPAD -_wPadl;

DWORD dwMask; // флажки, указывающие установленные атрибуты

DWORD dwEffects; // эффекты форматирования

LONG yHeight; // высота символов

LONG yOffset; // отступ от базовой линии

COLORREF crTextColor; // цвет символов

BYTE bCharSet;

BYTE bPitchAndFamily;

CHAR szFaceName[LF_FACESIZE];

_WPAD _wPad2; } CHARFORMAT;

Член dwMask определяет, какие члены структуры содержат атрибуты форматирования, и может быть указан комбинацией следующих флажков: CFM_BOLD, CFM_COLOR, CFM_FACE, CFM_TALIC, CFM_OFFSET, CFM_PROTECTED, CFM_SIZE, CFM_STRIKEOUT, CFM_UNDERLINE.

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

CFE_AUTOCOLOR - цвет текста является цветом, возвращаемым методом GetSysColor (COLOR_WINDOWTEXT);

CFE_BOLD - символы имеют полужирное начертание; CFE_ITALIC - символы отображаются курсивом; CFE_STRIKEOUT - символы отображаются перечеркнутыми; CFE_UNDERLINE - символы отображаются подчеркнутыми; CFE_PROTECTED - символы защищены от изменения и при попытке редактирования посылается сообщение EN_PROTECTED. DWORD GetSelectionCharFormat (CHARFORMAT& cj) const;

Метод определяет атрибуты выделенного фрагмента текста окна редактирования и возвращает значение dwMask структуры CHARFORMAT для всего выделения, а параметр с/указывает структуру CHARFORMAT, определяющую атрибуты форматирования для первого символа выделенного фрагмента. DWORD GetParaFormat (PARAFORMAT& pf) const;

Метод определяет атрибуты форматирования текущего абзаца и возвращает значение члена dwMask структуры PARAFORMAT. Структура PARAFORMAT имеет следующее описание: typedef struct _paraformat {

UINT cbSize; // размер структуры в байтах _WPAD _wPadl;

DWORD dwMask; // флажки, указывающие установленные атрибуты WORD wNumbering; // определяет наличие маркированного списка WORD wReserved;

LONG dxStartlndent; // размер отступа первой строки абзаца LONG dxRightlndent; // размер отступа от правого поля LONG dxOffset; // размер отступа слева относительно начального WORD wAlignment; // выравнивания SHORT cTabCount; II число табуляций

LONG rgxTabs[MAX_TAB_STOPS]; '// позиции табуляции

} PARAFORMAT;

Член dwMask может быть указан комбинацией следующих флажков: PFM_ALIGNMEl4T - член wAlignment указывает выравнивание; PFM_NUMBERING - член wNumbering указывает маркированный список; PFM_OFFSET - член dxOffset указывает отступ;

PFM_OFFSETINDENT - член dxStartlndent указывает относительное значение отступа; PFM_RIGHTINDENT - член dxRightlndent указывает значение отступа от

правого поля;

PFM_STARTINDENT - член dxStartlndent указывает отступ первой строки; PFM_TABSTOPS - член cTabStobs и член rgxTabStops содержат описание

табуляций.

Член wAlignment определяет выравнивание и может указываться одним из следующих флажков:

PFA_LEFT

PFA_RIGHT

PFA_CENTER

Например:

PARAFORMAT Mypf; // объявление структуры myRichEditCtrl.GetParaFormat(Mypf); // заполнение структуры Mypf Mypf. wAlignment= PFA_LEFT;// изменение атрибута форматирования абзаца BOOL SetParaFormat (PARAFORMAT& pj);

Метод устанавливает атрибуты форматирования абзацев текущего выделения. Изменяются только атрибуты, указанные членом dwMask структуры PARAFORMAT.

BOOL SetDefaultCharFormat (CHARFORMAT& cf);

Метод устанавливает новые атрибуты форматирования символов, используемые по умолчанию.

BOOL SetSelectionCharFormat (CHARFORMAT& cf);

Метод устанавливает новые атрибуты форматирования выделенного фрагмента текста. Изменяются только атрибуты, указанные членом dwMask структуры CHARFORMAT.

BOOL SetWordCharFormat (CHARFORMAT& cf);

Метод устанавливает новые атрибуты форматирования выделенного слова. Изменяются только атрибуты, указанные членом dwMask структуры CHARFORMAT.

BOOL Undo 0;

Метод вызывается для отмены последней операции редактирования. BOOL CanUndo () const;

Метод определяет, может ли быть отменена последняя операция редактирования.

void EmptyUndoBuffer ();

Метод снимает undo-флажок, позволяющий отменять последнюю операцию редактирования.

long Streamln (int nFormat, EDITSTREAM& es);

Метод заполняет объект CRichEditCtrl текстом из указанного потока ввода и возвращает число прочитанных символов.

Параметры:

nFormat - флажки, определяющие формат вводимых данных:

SF_TEXT - толькотекст;

SF_RTF - текст и форматирование.

Дополнительно любой из этих флажков может быть скомбинирован с флажком SFF_SELECTTON, определяющим, что будет замещено не все содержание объекта CRichEditCtrl, а только содержание выделенного фрагмента. es - структура EDITSTREAM, описывающая входной поток.

В структуре EDITSTREAM должна быть указана функция обратного вызова, используемая для передачи данных. Она заполняет указываемый буфер текстом й может вызываться многократно до достижения конца входного потока. long StreamOut (int nFormat, EDITSTREAM& es);

Метод записывает содержание объекта CRichEditCtrl в выходной поток и возвращает число записанных символов.

Параметр nFormat может быть указан одним из следующих флажков: SFJTEXT - только текст; SF_RTF - текст и форматирование;

SF_RTFNOOBJS - текст и форматирование, замена OLE-объектов пробелами;

SF_TEXTIZED - текст и форматирование, текстовое представление OLE-объектов.

Дополнительно любой из этих флажков может быть скомбинирован с флажком SFF_SELECTION, определяющим, что будет записано не все содержание объекта CRichEditCtrl, а только выделенный фрагмент. BOOL GetModify () const;

Метод определяет, модифицировалось ли содержимое объекта CRichEditCtrl. void SetModify (BOOL bModified = TRUE);

Метод позволяет установить или снять флажок, указывающий, что объект был изменен. long FindText (DWORD dwFlags, FINDTEXTEX* pFindText) const;

Метод позволяет находить текст в окне расширенного редактирования. Он возвращает номер позиции символа следующего совпадения или, если совпадающий текст не найден, значение -1. void GetRect (LPRECT ipRect) const;

Метод позволяет определить прямоугольную область объекта CRichEditCtrl, используемую для форматирования. Первоначально, при создании объекта CRichEditCtrl, границы области форматирования совпадают с границами клиентской области окна.

void SetRect (LPCRECT ipRect);

Метод устанавливает новый размер области форматирования объекта CRichEditCtrl.

CPoint GetCharPos (long IChar) const;

Метод возвращает координаты верхнего левого угла символа, указанного параметром IChar.

void SetOptions (WORD wOp, DWORD dwFlags);

Метод позволяет изменять стили окна расширенного редактирования. BOOL SetReadOnly (BOOL bReadOnly = TRUE);

Метод позволяет устанавливать (bReadOnly=TRUE) или снимать режим только чтение для окна расширенного редактирования. long GetTextLength ();

Метод возвращает длину текста объекта CRichEditCtrl. long GetLimitText () const;

Метод возвращает значение (в байтах) максимально допустимой длины текста для объекта CRichEditCtrl.

void LimitText (long n Chars = 0);

Метод позволяет ограничить длину вводимого в окно редактирования текста. Если значение параметра nChars равно нулю, то длина текста устанавливается равной UINT_MAX байт. long GetEventMask () const;

Метод получает маску событий для объекта CRichEditCtrl. Маска событий определяет, какие сообщения объект CRichEditCtrl посылает своему родительскому окну.

DWORD SetEventMask (DWORD dwEventMask);

Метод устанавливает новую маску сообщений. void RequestResize ();

Метод инициирует сообщение EN_REQUESTRESIZE, посылаемое родительскому окну.

COLORREF SetBackgroundColor (BOOL bSysColor, COLORREF cr);

Метод устанавливает новый цвет фона объекта CRichEditCtrl и возвращает значение предыдущего цвета фона.

Параметры:

bSysColor - значение TRUE указывает, что устанавливается системное значение для цвета фона и параметр сr игнорируется. сr - описывает цвет фона.

COLORREF - это 32-битовая переменная, содержащая значения для красной, зеленой и синей составляющих RGB-цвета. Определить значение этой переменной можно с помощью макроса RGB:-COLORREF RGB( BYTE bRed, BYTE bGreen, BYTE bBlue ); BOOL SetTargetDevice (HDC hDC, long ILineWidth); BOOL SetTargetDevice (CDC& dc, long ILineWidth);

Эти методы устанавливают устройство вывода и толщину линии, используемую в режиме WYSIWYG.

Параметры:

hDC - указатель контекста устройства для нового устройства вывода. ILineWidth - толщина линии. dc - CDC для нового устройства вывода. long FormatRange (FORMATRANGE* pfr, BOOL bDisplay = TRUE);

Этот метод вызывается для форматирования фрагмента текста окна расширенного редактирования для конкретного устройства вывода. Как правило, после вызова этого метода должен следовать вызов DisplayBand. BOOL DisplayBand (LPRECT pDisplayRect);

Метод отображает отформатированную методом FormatRange часть текста окна расширенного редактирования. И текст, и выводимые OLE-объекты обрезаются прямоугольной областью, указанной параметром pDisplayRect.

void Copy (); void Cut 0; void Paste ();

Эти методы позволяют выполнить копирование и вырезание выделенного фрагмента в буфер обмена, а также вставку фрагмента из буфера обмена в окно редактирования.

void PasteSpecial (UINT nClipFormat, DWORD dvAspect = 0, HMETAFILEAMF=O);

Метод используется для реализации операции специальная вставка.

Параметр nClipFormat описывает формат буфера обмена, используемого для вставки данных в объект CRichEditCtrl. BOOL CanPaste (UINT nFormat = 0) const;

Метод определяет, можно ли вставить данные из буфера обмена.

Параметры:

nFormat - формат вставляемых из буфера обмена данных. Этот параметр может указывать как один из предопределенных форматов для буфера обмена, так и формат, зарегистрированный методом RegisterClipboardFormat.

Класс CtabCtrl

Элемент управления вкладка (tab control) позволяет приложению определить несколько страниц для одной и той же области окна или диалога. Каждая страница содержит некоторую информацию или группу элементов управления, отображаемых приложением при щелчке пользователя на соответствующем заголовке вкладки. Дополнительно для вкладок может быть установлен режим кнопки. В этом случае при щелчке пользователя на заголовке вкладки вместо отображения соответствующей страницы будет выполнена предписанная этой кнопке команда.

Как правило, вкладки создаются автоматически при создании объектов классов CPropertySheet\H CPropertyPage.

Класс CTabCtrl обеспечивает программную поддержку управления вкладками.

Члены класса CTabCtrl 0;

Конструктор объекта CTabCtrl.

BOOL Create (DWORD dwStyle, const RECT& red, CWnd* pParentWnd, UINT nlD);

Этот метод создает окно элемента управления вкладка и сопоставляет его с объектом класса CTabCtrl. Параметры:

dwStyle - комбинация флажков, определяющих стиль вкладки. rect - указывает размер и расположение вкладки. pParentWnd - указатель родительского окна. nlD - ID ресурса вкладка.

Элементу управления вкладка могут быть назначены стили, указываемые следующими флажками:

TCS_BUTTONS - отображает вкладки в виде кнопок; TCS_FIXEDWIDTH - делает все вкладки одинаковыми по ширине. Этот

стиль нельзя использовать одновременно со стилем

TCS_RIGHTJUSTIFY; TCS_FOCUSNEVER - определяет, что вкладка не может получить фокус ввода;

TCS_FOCUSONBUTTONDOWN - определяет, что вкладка получает фокус ввода при щелчке мышью. Этот стиль как правило используется совместно со стилем TCS_BUTTONS;

TCS_FORCEICONLEFT - помещает пиктограмму слева от надписи;

TCS_FORCELABELLEFT - выравнивает и пиктограмму и надпись влево;

TCS_MULTILINE - отображение заголовков вкладки в несколько рядов (по умолчанию вкладка отображается одним рядом);

TCS_OWNERDRAWFIXED - определяет, что родительское окно отрисовывает вкладки в классе элемента управления;

TCS_RIGHTJUSTIFY - выравнивает заголовки вкладки вправо, (по умолчанию заголовки вкладки в каждом ряду выравнены влево);

TCS_SHAREIMAGELISTS - определяет разделяемый список изображений вкладки (не разрушаемый одновременно с удалением вкладки);

TCS_TOOLTIPS - для заголовков вкладки определены вплывающие строки подсказки;

TCS_TABS - заголовки вкладки отображаются обрамленные рамкой (стиль по умолчанию);

TCS_SINGLELINE - заголовки вкладки отображаются в одну строку с возможностью их прокрутки (стиль по умолчанию);

TCS_RAGGEDRIGHT - ширина ряда вкладки не увеличивается до ширины

всего элемента управления вкладка (стиль по умолчанию). Дополнительно вкладке, как и любому оконному объекту, могут быть

присвоены следующие стили: WS_CHILD, WS_VISIBLE, WS_DISABLED,

WS_GROUP, WS_TABSTOP.

HIMAGELIST Getlmagelist () const;

Метод возвращает указатель на список изображений, ассоциированный

со вкладкой, или NULL.

CImageList * SetlmageList (CImageList * plmageList);

Метод устанавливает для вкладки новый список изображений, ассоциированный со вкладкой, и возвращает указатель на предыдущий список изображений или NULL.

int GetltemCount () const;

Метод возвращает количество заголовков во вкладке.

BOOL Getltem (int nltem, TCJTEM* pTabCtrlltem) const;

Метод возвращает в структуре ТС_1ТЕМ информацию о заголовке

вкладки.

Параметры: nltem - индекс элемента вкладки (начиная с нуля).

pTabCtrlltem - указатель на структуру TC_ITEM.

Структура ТС_1ТЕМ имеет следующее описание:

typedef struct _TC_ITEM {

UINT mask; // комбинация флажков, определяющая

// используемые атрибуты UINT lpReservedl; UINT lpReserved2; LPSTR pszText; // текст элемента вкладки или буфер для получения

// текста

int cchTextMax; // размер буфера int iImage; LPARAM lParam; // 4-байтовое значение, ассоциируемое

//со вкладкой } ТС_1ТЕМ;

BOOL Setltem (int nltem, TCJTEM* pTabCtrlltem);

Метод позволяет изменить атрибуты заголовка вкладки. BOOL GetltemRect (int nltem, LPRECT ipRect) const;

Метод определяет координаты прямоугольной области, ограничивающей указанный параметром nltem заголовок элемента управления вкладка. int GetCurSel () const;

Метод возвращает индекс текущего заголовка вкладки или -1, если нет выбранного заголовка.

int SetCurSel (int nltem);

Метод устанавливает новый выбранный заголовок вкладки и возвращает значение предыдущего выбранного элемента или -1.

Отметим, что элемент управления вкладка не посылает при этом сообщений TCN_SELCHANGING или TCN_SELCHANGE. А при щелчке мышью или изменении текущей вкладки с помощью клавиатуры эти сообщения посылаются, используя сообщение WM_NOTIFY. CSize SetltemSize (CSize size);

Метод определяет новый размер элемента управления вкладка и возвращает предыдущие ширину и высоту (в пикселях). int GetRowCount () const;

Метод возвращает количество рядов во вкладке. CWnd* GetTooItips () const;

Метод возвращает указатель на элемент управления всплывающая строка подсказки (tool tip) или NULL.

Соседние файлы в папке VC++Баженова