Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1079610622
for___
2004-03-18 14:50
2004.04.04
Как в Treeview узнать...


9-1063362059
Тима
2003-09-12 14:20
2004.04.04
Помогите плиз!


3-1078726512
dimm
2004-03-08 09:15
2004.04.04
Уважаемые мастера помогите реализовать быстрый поиск в базе данны


3-1078348280
yaric
2004-03-04 00:11
2004.04.04
Как ограничит кол-во отбираемых в TQuery


7-1074418223
DENNIS
2004-01-18 12:30
2004.04.04
Закрыть доступ





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский