Obs:
o símbolo
indica que o código foi "quebrado" em mais linhas para
que possa ser exibido na tela, sendo que deve constar em apenas uma
linha no programa.
Este
pequeno projeto demonstra como criar um protetor de tela simples, utilizando
apenas os recursos disponíveis no Visual Basic. Ele foi originalmente
desenvolvido para ambientes de 16 bitas, mas funciona perfeitamente
bem em ambientes de 32 bits, sem que seja necessária qualquer
alteração.
Ele só não pode exibir a pré-visualização
dentro da tela de protetores do Windows. Em breve poderá ser
disponibilizado um projeto de protetor de tela com os recursos necessários
para ser exibido corretamente no Windows 98, mas contando com complexas
chamadas à API do Windows. Portanto, aguarde.
Enquanto isso divirta-se com este projeto.
Segue abaixo as instruções para criação
do programa. Estas instruções constam no arquivo INF.TXT
que acompanha o projeto disponível para download.
Elementos
necessários
1
- form para exibição do protetor de tela (frmShowSaver)
2 - form para configuração (frmConfigSaver)
3 - módulo para inicialização do protetor de tela
(SaverModule)
Definindo
as opções do projeto
No
menu Tools, selecione a opção Options (no VB 4 de 16 bits
é Project).
Na folha Project, defina os valores para as seguintes opções:
* StartUp Form: "Sub Main"
* Project Name: "SCRNSAVE"
* Application description: "SCRNSAVE : nome-do-screen-saver"
Na folha Advanced
* Command Line Arguments: "/s"
ANEXANDO CÓDIGO AO MÓDULO SaverModule
O
código a seguir é responsável pela exibição
dos forms de acordo com os parâmetros passados pelo Windows.
Se o parâmetro for /s ou /S, o Windows solicitou ao screen saver
a exibição de sua tela principal (aquela que contém
as animações).
Se o parâmetro for /c, /C ou "" (seqüência
vazia), o Windows solicitou a exibição de uma janela para
a configuração do programa.
Sub Main()
If Command = "/c" Or Command = "/C" Or Command = "" Then
frmConfigSaver.Show
ElseIf Command = "/s" Or Command = "/S" Then
frmShowSaver.Show
Else
End
End If
End Sub
Implementando
o form de exibição do screen saver
Para
exibir seu protetor de tela, que pode conter animações
criadas com bitmaps ou etiquetas, você deve criar um form
próprio. Neste exemplo, o screen saver utiliza toda a tela, com
um fundo negro. Para isto, as propriedades do form devem ser definidas
assim:
* BackColor = &H00000000&
* BorderStyle = 0 - none
* Caption = "" (Quando esta propriedade é uma seqüência
em branco, o VB não exibe a barra de título do form)
* Name = frmShowSaver
* ShowInTaskbar = False
* WindowState = 2 - Maximized
O conteúdo do screen saver fica por sua conta. Experimente utilizar
uma das opções do projeto [Blanker], que acompanha o VB.
Finalizando
o programa
Como
se sabe, todo o protetor de tela é desativado quando movemos
o mouse ou pressionamos uma tecla. Neste projeto de exemplo foi utilizado
apenas um form (com um controle Timer) para exibição do
protetor de tela; portanto, para finalizar o programa são utilizados
os eventos MouseMove, Click e KeyDown do form frmShowSaver.
Private Sub Form_Click()
Unload Me
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Unload Me
End Sub
No
evento MouseMove há um pequeno detalhe: para o VB o mouse está
sempre em movimento, mesmo estando em absoluto repouso. Ou seja, se
for digitado somente a linha "Unload Me" no evento MouseMove,
o form nem sequer será exibido, pois o mouse está em movimento.
Portanto, neste evento o código é um pouquinho mais longo.
Private Sub Form_MouseMove(Button As Integer,
Shift As Integer, X As Single, Y As Single)
Static StartX As Single, StartY As Single
Dim PosX As Single, PosY As Single
If StartX = 0 Then StartX = X
If StartY = 0 Then StartY = Y
PosX = X
PosY = Y
If Abs(StartX - PosX) <> 0 Then Unload Me
If Abs(StartY - PosY) <> 0 Then Unload Me
End Sub
No
exemplo acima o programa só será finalizado se houver
um movimento mais amplo do mouse (só se você realmente
mover o mouse.
Para encerrar o programa basta inserir a seguinte instrução
no evento Unload do form:
Private Sub Form_Unload(Cancel As Integer)
End
End Sub
Gerando
o arquivo executável
No
menu File, selecione a opção Make EXE File, clique no
botão Options, na caixa de texto Title digite: "SCRNSAVE:nome-do-screen-saver".
Crie o executável com a extensão SCR e grave-o no diretório
System do Windows.
Selecionando
o programa da lista de screen savers
Quando
você for selecionar seu programa na lista de screen savers, verá
que existe uma diferença entre o Windows 3.x e o 95.
O Windows 3.x exibe na lista o nome do programa (SCRNSAVE:nome), enquanto
o 95 exibe o nome do arquivo do programa.
Importante
Existe
ainda um pequeno detalhe sobre o protetor de tela. Quando a janela de
configuração do programa é solicitada, o próprio
programa é carregado. Após a configuração,
quando a janela é fechada, o programa deve ser também
encerrado, pois o mesmo será carregado novamente quando o sistema
solicitar a exibição do protetor de tela.
Se a janela de configuração for somente fechada, o programa
continuará na memória. Quando você finalizar o Windows
95, poderá ocorrer uma chamada inválida de função.
No Windows 3.x ocorre um erro geral de proteção (acho
que não preciso explicar mais).
Portanto, o form frmConfigSaver deve conter um botão para salvar
as alterações e outro para cancelar.
Exemplo:
Suponha que o código seguinte pertenca ao evento click do botão
Cancelar.
Private Sub bCancel_Click()
Unload Me
End Sub
No
evento Unload do form, deve constar a instrução para encerramento
do programa.
Private sub Form_Unload()
End
End sub
Assim,
a janela será fechada, a configuração registrada
(não esqueça do código para isso) e o programa
encerrado, para que o mesmo possa ser novamente carregado quando o Windows
solicitar o screen saver.
O texto apresentado acima se aplica ao Visual Basic 4.0 de 16 bits.
Todas as informações sobre o projeto são necessárias
para que o Windows 3.x reconheça o programa como um protetor
de tela. Pelo que pude constatar, para o Windows 95 as informações
em um protetor de tela diferem em alguns pontos do que foi apresentado.
Isso não impede que o screen saver rode no ambiente de 32 bits.
12.07.1997