Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Picture1.hDc overflow

Ciao,
sempre alle prese di modifiche varie sotto XP... stranamente ho u overflow
con questo comando:
msgbox picture1.hdc
MA okkio, solo sotto XP, sotto tutti i windows ha come risultato numeri
compresi tra 5000 e 6000 mentre la stessa cosa, nell'applicazione, sotto
windows XP mi da numeri spropositati positivi e negativi andando in
overflow.
I vari comandi usati nel timer (non so se sono sufficienti a capire... se
hai XP nel caso posso spedire la mini applicazione (20k+100k dll) per
verificare sotto XP il motivo, cacchio sotto altri sistemi operativi va
tutto ok!!!!
Sto cavolo di XP... accidenti... e io che non riesco...:-)))
... timer1
[...]
Picture1 = Picture1.Image
Picture1.PaintPicture Picture1, 0, 1, 512, 29 ' 0, 1, 512, 29
MsgBox Picture1.hDC
For waterfallwidth = 0 To Picture1.Width
DoIt = SetPixel(Picture1.hDC, waterfallwidth, waterfallheight,
RGB(FFTData(waterfallwidth * 1.5), FFTData(waterfallwidth * 1.5),
FFTData(waterfallwidth * 1.5) + 50)) ' +254draw top line with new data
next waterfallwidht
[...]
da quel che vedo testando il tutto e fermandolo a msgbox continui..., solo
il picture1.hdc mi va in pallone... con numeri da overflow.
Dubito che queste linee sono sufficienti dato che sfrutto una DLL
(PSKcore.dll) abbinata e non conosco lo scopo .hdc.
Ho pure provato a immettere un valore fisso ma poi la picturbox non reagisce
(dovrebbe alternare info video sulla picture in scorrimento secondo input
audio).
Qualche consiglio?
GRAZIE... accidenti... torno al mio ordine alkfabetico che è piû facile!
GRRRRRR! maledetto il giorno di 'XP!
ciao
-----= Posted via Newsfeeds.Com, Uncensored Usenet News =-----
http://www.newsfeeds.com
 - The #1 Newsgroup Service in the World!
-----==  Over 80,000 Newsgroups - 16 Different Servers! =-----

Proprio nessuno conosce il comando .hDc ??? accidenti la mia applicazione
non accetta più il comando correttamente ma non trovo nulla sull'help e
sotto XP mi va in pallone... picture1.hDc
Aiut! riaccidenti a XP
"ApipApip" <Chied...@AskMe.com> ha scritto nel messaggio
news:3cbca3df$1...@corp.newsgroups.com...


Proprio nessuno conosce il comando .hDc ??? 
Forse alcuni non conoscono la PSKcore.dll :-(
-- 
ciao, hal

 Forse alcuni non conoscono la PSKcore.dll :-(
Ciao,
probabilmente hai ragione, ma: dipende dalla DLL il "falsare" riferimento in
hDc oppure č un difetto della/nella chiamata?
Sta di fatto che tra i 5000-8000 di riferimento, passa a  numeri positivi e
negativi incredibilmente enormi fuori luogo.
L'autore mi ha assicurato che non nota problemi con altre applicazioni...
sig... non VBsource!
Se cosě fosse, non saprei come proporgli un possibile upgrade alla pskcore!


 GRRRRRR! maledetto il giorno di 'XP!
Con un Windows 2000 con qualche programma già caricato in background,
avresti lo stesso identico problema. Sotto XP te ne accorgi prima perchè con
tutte quelle belle finestrelle nuove, il SO usa un numero di HdC maggiori.
Ciao
*Roby*


MsgBox CStr(Picture1.Hdc)
oppure
MsgBox CStr(CLng(Picture1.Hdc))
Non mi stanchero' mai  di dire che e' sempre BENE non utilizzare la
conversione implicita (che spesso e malvolentieri passa per Integer
prima di arrivare a String...).
Lokar
P.S. MsgBox si aspetta proprio una stringa non e' mica polimorfica...

 P.S. MsgBox si aspetta proprio una stringa non e' mica polimorfica...
Grazie mille per tutte le info, devo provare la modificha ma il problema non
era nel msgbox, quello era solo epr verificarne il numero, ma strettamente
in numeri completamente diversi nella stessa applicazione che da 5000-8000
passa sotto XP a spropositi milionari positivi e negativi--- che abbia
implementato anche le quotazioni della MS..:-))
A parte gli scherzi, il problema è reale è qui nel ciclo for-next:
DoIt = SetPixel(Picture1.hDC, waterfallwidth, waterfallheight,
RGB(FFTData(waterfallwidth * 1.5), FFTData(waterfallwidth * 1.5),
FFTData(waterfallwidth * 1.5) + 50)) ' +254draw top line with new data
provo comunque le modifiche tue e di Roberto... anche se DoIt è già DIM AS
LONG!!! quindi suppongo che dato mi dia l'errore descritto in questo punto,
i precedenti non so se potrebbero averne colpa:
---cut---
Dim DoIt As Long
Picture1.AutoRedraw = True
Picture1 = Picture1.Image
Picture1.PaintPicture Picture1, 0, 1, 512, 29 '  '1 line down and 29 deep
For waterfallwidth = 0 To Picture1.Width
DoIt = SetPixel(Picture1.hdc, waterfallwidth, waterfallheight,
RGB(FFTData(waterfallwidth * 1.5), FFTData waterfallwidth * 1.5),
FFTData(waterfallwidth * 1.5) + 50)) ' +254draw top line with new data fa
blu
Next waterfallwidth
il blocco overflow ce l'ho nella linea DoIt... e verifciando i numeri di
picture1.HdC spropositati... credo sia li il problema...
Non posso inoltre sostiture DLL dato che è l'unica allo scopo che conosca
disponibile.
qualche idea? Sto provando ma NIET...


 DoIt = SetPixel(Picture1.hDC, waterfallwidth, waterfallheight,
Controlla la dichiarazione dell'Api SetPixel. Probabilmente č sbagliata
quella. XP non sbaglia di sicuro a darti il valore dell'HdC, fidati.
Dovrebbe essere cosě:
Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As
Long, ByVal Y As Long, ByVal crColor As Long) As Long
Se hai il primo parametro hdc dichiarato come Integer, correggilo.
Ciao
*Roby*

> Private Declare Function SetPixel
Azz... **ç%&/&%&ç*/()%%ç"*ç%&... beeeepppppp...... XP porc.... Acc....
#@#@ç%ç*"ç!!! ri-beeep
Buona la prima....
Infatti, avevo cambiato tutte le variabili ma non ho guardato la
dichiarazione dell'api... e sono due settimane che sto tribulando... ciò si
deduce... che mazza che sono...
Infatti HdC era su integer... porcaccia miseriaccia...
io ho messo solo le variabili del timer e ho dimenticato l'api... della
serie... "mi sto nascondendo dietro al mouse...."
Infatti i numeri variano in un modo pazzesco, da circa 5000/9000 a numeri
positivi e negativi enormi... la differenza è strasostanziale.
Come mi hai perfettamente spiegato sopra, ora ho più o meno chiaro quello
che fa:
manda una posizione specifica della picture1 per far si che questa cambi di
colore all'entrata audio che la DLL demodula dalla sorgente audio REC.
Al variare delle frequenze di input, questa va a rinfrescare la picture per
segnalare la specifica frequenza audio da 0 a 3000Hz sulla picture.
è sufficiente ringraziarti?
non ho parole per la mia poca capacità di lavorare sia API che
MDB...arghhh,...
Al prossimo problema sotto XP...hihi... sarà dura... calcolando che devo
ancora passare alla creazione del SETUP.EXE vero e proprio
dell'applicazione, delle sue OCX e delle varie DLL indispensabili... che non
è male... sarà dura!... solitamente usavo WISE...
G R A Z I E ! 10E3
Ora posso cambiare definitivamente sistema da W98 a XP, maggior problema
risolto!
Anto.


 Infatti HdC era su integer...
Un suggerimento. Se non hai problemi di memoria o le variabili che usi
sono "poche", usa variabili Long, in quanto, essendo il sistema a 32
bit, ovvero 4 byte come un Long, la CPU "maneggia" meglio questo tipo di
dato rispetto all'Integer.
Lokar

 dato rispetto all'Integer.
Ciao,
Diciamo che ho nella parte DIM AS INTEGER ho 600 variabili numeriche varie
nel progetto completo, mi consigli di metterle tutte su LONG anche senza
avere problemi o possibili limiti oltre i 32xxx?
Non saprei se mangia molto in pių passare da INTEGER a LONG o potrebbero
sorgere problemi di "necessitā INTEGER" obbligato per qualche campo?
Il progetto compilato EXE č di 2.5MB...
Check consumo CPU e RAM ridotto al minimo anche durante l'uso.
ciao


ciao
Non ti preoccupare, le variabili integer vanno bene anche se le cambi
in long, hanno solo piu' spazio :-)))
E' come se abbatti una parete della tua camera, é sempre la tua camera
ma hai piu' spazio per metterci roba eheheh
Ciao, Davide (il rallista)