Форум: "Основная";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];
ВнизИконка кнопки закрытия окна Найти похожие ветки
← →
Almaz © (2004-03-18 02:24) [0]Вопрос в следующем: как получить изображение кнопки закрытия окна ? Так, например, для того чтобы получить кнопку минимизации можо воспользоваться функцией LoadBitmap(0, MAKEINTRESOURCE(OBM_REDUCE)); но для кнопки закрытия такой константы (OBM_XXX) я не нашел. OBM_CLOSE возвращает не кнопку закрытия а иконку системного меню.
← →
Defunct © (2004-03-18 03:16) [1]Что-то мне кажется нет такого ресурса.. или во всяком случае с помощью LoadBitmap его получить низя..
I := 0;
X:=0; Y:=0;
While Y<Image1.Height Do
Begin
Bitmap.ReleaseHandle;
Bitmap.Handle :=
LoadBitmap(0, MAKEINTRESOURCE(OBM_Close-I+21100));
If X<Image1.Width Then X := X + Bitmap.Width+1 Else
Begin
Y:=Y+Bitmap.Height+1;
X:=0;
End;
Image1.Canvas.Draw(X,Y, Bitmap);
Inc(i);
End;
BitMap.Free;
Мне видится, что скопировать CopyRect со Screen.DC или с Form.DC будет самым простым решением.
← →
Almaz © (2004-03-18 03:46) [2]
> Что-то мне кажется нет такого ресурса..
Ресурс-то должен быть, вот только как его достать ???
> или во всяком случае с помощью LoadBitmap его получить низя..
А вот в этом-то как раз и все проблема :(
> Мне видится, что скопировать CopyRect со Screen.DC или с
> Form.DC будет самым простым решением.
Я пишу на API - и при этом перехватываю WM_NCPAINT, поэтому тут есть определенные проблемы с таким решением ...
← →
Defunct © (2004-03-18 04:09) [3]попробуйте GetSystemMenu
← →
MBo © (2004-03-18 05:17) [4]Может, проще нарисовать? (Marlett 0x72) - вот только с темами XP могут быть проблемы...
← →
MBo © (2004-03-18 05:59) [5]или DrawFrameControl c DFCS_CAPTIONCLOSE
← →
Игорь Шевченко © (2004-03-18 12:14) [6]Система получает эти битмапы рисованием DrawFrameControl на этапе инициализации. Достать их через LoadBitmap невозможно (LoadBitmap перехватывает обращение к OBM_xxxxx идентификаторам и для ряда кнопок заменяет старые идентификаторы на новые (OBI_xxxxx)). Для OBM_CLOSE эквалентная замена на OBI_CLOSE не производится.
Поэтому выход - создать битмап, нарисовать в его контекст DrawFrameControl нужные изображения (для нажатой, отжатой и недоступной кнопки) а дальше пользоваться своим созданным битмапом.
← →
Vuk © (2004-03-18 12:35) [7]Похожие символы есть в marlett.ttf
← →
Vuk © (2004-03-18 12:43) [8]Кстати, есть у меня подозрение, что именно эти символы и используются системой для отрисовки на кнопках. Наблюдал ситуацию, когда при замене этого шрифта кнопки выглядели совсем по-другому.
← →
Игорь Шевченко © (2004-03-18 13:20) [9]Vuk © (18.03.04 12:43)
Именно этот шрифт и используется в реализации DrawFrameControl.
Но лучше использовать саму функцию, так как в WinXP и выше она перехватывается в uxtheme.dll
← →
Almaz © (2004-03-19 00:26) [10]
> MBo © (18.03.04 05:59) [5]
> Игорь Шевченко © (18.03.04 12:14) [6]
Спасибо - то что нужно. Про DrawFrameControl я и забыл :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.038 c