SETPARENT E SETLAYEREDWINDOWATTRIBUTES - BUG

 Tópico anterior Próximo tópico Novo tópico

SETPARENT E SETLAYEREDWINDOWATTRIBUTES - BUG

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#491661 - 03/12/2019 09:41:56

CARLINHOS_SONEG
GUARIBA
Cadast. em:Maio/2004


Pessoal estou tentando fazer um form transparente porém um botão do form precisa ficar visível. Já consegui isso sem muito trabalho utilizei as APIs SetWindowLong e SetLayeredWindowAttributes.
Porém esse mesmo form invisível só com o botão aparecendo precisa ser setado como filho usando a API SetParent, já consegui também, porém o erro está aqui, pois, quando coloco ele como filho usando o setparent meu form desaparece.
O mais engraçado é que se uso essa mesma rotina em uma maquina virtual com as mesmas características da verdadeira ele funciona certinho.
Alguém já conseguiu fazer isso? Abaixo deixo o codigo....

'transparente
    Me.BackColor = vbCyan
    SetWindowLong Me.hwnd, GWL_EXSTYLE, GetWindowLong(Me.hwnd, GWL_EXSTYLE) Or WS_EX_LAYERED
    SetLayeredWindowAttributes Me.hwnd, vbCyan, 0&, LWA_COLORKEY
'funciona normal, form fica transparent com o botão normal (visivel)

'aqui era para ele ficar "preso" em outra tela
SetParent(Me.hwnd, hwnd_de_outra_tela)
'porém o form simplesmente some


If Sei = True then
Repondo
else
nao_respondo
end if

Mas pelo menos não atrapalho!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!



#491665 - 03/12/2019 13:00:48

EPISCOPAL
VARZEA GRANDE
Cadast. em:Maio/2009


Ja tentou apos o setparent fazer seuform.show???

____________________________________________________________________
Episcopal Studios





#491666 - 03/12/2019 13:02:47

EPISCOPAL
VARZEA GRANDE
Cadast. em:Maio/2009


Pode usar também Movewindow para left top = 0

____________________________________________________________________
Episcopal Studios





#491674 - 04/12/2019 08:14:02

CARLINHOS_SONEG
GUARIBA
Cadast. em:Maio/2004


Eu tentei as duas opções mas a tela não aparece de jeito nenhum, se eu não seto o setparente fica tudo certo, porém se eu fizer isso, nada faz a tela aparecer denovo

If Sei = True then
Repondo
else
nao_respondo
end if

Mas pelo menos não atrapalho!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!



#491699 - 04/12/2019 22:20:19

EPISCOPAL
VARZEA GRANDE
Cadast. em:Maio/2009


Qual sistema operacional???

____________________________________________________________________
Episcopal Studios





#491703 - 05/12/2019 08:26:47

CARLINHOS_SONEG
GUARIBA
Cadast. em:Maio/2004


Windows 7 64 bits, na maquina virtual vbox também roda o mesmo sistema w7 64 bits, porém nela funciona perfeitamente


If Sei = True then
Repondo
else
nao_respondo
end if

Mas pelo menos não atrapalho!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!



#491736 - 06/12/2019 20:57:26

EPISCOPAL
VARZEA GRANDE
Cadast. em:Maio/2009


Muito estranho funcionar em um e noutro não. Não é por nada mas você ja tentou ir no site do vbforums.com???

Lá tem uns hackers do vb6. Eles vão achar interessante seu problema.

____________________________________________________________________
Episcopal Studios





 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário