Операционная система Microsoft Windows 3.1 для программиста. Дополнительные главы

Защищенная мобильная связь от - Мир, helpix по материалам cryptophone.ru. |

Листинг 2.11. Файл cliprndr/cliprndr.cpp - часть 3


// Инициируем копирование в текстовом формате SendMessage(hwnd, WM_RENDERFORMAT, CF_TEXT, 0L); CloseClipboard(); return 0; } // Копируем данные в нужном формате case WM_RENDERFORMAT: { // Работаем только с текстовым форматом if(wParam != CF_TEXT) return 0;

hglbTextCopyBuf = GlobalAlloc(GHND, sizeof(szClipboardText) + 1); if(hglbTextCopyBuf != NULL) { lpTextCopy = (LPSTR)GlobalLock(hglbTextCopyBuf); if(lpTextCopy != NULL) { lstrcpy(lpTextCopy, szClipboardText); GlobalUnlock(hglbTextCopyBuf);

// Фактическая запись данных SetClipboardData(wParam, hglbTextCopyBuf); } else MessageBox(hwnd, "Мало памяти", (LPSTR)szWindowTitle, MB_OK | MB_ICONHAND); } else MessageBox(hwnd, "Мало памяти", (LPSTR)szWindowTitle, MB_OK | MB_ICONHAND); return 0; } case WM_DESTROY: { if(hglbTextPasteBuf != NULL) GlobalFree(hglbTextPasteBuf); PostQuitMessage(0); return 0; } default: break; } return DefWindowProc(hwnd, msg, wParam, lParam); }

В приложении CLIPRNDR использованы рассмотренные нами приемы. Так как данные, предназначенные для записи в Clipboard, определены статически, приложение не освобождает занимаемую ими память и, соответственно, не обрабатывает сообщение WM_DESTROYCLIPBOARD.

Файл cliprndr.hpp содержит определения констант (листинг 2.12).




Начало  Назад  Вперед



Книжный магазин