Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];

Вниз

Всплывающие сообщения   Найти похожие ветки 

 
Ksenom   (2006-03-09 10:33) [0]

Есть вопрос…. Многие видели вплывающие сообщения Miranda, Qip, Opera и.д.
Подскажите пожалуйста каким образом это реализовано и есть ли для этого нормальные компоненты.
Уже неделю в сети таскаюсь а так и не нашёл нормального ответа на данный вопрос.


 
Жуков Олег   (2006-03-09 10:51) [1]

Это можно сделать простой формой, показывать с флагом SW_SHOWNOACTIVATE;

PopupForm: TForm;
...
ShowWindow(PopupForm.Handle, SW_SHOWNOACTIVATE);
...
Прятать можно по таймеру.


 
Ksenom   (2006-03-09 11:11) [2]

Просто форма не устраивает... Нужно что то посимпотичнее... Как у Миранды....
О... может у кого есть листинг мирандовского плагина для окошек всплывающих


 
AbrosimovA   (2006-03-09 14:11) [3]

Компонент WPTaskbarNotifier


 
Eraser ©   (2006-03-09 15:29) [4]


> Ksenom   (09.03.06 11:11) [2]

[1] + TArtForm (ищи на torry.net)


 
Ksenom   (2006-03-09 16:17) [5]

Жаль... всё не то...


 
Cash ©   (2006-03-09 16:41) [6]

Е мое!!! :(((
Delphi  это же не набор VCL и плагинов - это среда разработки!!!!
Если кто еще не просвещен в эту истину - офицательно уведомляю!

Если чего то нет, или то, что есть не устраивает - берем, достаем руки из
карманов, кладем их на устройство интерпритации мыслей и интерпретируем
все, что только вздумается! ;)
А иначе любитель какой то получается (хочу чтобы было но не хочу учиться)

Если надо всплывающее окошко в проге, т. е. на территории формы,
там куча всяких методов.
А если надо, чтоб message вылезал на рабочем столе, на еще и небось
со всякими там картинками или еще какими фичами, то берем форму,
если не устраивает вид заголовка - ставим BorderStyle в dsNone,
переписываем у нее процедуру обработки сообщений (из поста [1]),
а в обработчике OnShow ставим координаты и говорим, что делать.
И все!!! :Р
Форму можно убирать по рецепту [1] или по клику на кнопочке, для
этого тоббой приделанной.


 
kernel ©   (2006-03-09 17:59) [7]

Это что-ли как в Касперском?


 
Ksenom   (2006-03-10 12:17) [8]

Cash, будте уверенны, виды формы, появление и фичи мне знакомы.
Показать окно я могу, и не только показать ))
По поводу "любитель", согласен... не все богами рождаются... но учиться желание есть и именно за этим сюда я и пришёш...
Критиковать каждый может... я же прошу научить... и подсказать...


 
antonn ©   (2006-03-10 13:27) [9]

Ksenom   (10.03.06 12:17) [8]
хоть скриншот то покажи, этих "окошек Марандовских" :)
может нужно с альфаканалом, вот примерчик есть: http://kladovka.net.ru/index.cgi?pid=list&rid=318


 
Cash ©   (2006-03-10 14:56) [10]

Ksenom   (10.03.06 12:17) [8]:
Такой ответ меня более чем радует (наверное и других тоже),
а то я уж думал, что тут еще один последователь Ken-а завелся. :)))

Присоединяюсь к мудрейшей мысли antonn-а, надо бы визуально
осязаемый образ того вида, а то прям глазы разбегаются от
обилия идей, что посоветовать! :)


 
Кашперук Иван   (2006-03-10 17:39) [11]

По-меому, если я правильно понимаю как работают эти окошки в Миранде, у них просто меняется последовательно прозрачность с полностью прозрачного до полностью непрозрачного.
За счет этого достигается красивый эффект его появления на экране.

Правда, их там может появлятся много - одно над другим - для этого, просто создавайте формы динамически - и перед отображением [1] рассчитывайте координаты их расположения.

Удачи!


 
Кашперук Иван   (2006-03-10 17:56) [12]

Скажу даже больше - рассчет координат сводится к двум строкам, а все отображение - к 5

     Form := TYourFormClass.Create(nil);
     Form.Top := Screen.WorkAreaHeight - Form.Height;
     Form.Left := Screen.WorkAreaWidth - Form.Width;
     ShowWindow(Form.Handle, SW_SHOWNOACTIVATE);
     Application.ProcessMessages;

Работает прекрасно :)
Правда без прозрачности


 
antonn ©   (2006-03-10 18:21) [13]

да, в общем то, и прозрачность не сложно

type
 TSetLayeredWindowAttributes = function(hWnd : HWND; crKey : DWORD;bAlpha : Byte; dwFlags : DWORD) : BOOL; stdcall;

procedure TMainForm.trans(i:byte);
var
 SetLayeredWindowAttributes : TSetLayeredWindowAttributes;
 hUser32 : HINST;
begin
  SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED);
 hUser32 := LoadLibrary("user32.dll");
 if hUser32 <> 0 then
 begin
   try
     SetLayeredWindowAttributes := GetProcAddress(hUser32, "SetLayeredWindowAttributes");
     if Assigned(@SetLayeredWindowAttributes) then
       SetLayeredWindowAttributes(Handle, 0, i,  LWA_ALPHA);
   finally                                            
     FreeLibrary(hUser32);
   end;
 end;  
end;


 
Кашперук Иван   (2006-03-11 21:56) [14]

2 antonn: Да уж, это по-моему уже довольно сложно.

я обычно обхожусь просто установкой AlphaBlend и AlphaBlandValue (в 130)


 
Ksenom   (2006-03-17 17:19) [15]

Всех благодарю... вы мне помогли советом...
Отдельное спасибо "Кашперук Иван" и "antonn"



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.012 c
2-1144441233
Gamer
2006-04-08 00:20
2006.04.23
Проблема с нетипизированным файлом


3-1140537594
parovoZZ
2006-02-21 18:59
2006.04.23
Значение автоинкремнтного поля и ADOQuery


2-1144492883
Std
2006-04-08 14:41
2006.04.23
TstringList


6-1136934287
Кефир87
2006-01-11 02:04
2006.04.23
HTTP клиент с помощью TClientSocket


15-1143957917
boriskb
2006-04-02 10:05
2006.04.23
Интересно мнение посетителей





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский