Fórum form na frente #230411

06/05/2004

0

Usei este comando no meu form principal para deixar o meu sistema sempre na frente de outras janelas. O problema são as mensagens que eu mostro. showmessage, Application.MessageBox... se o usuário deixar esta mensagem na tela e clicar em outro sistema o meu acaba ficando de fundo. Como posso resolver.

//para deixar o sistema sempre em primeiro plano
SetWindowPos(f_adm_avisa_bloco.handle, HWND_TOPMOST, f_adm_avisa_bloco.Left, f_adm_avisa_bloco.Top,f_adm_avisa_bloco.Width, f_adm_avisa_bloco.Height, 0);


Briciosm

Briciosm

Responder

Posts

06/05/2004

Avante

Olá,

Mude o FormStyle para fsStayOnTop e use

Messagebox(handle,´text´,´caption´,Mb_TaskModal+Mb_Ok);



Responder

Gostei + 0

06/05/2004

Cebikyn

Mantenha seu código do jeito que está, a única coisa que precisa ser mudada é:

Ao invés de Application.MessageBox, use:

MessageBox(f_adm_avisa_bloco.handle, ´texto´, ´titulo´, flags);

[b:98c6845744]Outra dica:[/b:98c6845744]

A chamada:

SetWindowPos(f_adm_avisa_bloco.handle, HWND_TOPMOST, f_adm_avisa_bloco.Left, f_adm_avisa_bloco.Top,f_adm_avisa_bloco.Width, f_adm_avisa_bloco.Height, 0);

pode ser substituida por:

SetWindowPos(f_adm_avisa_bloco.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE+SWP_NOMOVE);

Isto evita chamadas desnecessárias às propriedades do form e simplifica seu código.

[b:98c6845744]Detalhe:[/b:98c6845744] é muito mais eficiente usar SetWindowsPos do que mudar a propriedade FormStyle...


Responder

Gostei + 0

06/05/2004

Avante

Detalhe: é muito mais eficiente usar SetWindowsPos do que mudar a propriedade FormStyle...



Essa eu não sabia. Pode me explicar o porque?
[]´s


Responder

Gostei + 0

06/05/2004

Cebikyn

Normalmente o resultado é o mesmo, mas em alguns casos pode ocorrer flickering (o form fica piscando).


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar