|
| 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 » | |
![]() |
#1 |
Senior Member
Registrato: 27-02-2005
Messaggi: 202
![]() |
[VB6] Codice per le finestre transparenti
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 |
![]() |
![]() |
![]() |
#2 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
![]() ![]() ![]() |
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%) |
![]() |
![]() |
![]() |
#3 |
Senior Member
Registrato: 27-02-2005
Messaggi: 202
![]() |
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 13.46.59 |
![]() |
![]() |
![]() |
#4 |
Senior Member
Registrato: 19-10-2004
Loc.: Siena
Messaggi: 365
![]() |
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 |
![]() |
![]() |
![]() |
#5 |
Senior Member
Registrato: 27-02-2005
Messaggi: 202
![]() |
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? |
![]() |
![]() |
![]() |
#6 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
![]() ![]() ![]() |
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 17.45.08 |
![]() |
![]() |
![]() |
#7 |
Senior Member
Registrato: 27-02-2005
Messaggi: 202
![]() |
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 |
![]() |
![]() |
![]() |
#8 |
Senior Member
Registrato: 19-10-2004
Loc.: Siena
Messaggi: 365
![]() |
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 |
![]() |
![]() |
![]() |
#9 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
![]() ![]() ![]() |
Io ti propongo questo esempio.
Quello di Ceccus è per un uso più generale. Vedi tu. |
![]() |
![]() |
![]() |
#10 |
Senior Member
Registrato: 27-02-2005
Messaggi: 202
![]() |
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? |
![]() |
![]() |
![]() |
#11 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
![]() ![]() ![]() |
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... |
![]() |
![]() |
![]() |
#12 |
Senior Member
Registrato: 27-02-2005
Messaggi: 202
![]() |
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. |
![]() |
![]() |
![]() |
#13 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
![]() ![]() ![]() |
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. |
![]() |
![]() |
![]() |
#14 |
Senior Member
Registrato: 27-02-2005
Messaggi: 202
![]() |
![]() ![]() ![]() Et voilà |
![]() |
![]() |
![]() |
#15 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
![]() ![]() ![]() |
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 ? |
![]() |
![]() |
![]() |
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
Strumenti discussione | |
|
|
![]() |
||||
Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
Codice protezione telefono nokia | shadowDK | Multimedia | audio - video | 4 | 06-06-2008 02.12.51 |
Codice Digitale | handyman | Segnalazioni Web | 4 | 31-03-2006 17.22.44 |
[WEB]dove inserire di solito codice per Statistiche? | peertoopeer | Programmazione | 2 | 24-02-2006 12.06.28 |
Codice IMEI | Anaconda | Multimedia | audio - video | 1 | 03-12-2004 11.08.08 |
Aiuto x Drive Image 7 | SONOTRANOI | Software applicativo | 10 | 13-11-2004 03.13.11 |