Telefonino.net network
 
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 24-09-2005, 19.04.14   #1
Longhorn
Senior Member
 
Registrato: 27-02-2005
Messaggi: 202
Longhorn promette bene
[VB6] Codice per le finestre transparenti

Mi spiegate un pò cosa volgiono dire queste righe per fare le trasparenze. Un pò l'ho capito, ma come fabbio ha rendere più o meno transparente , etc...
Option Explicit

Private Const GWL_EXSTYLE = -20
Private Const LWA_COLORKEY = 3
Private Const LWA_ALPHA = 2
Private Const WS_EX_LAYERED = &H80000

Private tpVal As Integer

Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal cKey As Long, ByVal bAlpha As Long, ByVal dwFlags As Long) As Long
Sub Trasp(hWnd As Long, tVal As Integer)

Call SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) Or WS_EX_LAYERED)
Call SetLayeredWindowAttributes(hWnd, 0, (255 * tVal) / 100, LWA_ALPHA)

End Sub
Longhorn non è collegato   Rispondi citando
Vecchio 25-09-2005, 11.47.16   #2
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.502
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
Ti stai inoltrando in un mondo particolarmente complesso nel quale è difficile capire cosa si stia facendo, perchè prima è necessario aver acquisito notevoli conoscenze su come effettivamente lavori Windows dietro le quinte.
Ad ogni modo, non sta a me impedirti di capire ne di giudicare se tu sia in grado di farlo, quindi cercherò di gettare almeno le basi per iniziare.

SetLayeredWindowAttributes è la funzione API utilizzata per rendere trasparente un oggetto (finestra, menu o altro) ed è stata aggiunta da Microsoft alla libreria user32.dll quando si è reso necessario fornire questo effetto grafico di notevole impatto visivo.
Ogni oggetto viene visualizzato sullo schermo dopo averne impostato delle peculiarità che Microsoft ha identificato come "stile di un oggetto".
Ogni oggetto possiede un codice univoco che lo distingue da tutti gli altri (handle) e per fare in modo di modificarne le peculiarità è obbligatorio prima ricavarne il valore.
SetWindowLong e GetWindowLong sono le due funzioni API utilizzate per ricavare l'handle di un oggetto e per predisporlo alle operazioni successive che verranno effettuate su di esso.
La costante GWL_EXSTYLE (GetWindowLong_ExtendedStyle) indica che l'operazione che si vuole effettuare è quella di modificare l'aspetto dell'oggetto identificato dal suo handle (hWnd - handleWindow).
Le costanti non hanno valori a caso ma sono state definite da Microsoft all'interno delle funzioni API che da esse dipendono.

La sub procedure Trasp, altro non è che una procedura aggiuntiva creata ad hoc per settare la trasparenza di un oggetto fornedno come parametri l'handle e la percentuale di trasparenza che quell'oggetto deve avere.

Supponendo di voler impostare la trasparenza al 5% di una finestra qualsiasi nel tuo progetto, ti basterà procedere nel modo seguente:

Trasp [nome form].hWnd, 95

Dove 95 è inteso come (100%-5%)
LoryOne non è collegato   Rispondi citando
Vecchio 25-09-2005, 12.37.56   #3
Longhorn
Senior Member
 
Registrato: 27-02-2005
Messaggi: 202
Longhorn promette bene
Wow,bellino...
Potrei chiedere un altra cosa?
Vorrei memorizzare delle impostazioni per il mio programma in modo che alla chiusura vengano memorizzate in un file dll.
Mi sembra troppo difficile, quindi io ho pensato, se memorizzo un impostazione nel registro?
Ora cerco in rete.
Ciao
Grazie come sempre Loryone.

Ultima modifica di Longhorn : 25-09-2005 alle ore 12.46.59
Longhorn non è collegato   Rispondi citando
Vecchio 26-09-2005, 07.44.21   #4
ceccus
Senior Member
 
L'avatar di ceccus
 
Registrato: 18-10-2004
Loc.: Siena
Messaggi: 365
ceccus promette bene
Salve,
Beh...in una DLL, direi di no...visto che essendo un componente "In Process" Vive e Muore nello stesso apszio di inidirizzamento del chiamante....questo significa che se chiudi il chiamante, anche la DLL si chiuderà, perdendo le informazioni che , eventualmente, ci avevi caricato....
Per il registry...ecco un set di API che lo "regolano"

RegOpenKeyEx
RegCloseKey
RegDeleteKey
RegDeleteValue
RegQueryValueEx
RegCreateKey
RegSetValueEx

L' elenco NON è assolutamente esaustivo...ma comunque, per iniziare, ti è sufficiente...almeno secondo me.

Ciao !!
___________________________________

Site Admin http://www.pctrio.com
ceccus non è collegato   Rispondi citando
Vecchio 26-09-2005, 14.31.19   #5
Longhorn
Senior Member
 
Registrato: 27-02-2005
Messaggi: 202
Longhorn promette bene
Grazie ceccus, la tua lista è parecchio esaustiva.
Per esempio se voglio creare un valore binario in Hkey_Class_Root\._sln
Devo scrivere così?
Regcreatekey Hkey_Class_Root\._sln\Prova =Valorechiave
Ok?
Longhorn non è collegato   Rispondi citando
Vecchio 26-09-2005, 16.37.22   #6
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.502
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
Assolutamente no.
Ceccus è andato ben oltre quello che dovrebbe bastarti per il tuo programma con le istruzione VB:
GetSetting
SaveSetting
DeleteSetting

Ps: Per curiosità: Cosa vorresti memorizzare nel registro ?

Ultima modifica di LoryOne : 26-09-2005 alle ore 16.45.08
LoryOne non è collegato   Rispondi citando
Vecchio 26-09-2005, 17.16.48   #7
Longhorn
Senior Member
 
Registrato: 27-02-2005
Messaggi: 202
Longhorn promette bene
Mi hai messo in crisi Loryone ...
Esempio di quello che vorrei memorizzare:
Mettiamo che voglio personalizzare il mio programma con il nome utente
In pratica nel form about ho inserito una textbox chiamata Usertxt.
Vorrei che nel registro in una chiave non sò quale (ora vedo) venisse memorizzato il nome utente e che quindi al prossimo riavvio dell'applicazione venga preso il valore dal registro e rinserito nella textbox.
Mi fate un esempio con Getsetting e Savesetting?
Bye Bye
Thanks
Longhorn non è collegato   Rispondi citando
Vecchio 26-09-2005, 17.58.22   #8
ceccus
Senior Member
 
L'avatar di ceccus
 
Registrato: 18-10-2004
Loc.: Siena
Messaggi: 365
ceccus promette bene
Salve,
Pezzettino di codice per salvare una chiave di tipo stringa...(trattasi di un Utente..)

Public Function SalvaKeyReg(hKey As Long, strPath As String, strValue As String, strdata As String) As Boolean
Dim keyhand As Long
Dim R As Long

SalvaKeyReg = False
R = RegCreateKey(hKey, strPath, keyhand)
R = RegSetValueEx(keyhand, strValue, 0, REG_SZ, ByVal strdata, Len(strdata))
R = RegCloseKey(keyhand)
SalvaKeyReg = True
End Function

Esempio di chiamata :

Esito = SalvaKeyReg(HKEY_LOCAL_MACHINE, "Software\TqM\ImpoShut", "TipoShut", Keyval)

Per "riprendere" la chiave :

Val = RecuperaRegistry(HKEY_LOCAL_MACHINE, _
"Software\TqM\ImpoShut", "TipoShut")

Public Function RecuperaRegistry(hInKey As Long, ByVal subkey$, ByVal valname$) As String
Dim Retval$, hSubKey As Long, dwType As Long, SZ As Long
Dim R As Long

Retval$ = ""

R = RegOpenKeyEx(hInKey, subkey$, 0, KEY_QUERY_VALUE, hSubKey)
If R <> ERROR_SUCCESS Then
Retval = "--Not String--"
GoTo Esci
End If
SZ = 256: v$ = String$(SZ, 0)
R = RegQueryValueEx(hSubKey, valname$, 0, dwType, ByVal v$, SZ)
If R = ERROR_SUCCESS And dwType = REG_SZ Then
Retval$ = Left$(v$, SZ)
Else
Retval$ = "--Not String--"
End If
If hInKey = 0 Then R = RegCloseKey(hSubKey)

Esci:
RecuperaRegistry = Retval$
End Function

Sono esempi semplificati...prendili in questo modo...complicali a tuo piacimento...

Ciao !!
___________________________________

