![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
AddFontResource [D6, Win95/98]
AL2002 © (2002-09-17 17:40:00)Сабж, даже без WM_FONTCHANGE, делает фонт доступным всем прогам, а мне нужно, чтоб он был доступен только моей программе.
Что делать?
Рыжик (2002-09-20 13:59:00) [1]Вот здесь msdn-online
http://msdn.microsoft.com/
AL2002 (2002-09-20 10:31:00) [2]>MBo © (19.09.02 21:56)
>в MSDN
А это что такое?
MBo (2002-09-19 21:56:00) [3]в MSDN
AL2002 (2002-09-19 21:44:00) [4]Вот такие функции я отрыл:
AddFontResourceA, AddFontResourceW, AddFontResourceEx, AddFontResourceExA, AddFontResourceExW
В хелпе — дуля с маком. Где взять описания параметров?
AL2002 (2002-09-19 15:04:00) [5]>Рыжик © (18.09.02 15:41)
А вот это вариант.
Рыжик, ты где такой хелп достала?
Рыжик (2002-09-18 15:41:00) [6]Можно вместо AddFontResource использовать AddFontResourceEx c FR_PRIVATE вторым параметром.
FR_PRIVATE Specifies that only the process that called the AddFontResourceEx function can use this font. When the font name matches a public font, the private font will be chosen. When the process terminates, the system will remove all fonts installed by the process with the AddFontResourceEx function
AL2002 (2002-09-18 14:17:00) [7]Ketmar © (18.09.02 14:09)
Спас.
MegaBass (2002-09-18 14:16:00) [8]у каждой формы (контрола) есть метод Perform
по нему "мессидж" должен обработать только он.
ну а если не подойдет то вместо
SendMessage(...) лучше использовать PostMessage Виснуть ничего не будет.
Хендлы есть у каждого оконного контрола и они уникальные.
Ketmar (2002-09-18 14:09:00) [9]собственно, в точности так, как вы написали выше. или все же посылайте так:
SendMessage(Application.Handle, WM_FONTCHANGE, 0, 0);
мне кажется, что так идеологически правильней и выдержанней. %-) хотя - фиг его знает. попробуйте оба способа. что заработает, то и используйте %-)
Satanas Nobiscum! 18-Sep-XXXVII A.S.
AL2002 (2002-09-18 12:52:00) [10]> примерно так.
А как не примерно, а точно?
>не понятно, зачем вам такой хитрый финт,- но если надо - пожалуйста %-)
Когда делаю HWND_BROADCAST — скачут все приложения. Ну и замедляется, конечно. И шрифты, физически не установленные, становятся доступными. А это не есть хорошо. Вот.
То как послать сообщение именно текущей форме? А то я такие вещи, как хендлы, вообще не понимаю. Подскажете?
Ketmar (2002-09-18 12:38:00) [11]примерно так. не понятно, зачем вам такой хитрый финт,- но если надо - пожалуйста %-)
Satanas Nobiscum! 18-Sep-XXXVII A.S.
AL2002 (2002-09-18 11:40:00) [12]SendMessage ( Form1.Handle, WM_FONTCHANGE, 0, 0 );
Так, что ли?
Ketmar (2002-09-18 10:00:00) [13]ну и пишите себе хэндл вашего приложения или формы (Application.Handle или Form1.Handle соответственно).
Satanas Nobiscum! 18-Sep-XXXVII A.S.
AL2002 (2002-09-17 18:12:00) [14]Не-не. Не то.
Я тут долго ковырялся, пока смог имена неустановленных шрифтов повыдёргивать. Не проканает.
И ещё.
Сабж делает фонт доступным всем прогам после команды
SendMessage ( HWND_BROADCAST, WM_FONTCHANGE, 0, 0 );
даже если она была самая первая и один раз.
HWND_BROADCAST - это все TopLevel windows.
А как послать это сообщение только моей форме?
Если через хендл, то какой хендл вместо HWND_BROADCAST писать?
Поскажите.
MegaBass (2002-09-17 18:06:00) [15]Может быть енто наворот но можно попробовать через
var
oldFont, myfont:hfont;
begin
myfont := CreateFontIndirect(...);
oldfont := SelectObject(GetDC(Handle), myfont);
//do something
SelectObject(GetDC(Handle), oldfont);
end;