|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
[VB6] Ciclo for troppo lento
Ho creato un programmino x ritagliare i form e farli della forma che si vuole. Il codice funziona e il risultato è molto carino, anche se lo devo ancora raffinare, ora è molto grezzo, ma c'è un problema: è troppo lento.
Vi allego tutto il progetto, quello che vorrei ottenere è che il form venga ritagliato quasi istantaneamente, anche perchè la prova l'ho fatta con un form piccolo, se il form è molto grande ci mette molto di più.. La colorazione in rosso l'ho messa solo per verificare la velocità del ciclo. Vi ringrazio! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
Uppo! Pensavo che magari leggendo i pixel direttamente dall'immagine potrebbe aumentare in velocità, ma come faccio a caricarmi un'immagine e a leggerne i pixel?
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
Un'altra cosa, non è possibile leggere i pixel dell'immagine senza che questa sia visibile?
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
Ho risolto, il codice non è istantaneo come avrei voluto ma è molto più veloce di prima..
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
Ho superato la problematica della velocità, ora ho altri problemi, siccome con questo progetto vorrei creare un oggetto piuttosto versatile vorrei che si adattasse più o meno a tutti i casi, ho notato ad esempio che se nel form è impostato un borderstyle diverso da 0 il programma non funziona bene. Runtime questa proprietà non si può modificare, allora come faccio? E un'altra cosa, ho impostato la proprietà showintaskbar=true, xò vorrei far apparire un menu cliccando col destro sull'icona, come si fa? Grazie!
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
Quote:
guarda se ti sono utili questi: http://www.studentsofgamedesign.com/VBGT_Optimizing.htm per il popup cosa intendi, forse, intendi l'icona nella taskbar in cui ci clicchi e si apre il menu?. Oppure la tipica finestrella con un help scritto in essa? Ultima modifica di okay : 09-10-2006 alle 18:00. |
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
Quote:
|
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
Quote:
|
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Oct 2006
Messaggi: 115
|
Guarda io ho sempre usato questo codice trovato in giro ed ha sempre funzionato bene, ovviamente puoi rimaneggiarlo alla bisogna...
Codice:
Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias _
"Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As _
NOTIFYICONDATA) As Long
Public Type NOTIFYICONDATA
cbSize As Long
hwnd As Long
uID As Long
uFlags As Long
uCallbackMessage As Long
hIcon As Long
szTip As String * 64
End Type
Public Const NIM_ADD = &H0
Public Const NIM_MODIFY = &H1
Public Const NIM_DELETE = &H2
Public Const NIF_MESSAGE = &H1
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4
'Make your own constant, e.g.:
Public Const NIF_DOALL = NIF_MESSAGE Or NIF_ICON Or NIF_TIP
Public Const WM_MOUSEMOVE = &H200
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_RBUTTONDOWN = &H204
'2) Add a form to the project, and add the following code:
Public Sub CreateIcon()
Dim Tic As NOTIFYICONDATA
Tic.cbSize = Len(Tic)
Tic.hwnd = Picture1.hwnd
Tic.uID = 1&
Tic.uFlags = NIF_DOALL
Tic.uCallbackMessage = WM_MOUSEMOVE
Tic.hIcon = Picture1.Picture
Tic.szTip = "Visual Basic Demo Project" & Chr$(0)
erg = Shell_NotifyIcon(NIM_ADD, Tic)
End Sub
Public Sub DeleteIcon()
Dim Tic As NOTIFYICONDATA
Tic.cbSize = Len(Tic)
Tic.hwnd = Picture1.hwnd
Tic.uID = 1&
erg = Shell_NotifyIcon(NIM_DELETE, Tic)
End Sub
'3) Add two command buttons (command1 and command2) and a
'picture box (picture1) to the form. For the picture
'property of the form, select an icon.
'To to Click event of Command1, add the following code:
CreateIcon
'To the Click event of Command2, add the following code:
DeleteIcon
'To the MouseMove event of Picture1, add the following code:
X = X / Screen.TwipsPerPixelX
Select Case X
Case WM_LBUTTONDOWN
Caption = "Left Click"
Case WM_RBUTTONDOWN
Caption = "Right Click"
Case WM_MOUSEMOVE
Caption = "Move"
Case WM_LBUTTONDBLCLK
Caption = "Double Click"
End Select
'4) Run the project.
' Click on Command1.
' The icon you selected in Picture1 should appear in the
' tray area. Now, move the mouse over the icon.
' The caption of the form should change to "Move".
' Left click the icon, and the caption will change to
' "Left". Right click the icon, and the caption will
' change to "Right". Double Click the icon, and the
' caption will change to "Double". To delete the icon
' from the tray, click Command2.
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:58.



















