Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Янг Майкл Дж. -> "Visual С++ 6. Полное руководство: В 2 т.(том2)" -> 131

Visual С++ 6. Полное руководство: В 2 т.(том2) - Янг Майкл Дж.

Янг Майкл Дж. Visual С++ 6. Полное руководство: В 2 т.(том2) — Бином, 2006. — 530 c.
Скачать (прямая ссылка): vicualcc2006t2.djvu
Предыдущая << 1 .. 125 126 127 128 129 130 < 131 > 132 133 134 135 136 137 .. 173 >> Следующая

Copy ID _EDIT_ COPY COMMAND OnEditCopy
Copy ICL _EDIT COPY UPDATE COMMAND _UI OnUpdateEditCopy
Paste ID _EDIT_ PASTE COMMAND OnEditPaste
Paste ID EDIT PASTE UPDATE COMMAND _UI OnUpdateEditPaste
Примечание
Если в диалоговом окне AppWizard (Step 4) установить опцию Docking toolbar, то мастер добавит панель инструментов с кнопками команд Cut, Сору и Paste. Как и соответствующие команды меню, эти кнопки будут недоступны до тех пор, пока не будут определены обработчики сообщений. Поскольку кнопкам присваиваются те же идентификаторы, что и соответствующим командам меню, нужно определить один набор обработчиков сообщений для обработки команд меню Edit и соответствующих кнопок панели инструментов.
Обработчики сообщения command команд Cut, Сору и Paste передают выбранные данные (текст или графику) в буфер обмена. Кроме того, обработчик сообщения command команды Cut удаляет выбранные данные из документа. Обработчики сообщения update_command_ui команд Cut и Сору доступны только в том случае, если данные документа в окне представления выбраны.
Совет
Кроме того, в меню Edit для удаления выбранных данных без использования буфера обмена можно включить команду Delete или Clear, которые, хотя и не используют буфер, в меню Edit обычно группируются с командами работы с буфером.
После передачи данных в буфер их можно поместить в другое место в этом документе, в другой документ этой программы или в документ другой программы. Программой-получателем может быть программа Windows с графическим интерфейсом или консольная программа, 16-битовая программа Windows 3.1 или MS DOS. В консольную программу или программу MS DOS можно вставить только текстовые данные.
Обработчик сообщения command команды Paste вставляет содержимое буфера обмена в текущий документ. Данные могут быть получены из текущего документа, из другого документа внутри этой программы или из другой программы (с графическим интерфейсом или консольной, 16-битовой программы Windows 3.1 или MS DOS). Текстовые или графические данные обычно добавляются там, где курсор отмечает точку вставки текста в окне представления (например, в приложении текстового процессора). В противном случае программа может вставить графические данные в произвольное место окна представления и выделить их для перемещения в желаемую позицию. Такую возможность полезно реализовать в программе рисования.
Обработчик сообщения update_command_ui для команды Paste доступен, если буфер содержит данные в соответствующем формате. Техника тестирования отдельных форматов рассмотрена ниже.
Способ функционирования обработчиков command и update_command_UI зависит от формата переносимых данных. Подробности рассматриваются в следующих разделах.
Использование
буфера обмена для переноса текста
Рассмотрим использование буфера для пересылки простого текста, т. е. текста, состоящего из простого потока печатных символов ANSI, не содержащего внедренных форматирующих кодов, например, текста, отображаемого редактором Windows Notepad. Чтобы переслать текст, содержащий собственные коды форматирования (например, форматированный текст, отображаемый в текстовом процессоре), применяются способы, описанные в параграфе "Использование буфера обмена для передачи данных зарегистрированных форматов". Вы узнаете, как переслать текст в буфер, а затем получить текст из буфера.
Примечание
Если класс представления программы наследуется от MFC-класса CEditview (включающего текстовый редактор, рассмотренный в гл. 10), то нет необходимости писать строки для поддержки команд Cut, Сору и Paste. Нужно только убедиться, что меню программы Edit содержит эти команды и они имеют идентификаторы, приведенные в табл. 23.1. Класс CEditview предоставляет полный набор обработчиков сообщений для этих команд.
Добавление текста в буфер обмена
Текст переносится в буфер обмена командами Cut и Сору. Для них обработчик сообщений иРDATe_commanD_ui доступен только в том случае, если выбран блок текста, как показано в примере ниже.
void CProgView::OnUpdateEditCut (CCmdUI* pCmdUI) (
//TODO: Здесь добавьте собственный код обработчика pCmdUI->Enable (m_IsSelection);
}
void CProgView::OnUpdateEditCopy (CCmdUI* pCmdUI) {
//TODO: Здесь добавьте собственный код обработчика pCmdUI->Enable (m_IsSelection) ;
}
Предполагается, что mlsSelection — это переменная класса представления типа bool, которой при выборе блока текста присваивается значение TRUE.
Обработчики сообщений command для команд Cut и Сору добавляют в буфер обмена выделенный блок текста. При этом выполняются такие действия.
1. Вызов функции Win32 API -. -.GlobalAlloc для выделения блока памяти, достаточного для размещения текста, копируемого в буфер.
2. Вызов функции Win32 API : -.GlobalLock для блокирования блока памяти и получения его указателя.
3. Копирование текста в выделенный блок памяти.
4. Вызов функции Win32 API : :GlobalUnlock для освобождения выделенной памяти.
5. Вызов функции OpenClipboard класса CWnd для открытия буфера обмена.
6. Вызов функции Win32 API : : EmptyClipboard для удаления текущего содержимого буфера.
Предыдущая << 1 .. 125 126 127 128 129 130 < 131 > 132 133 134 135 136 137 .. 173 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100