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


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


// Расфиксируем блок памяти GlobalUnlock(hglbClipData); } } } // Закрываем Clipboard CloseClipboard(); EndPaint(hwnd, &ps); } // Произошли изменения в цепочке окон просмотра // Clipboard case WM_CHANGECBCHAIN: { // Если идентификатор удаляемого окна просмотра // равен идентификатору следующего окна в цепочке, // запоминаем идентификатор нового следующего // окна просмотра if(wParam == (WPARAM)hwndNextViewer) hwndNextViewer = (HWND)LOWORD(lParam);

// Передаем сообщение следующему окну просмотра // по цепочке else if(hwndNextViewer) SendMessage(hwndNextViewer, msg, wParam, lParam); return 0;

} // Содержимое Clipboard изменилось, наше приложение // должно перерисовать свое окно case WM_DRAWCLIPBOARD: { // Если наше окно не последнее в цепочке, // передаем сообщение дальше по цепочке if(hwndNextViewer) SendMessage(hwndNextViewer, msg, wParam, lParam); InvalidateRect(hwnd, NULL, TRUE); return 0; } case WM_COMMAND: { switch (wParam) { case CM_HELPABOUT: { MessageBox(hwnd, "Приложение CLIPSHOW\n(C) Фролов А.В., 1995", (LPSTR)szWindowTitle, MB_OK | MB_ICONINFORMATION); return 0; } case CM_FILEEXIT: { DestroyWindow(hwnd); return 0; } default: return 0; } } // Отслеживаем изменения палитры case WM_PALETTECHANGED: { if(hwnd == (HWND) wParam) break; } case WM_QUERYNEWPALETTE: { int nChanged;

hdc = GetDC(hwnd); hOldPal = SelectPalette(hdc, hPal, (msg == WM_QUERYNEWPALETTE) ? FALSE : TRUE); nChanged = RealizePalette(hdc); SelectPalette(hdc, hOldPal, TRUE); ReleaseDC(hwnd, hdc); if(nChanged) InvalidateRect(hwnd, NULL, TRUE); return nChanged; } // При завершении работы приложения изменяем // цепочку окон просмотра Clipboard, // удаляя из нее окно нашего приложения case WM_DESTROY: { ChangeClipboardChain(hwnd, hwndNextViewer); PostQuitMessage(0); return 0; } default: break; } return DefWindowProc(hwnd, msg, wParam, lParam); } // ===================================== // Функция DrawBitmap // ===================================== void DrawBitmap(HDC hDC, int x, int y, HBITMAP hBitmap) { HBITMAP hbm, hOldbm; HDC hMemDC; BITMAP bm; POINT ptSize, ptOrg;




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



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