Visual C++. Описание стандартных классов
Страница 11.


 
SetModifiedFlag
void SetModifiedFlag(BOOL bModified = TRUE);
Аргументы
"sectiontableheader"bModified - флаг, указывающий, вносились ли в документ изменения.
Описание
Данная функция вызывается после внесения любых изменений в документ. Вызов данной функции после внесения любого изменения гарантирует, что при закрытии данного документа приложение выведет диалоговое окно с запросом о том, нужно ли сохранять внесенные в документ изменения. Обычно в качестве аргумента данной функции используется установленное по умолчанию значение TRUE. Чтобы пометить данный документ как чистый (неизмененный), вызовите данную функцию с аргументом bModified, имеющим значение FALSE.
UpdateAllViews
void UpdateAllViews(CView* pSender, LPARAM lHint = 0L, CObject* pHint = NULL);
Аргументы
"sectiontableheader"pSender - указатель на объект класса представления, вносящий изменения в данный документ, или NULL, если необходимо внести изменения во все объекты класса представления, связанные с данным документом.
"sectiontableheader"lHint - содержит информацию о вносимых изменениях.
"sectiontableheader"pHint - указатель на объект, содержащий информацию о вносимых изменениях.
Описание
Данная функция вызывается после внесения изменений в документ. Ее вызов должен располагаться после вызова функции SetModifiedFlag. Функция UpdateAllViews извещает все объекты класса представления, связанные с данным документом, кроме объекта класса представления на который указывает аргумент pSender, о том, что в данный объект класса документа были внесены изменения. Обычно данная функция вызывается после того, как пользователь через один из объектов класса представления внес изменения в данный документ. Функция SetModifiedFlag вызывает функцию CView::OnUpdate для каждого объекта класса представления, кроме объекта, через который было внесено изменение. При этом каждому из объектов класса представления передаются значения аргументов pHint и lHint. Эти аргументы используются для передачи информации объектам класса представления о характере изменений, внесенных в документ. Эта информация может передаваться в аргументе lHint и/или для хранения этой информации может быть создан объект класса, производного от класса CObject, указатель на который должен передаваться в аргументе pHint. Перегрузка функции CView::OnUpdate в пользовательском классе представления позволяет оптимизировать процедуру обновления содержимого окна на основе переданной данной функции информации.
CEdit
Объект класса CEdit обеспечивает функционирование элемента управления текстового поля Windows. Текстовое поле Windows представляет собой прямоугольное дочернее окно, в которое пользователь может вводить текст. Данный элемент управления может создаваться в шаблоне диалога или непосредственно в программе пользователя. В обоих случаях сначала вызывается конструктор класса CEdit, создающий объект данного класса, а затем вызывается функция Create, создающая текстовое поле Windows и связывающая его с объектом класса CEdit.
Объект класса, производного от класса CEdit может быть создан за один шаг, если в его конструкторе будет вызвана функция Create. Объект класса CEdit наследует многие возможности объекта класса CWnd. Чтобы записать текст в объект класса Cedit, используется функция CWnd::SetWindowText, а чтобы считать его оттуда используется функция CWnd::GetWindowText. Эти функции позволяют записать или считать весь текст, содержащийся в данном элементе управления даже в том случае, когда он является многострочным. В том случае, если данный элемент управления является многострочным, в нем могут использоваться следующие функции для работы с частью содержащегося в нем текста: CEdit::GetLine, CEdit::SetSel, CEdit::GetSel и CEdit::ReplaceSel.
Чтобы обработать сообщение, посылаемое текстовым полем своему родительскому окну (обычно это объект класса, производного от CDialog), добавьте соответствующий макрос в карту сообщений и создайте функцию для обработки данного сообщения. Макрос карты сообщений для данного типа сообщений имеет следующий формат:
ON_Notification(id, memberFxn)
где id - идентификатор дочернего окна элемента управления, посылающего сообщение, а memberFxn - имя функции обработки данного сообщения в классе родительского окна. Прототип функции обработки сообщения имеет следующий формат:
afx_msg void memberFxn();
Ниже приведен список макросов карты сообщений, которые могут использоваться для обработки сообщений, посылаемых данным элементом управления:
"sectiontableheader"ON_EN_CHANGE - пользователь произвел действие, которое может привести к изменению текста, содержащегося в текстовом поле. В отличие от сообщения EN_UPDATE данное сообщение посылается после того, как Windows произведет обновление экрана;
"sectiontableheader"ON_EN_ERRSPACE - для данного текстового поля не может быть выделен необходимый для него объем памяти;
"sectiontableheader"ON_EN_HSCROLL - пользователь воспользовался горизонтальной полосой прокрутки данного элемента управления. Сообщение посылается родительскому окну до обновления экрана;
"sectiontableheader"ON_EN_KILLFOCUS - данное текстовое поле потеряло фокус ввода;
"sectiontableheader"ON_EN_MAXTEXT - текущая вставка привела к превышению определенного в данном объекте максимального числа символов, что привело к ее урезанию. Данное сообщение посылается также в том случае, если текстовое поле не имеет стиля ES_AUTOHSCROLL, а количество символов в текущей строке превышает ширину текстового поля. Другим случаем, когда посылается данное сообщение, является случай, когда текстовое поле не имеет стиля ES_AUTOVSCROLL, а количество строк в нем превышает высоту текстового поля, или же текстовое поле не имеет стиля ES_AUTOHSCROLL, а количество символов в текущей строке превышает ширину текстового поля;
"sectiontableheader"ON_EN_SETFOCUS - данное текстовое поле получило фокус ввода;
"sectiontableheader"ON_EN_UPDATE - в текстовом поле будет выводиться измененный текст. Посылается после того, как элемент управления отформатирует текст, но до того, как этот текст будет выведен в текстовое поле, что позволяет изменить размеры текстового поля в случае необходимости;
"sectiontableheader"ON_EN_VSCROLL - пользователь воспользовался вертикальной полосой прокрутки данного элемента.
При создании объекта класса CEdit в диалоговом окне этот объект автоматически уничтожается при закрытии диалогового окна. То же самое происходит и в том случае, когда объект класса CEdit создается в шаблоне диалога.
Если объекта класса CEdit создается в окне, то от пользователя может потребоваться его уничтожить. Если же объект класса CEdit создается в стеке, то он уничтожается автоматически. При создании объекта класса CEdit в куче с использованием оператора new его необходимо уничтожить после завершения работы пользователя с элементом управления Windows с использованием оператора delete. Если в объект класса, производного от CEdit, была распределена какая-либо память, то необходимо перегрузить деструктор данного класса таким образом, чтобы он освобождал эту память. Описание данного класса содержится в файле заголовка afxwin.h.
CharFromPos
int CharFromPos(CPoint pt) const;
Возвращаемое значение
В младшем слове, имеющем формат WORD, хранится индекс символа. В старшем слове, также имеющем формат WORD, хранится индекс строки.
Аргументы
"sectiontableheader"pt - координаты точки в рабочей области элемента управления, связанного с данным объектом класса CEdit.
Описание
Данная функция позволяет получить индекс ближайшего к данной точке символа, и индекс строки, в которой находится данный символ. Первая строка и первый символ имеют нулевой индекс. Данная функция может использоваться только в программах, работающих под управлением Windows 95 и Windows NT 4.0.
Clear
void Clear();
Описание
Данная функция вызывается для уничтожения текущего выделения в текстовом поле. Эта операция может быть отменена функцией Undo. Если нужно не только удалить выделение, но и поместить его в буфер обмена, используйте функцию Cut.
Cut
void Cut();
Описание
Данная функция вызывается для уничтожения текущего выделения в текстовом поле и помещения его в буфер обмена в формате CF_TEXT. Эта операция может быть отменена функцией Undo. Если выделенный текст не нужно помещать в буфер обмена, используйте функцию Clear.
LineLength
int LineLength(int nLine = -1) const;
Возвращаемое значение
Если данная функция вызывается в текстовом поле, содержащем несколько строк, возвращается размер строки, определяемой аргументом nLine, в байтах. Если в данном текстовом поле выведена только одна строка, значение аргумента игнорируется.
Аргументы
"sectiontableheader"nLine - определяет индекс символа в строке, длину которой требуется определить. Если данный аргумент имеет значение -1, определяется размер текущей строки (строки, в которой расположен текстовый курсор), исключая размер выделенного в ней фрагмента текста, если таковой имеется. Если данная функция вызывается для текстового поля, содержащего только одну строку, значение этого аргумента игнорируется.
Описание
Данная функция позволяет получить размер строки в текстовом поле, содержащей указанный символ. Для получения индекса символа по номеру строки используется функция LineIndex.
 
« Предыдущая статья   Следующая статья »