Вот пишу чат, необходима система оповещения пользователя о получении нового сообщения, стоит две задачи :
1 — Поместить окно на таскбар
2 — Мигать им пока пользователь не активирует окно
Первую задачу пробовал решить путем :
...
procedure TfrmPrivateMesage.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.ExStyle := Params.ExStyle or WS_Ex_AppWindow;
Params.WndParent := frmMain.Handle;
end;
...
вроди все ок, но если главное окно теряет фокус, или нидайбог в трей сворачивается, все, окошечко скрывается с таскбара...
p/s/ окна создаются динамически
Заранее спасибо всем кто ответит !!!
--- я тут новичек , не судите строго , поиск юзал

... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, BaZ, Вы писали:
BaZ>Вот пишу чат, необходима система оповещения пользователя о получении нового сообщения, стоит две задачи :
BaZ>1 — Поместить окно на таскбар
BaZ>2 — Мигать им пока пользователь не активирует окно
BaZ>Первую задачу пробовал решить путем :
BaZ>...
BaZ>procedure TfrmPrivateMesage.CreateParams(var Params: TCreateParams);
BaZ>begin
BaZ> inherited;
BaZ> Params.ExStyle := Params.ExStyle or WS_Ex_AppWindow;
BaZ> Params.WndParent := frmMain.Handle;
BaZ>end;
BaZ>...
BaZ>вроди все ок, но если главное окно теряет фокус, или нидайбог в трей сворачивается, все, окошечко скрывается с таскбара...
BaZ>p/s/ окна создаются динамически
BaZ>Заранее спасибо всем кто ответит !!!
BaZ>--- я тут новичек , не судите строго , поиск юзал
Плыл, плыл, как кто то уже оговорил на этом форуме, и у утонул на береге

Проставь Params.WndParent := 0;
procedure TfrmPrivateMesage.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.ExStyle := Params.ExStyle or WS_Ex_AppWindow;
Params.WndParent := 0;
end;
Мигать будем так (просто пример, тюнай под свои потребности, главное — идея

):
type
TFlashWindowProc = function (hWnd: HWND; bInvert: BOOL): BOOL; stdcall;
TFlashWindowExProc = function (var pfwi: FLASHWINFO): BOOL; stdcall;
const
cntUser32Library : HMODULE = 0;
FlashWindowProc : TFlashWindowProc = nil;
FlashWindowExProc : TFlashWindowExProc = nil;
function User32Library : HMODULE;
begin
if cntUser32Library = 0 then
cntUser32Library := SafeLoadLibrary (user32);
Result := cntUser32Library;
end;
procedure InitUser32Procs;
begin
if User32Library <> 0 then begin
FlashWindowProc := GetProcAddress (User32Library, 'FlashWindow');
FlashWindowExProc := GetProcAddress (User32Library, 'FlashWindowEx');
end;
end;
procedure MakeWindowFlash (Wnd : HWND);
var
K : Integer;
FlashInfo : TFlashWInfo;
begin
if Assigned (FlashWindowExProc) then begin
FillChar (FlashInfo, SizeOf (FlashInfo), 0);
FlashInfo.cbSize := SizeOf (FlashInfo);
FlashInfo.hwnd := Wnd;
FlashInfo.dwFlags := FLASHW_ALL;
FlashInfo.uCount := 3;
FlashInfo.dwTimeout := 70;
FlashWindowExProc (FlashInfo);
end else
if Assigned (FlashWindowProc) then begin
for K := 1 to 8 do begin
FlashWindowProc (Wnd, True);
Sleep (40);
FlashWindowProc (Wnd, False);
end;
end;
end;
initialization
InitUser32Procs;
Здравствуйте, Danchik,
Спасибо огромное ) буду тестить
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Все очень хорошо, но фот помещаем компонент TteForm и начинаются чудеса (((
кто может посмотреть?
компонент из библиотеки ThemeEngine
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, BaZ, Вы писали:
BaZ>Все очень хорошо, но фот помещаем компонент TteForm и начинаются чудеса (((
BaZ>кто может посмотреть?
BaZ>компонент из библиотеки ThemeEngine
а чудеса следующие:
показывает окно свернутое в делфевом стиле тоесть заголовок и ширина пикселей 150 ((
а надо бы чтоб оно истинный размер окна показывало .. вот
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>