Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.13;
Скачать: CL | DM;

Вниз

Систем.мессага поверх всех окон   Найти похожие ветки 

 
apihelp   (2004-05-10 16:10) [0]

Подскажите пожалуста как можно реализовать в коде что бы сервер который находится в скрытом состоянии мог выкинуть мессагу поверх всех окон да еще что бы она неперекрывалась окнами(попловок). Или проще. главной форме позволительно перекрыватся в вот второй форме, которую показывает главная, нужно быть поплавком. У меня неполучается, главная форма неперекрывает вторую а вот все остальные легко перекрывают их обеих.


 
apihelp   (2004-05-10 21:48) [1]

Вобщем кое что удалось надумать уже получилось лучше, но как бы сделать так что бы от Desktop"а кинуть системную мессагу да так что бы она была всегда наверху?
unit Unit2;

....
   procedure FormDeactivate(Sender: TObject);
 private
   procedure CreateParams(var Params: TCreateParams); override;
 public
   { Public declarations }
 end;

var
 Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.CreateParams(var Params: TCreateParams);
begin
 inherited CreateParams(Params);
 Params.WndParent := GetDesktopWindow;
end;
procedure TForm2.FormDeactivate(Sender: TObject);
begin
with Form2 do
SetWindowPos(Handle, HWND_TOPMOST, 0, 0,
0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end;

end.


 
apihelp   (2004-05-10 22:45) [2]

Блин толи это настолько легко что никто не хотит подсказать толи никто незнает. Смотрел подобные темы везде только вопрос, а ответов х.


 
Игорь Шевченко ©   (2004-05-10 22:47) [3]


> что бы сервер который находится в скрытом состоянии мог
> выкинуть мессагу поверх всех окон да еще что бы она неперекрывалась
> окнами(попловок).


MessageBox ?


 
apihelp   (2004-05-10 23:02) [4]

MessageDlg("lylyly"и т.п.) - это конечно понятно.
Дело в том что Messagebox то кинуть не сложно , но нужно что бы он/оно был поверх всех окон. Вот с этим проблемы. Мне это видится так: нужно кинуть мессагу от Desktop"а а как это сделать?
В предидущем примере я переназначил родителя на Desktop. Но это решило проблему для формы, а как быть с messagebox?


 
apihelp   (2004-05-10 23:10) [5]

Да и еще проблема пока мессага активна программа не активна можно ли этого избежать? Думаю что нет. Поэтому наверное придется делать из формы муляж messagebox.


 
Nick Denry ©   (2004-05-10 23:13) [6]

MB_TOPMOST + (хотя можно и без него) MessageBoxIndirect:

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var result : LONGBOOL;
MSGBIn : TMsgBoxParamsA;  
res : integer;
begin

MSGBIn.cbSize := SizeOf(MSGBIn);
MSGBIn.hInstance := hInstance;
with MSGBIn do begin
hwndOwner := Form1.Handle;
lpszText  := "Do you really want to close application?";
lpszCaption := PChar(Form1.Caption);
dwStyle := MB_YESNO or MB_USERICON or MB_TOPMOST;
lpszIcon := MAKEINTRESOURCE(1001);
dwContextHelpId := 0;
lpfnMsgBoxCallback := nil;
end;

Res := MessageBoxIndirectA(MSGBIn);
if res = IDNO then CanClose := FALSE;
end;


Не идеал конечно, но должно работать...

Можно еще свое окно забачить, я когда еще Tooltip-baloon"ов небыло хинты свои писал. Полнофункциональные...


 
Nick Denry ©   (2004-05-10 23:13) [7]

Кстати, тут еще свой значок у мессагебокса...


 
Игорь Шевченко ©   (2004-05-10 23:56) [8]

Обычный MessageBox с флагом MB_SYSTEMMODAL спасет отца русской демократии.


 
apihelp   (2004-05-11 07:18) [9]

>Игорь Шевченко ©
>Обычный MessageBox с флагом MB_SYSTEMMODAL спасет отца русской  
>демократии.
Да, но прога то остановится до закрытия мессаги, а для сервера это не есть хорошо.


 
Style ©   (2004-05-11 10:09) [10]

Используй потоки



type
 TMsgThread = class(TThread)
 private
   FCaption, FText: string;
   FFlags: integer;
 protected
   procedure Execute; override;
 public
   constructor Create(Text,Caption: string; Flags: integer);
 end;

implementation

{ TMsgThread }

constructor TMsgThread.Create(Text,Caption: string; Flags: integer);
begin
 inherited Create(false);
 FreeOnTerminate := True;
 FCaption := Caption;
 FText := Text;
 FFlags := Flags;
end;

procedure TMsgThread.Execute;
begin
 MessageBox(0,pchar(FText),pchar(FCaption),FFlags);
end;

procedure ShowModalMessage(msg: String);
begin
     TMsgThread.Create(
     "Message",Msg,MB_OK or MB_SYSTEMMODAL or MB_ICONINFORMATION);
end;



 
apihelp   (2004-05-11 15:15) [11]

Удалено модератором
Примечание: Дубль


 
apihelp   (2004-05-11 15:17) [12]

Удалено модератором
Примечание: Дубль


 
apihelp   (2004-05-11 15:17) [13]

Удалено модератором
Примечание: Дубль


 
apihelp   (2004-05-11 23:04) [14]

Удалено модератором
Примечание: Выражения выбирай, не в театре


 
proteste   (2004-05-11 23:22) [15]

Удалено модератором
Примечание: Выбирай выражения, иначе будешь только читать



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

Текущий архив: 2004.06.13;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.028 c
14-1085366688
Fay
2004-05-24 06:44
2004.06.13
У меня сегодня младщему сыну год 8))


14-1085537546
Думкин
2004-05-26 06:12
2004.06.13
С днем рождения! 26 мая


8-1080730334
SkyRanger
2004-03-31 14:52
2004.06.13
Движки синтеза речи


6-1082642467
dark2004
2004-04-22 18:01
2004.06.13
Помогите органиовать поддержку Perl на моем Webсервере


3-1085404186
REA
2004-05-24 17:09
2004.06.13
ComboBox