AZJIO
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору AkulaBig Цитата: сейчас иконка наоборот задрана вверх | Вот и будет маленькая задрана вверх, а не по центру. Поэтому в новую версию можно засунуть только если нарисовать на светлом фоне иконку в центре. Вот в исходнике рисование кнопки, тот же кнотекст устройства вкладки - дескриптор hDC, тот же совместимый DC в памяти - hdcMemory. И BitBlt с флагом копирования SRCCOPY. Только используется дескриптор hBmp1, 2, 3. И вот вместо их загрузки из растрового файла можно было бы нарисовать 1 раз функциями рисования и также использовать дескриптор для копирования их на поверхность вкладки. Строка 380. Код: void DrawCloseButton() { HDC hDC = GetWindowDC(hTab); HDC hdcMemory = CreateCompatibleDC(hDC); if (idCloseImg == IDR_CLOSETAB) SelectObject(hdcMemory, hBmp1); else if (idCloseImg == IDR_CLOSETABHOVER) SelectObject(hdcMemory, hBmp2); else if (idCloseImg == IDR_CLOSETABPUSH) SelectObject(hdcMemory, hBmp3); BitBlt(hDC, rcCloseButton.left, rcCloseButton.top, closeWidth, closeHeight, hdcMemory, 0, 0, SRCCOPY); ValidateRect(hTab, &rcCloseButton); DeleteDC(hdcMemory); ReleaseDC(hTab, hDC); } | Вот загрузка иконок из ресурсов, функции LoadBitmapA(), строка 771 Код: hBmp1 = LoadBitmapA(hInstanceDLL, MAKEINTRESOURCEA(IDR_CLOSETAB)); hBmp2 = LoadBitmapA(hInstanceDLL, MAKEINTRESOURCEA(IDR_CLOSETABHOVER)); hBmp3 = LoadBitmapA(hInstanceDLL, MAKEINTRESOURCEA(IDR_CLOSETABPUSH)) ; | Я не пишу на Си, но это могло бы выглядеть примерно так | Всего записей: 4577 | Зарегистр. 03-05-2006 | Отправлено: 13:30 03-12-2024 | Исправлено: AZJIO, 14:26 03-12-2024 |
|