|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2775
|
[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: 2775
|
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: 2775
|
Un'altra cosa, non è possibile leggere i pixel dell'immagine senza che questa sia visibile?
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2775
|
Ho risolto, il codice non è istantaneo come avrei voluto ma è molto più veloce di prima..
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2775
|
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 17:00. |
|
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2775
|
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: 04:04.