Site Admin http://www.pctrio.com
ceccus non è collegato   Rispondi citando
Vecchio 26-09-2005, 18.19.08   #9
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.502
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
Io ti propongo questo esempio.
Quello di Ceccus è per un uso più generale.
Vedi tu.
LoryOne non è collegato   Rispondi citando
Vecchio 26-09-2005, 20.02.23   #10
Longhorn
Senior Member
 
Registrato: 27-02-2005
Messaggi: 202
Longhorn promette bene
Boia de!
Che lavoro per una chiave!
@ Loryone
Qunidi invece di salvare nel registro con il tuo codice si salva nel programma, se ho capito bene?
Longhorn non è collegato   Rispondi citando
Vecchio 27-09-2005, 08.17.12   #11
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.502
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
No, anche il mio salva nel registro ma in un percorso fisso che è sempre quello per tutti i programmi creati con VB.
Carica regedit e cerca la sottochiave che hai creato...
LoryOne non è collegato   Rispondi citando
Vecchio 27-09-2005, 15.01.37   #12
Longhorn
Senior Member
 
Registrato: 27-02-2005
Messaggi: 202
Longhorn promette bene
Un informazione:
Ho inserito nel form load delle opzioni questo codice.
Trasparenzatxt = GetSetting("MyApp", "Startup", "User")
Calc = GetSetting("MyApp", "Startup", "User")
Calcfrm = GetSetting("MyApp", "Startup", "User")
Dialognotchk = GetSetting("MyApp", "Startup", "User")
Voglio che mi vengano recuperate le informazioni presenti in trasparenzatxt (textbox), Calc (Option Check),Calcfrm (Option Check) e Dialognotchk (Option Check).
Peò se lancio il form delle opzioni mi dice errore di runtime 13. SE levo il codice funziona senza però recuperare le informazioni.
Longhorn non è collegato   Rispondi citando
Vecchio 27-09-2005, 15.18.40   #13
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.502
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
Benedetto ragazzo, tu non capisci quello che stai facendo e ripeti a pappagallo.

VB non è difficile (anche se può diventarlo volendo) e come tutti i linguaggi è soprattutto logico.
Ti sembra logico assegnare lo stesso valore di tipo stringa alla proprietà text di una textbox ad alla proprietà value di un check box ?

In tutti i compilatori vige la regola che un valore assegnato ad una variabile, deve corrispondere alla tipologia della variabile alla quale esso viene assegnato.

Molla tutto e creati un nuovo form con una checkbox.
Inserisci un pulsante e fa in modo che alla pressione del pulsante il check box si selezioni.

Poi posta il codice che hai scritto.
LoryOne non è collegato   Rispondi citando
Vecchio 27-09-2005, 15.30.01   #14
Longhorn
Senior Member
 
Registrato: 27-02-2005
Messaggi: 202
Longhorn promette bene

Et voilà
Longhorn non è collegato   Rispondi citando
Vecchio 27-09-2005, 15.38.34   #15
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.502
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
Graaaaaande, ora se ti è sembrato banale, dammi una spiegazione ad ognuna di queste domande:

check1.Value="1" funziona ? si/no perchè ?
check1.value="2" funziona ? si/no perchè ?
check1.value="3" funziona ? si/no perchè ?
check1.value=1 funziona ? si/no perchè ?
check1.value=2 funziona ? si/no perchè ?
check1.value=3 funziona ? si/no perchè ?
check1.value="a" funziona ? si/no perchè ?
check1.value="ab" funziona ? si/no perchè ?
check1.value="" funziona ? si/no perchè ?

Quando avrai capito che non è banale neanche questo programmino, allora potrai capire da solo perchè ti da errore (che oltretutto è anche chiaro)

Per curiosità, la funzione GetSetting cosa restituisce e di che tipo è il valore restituito ?
LoryOne non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
Codice protezione telefono nokia shadowDK Multimedia | audio - video 4 06-06-2008 01.12.51
Codice Digitale handyman Segnalazioni Web 4 31-03-2006 16.22.44
[WEB]dove inserire di solito codice per Statistiche? peertoopeer Programmazione 2 24-02-2006 11.06.28
Codice IMEI Anaconda Multimedia | audio - video 1 03-12-2004 10.08.08
Aiuto x Drive Image 7 SONOTRANOI Software applicativo 10 13-11-2004 02.13.11

Orario GMT +2. Ora sono le: 08.14.56.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.