AnaXyd Skrevet 18. juni 2007 Del Skrevet 18. juni 2007 Hei! Jeg har en slags dialogboks, som jeg vil at skal fade ut etter en viss tidsperiode. Er det noen mulighet for å få istand dette? Setter pris på alle svar! Lenke til kommentar
Manfred Skrevet 18. juni 2007 Del Skrevet 18. juni 2007 Snakker vi .net eller vb6, eller...? Snakker vi .net kan det lønne seg å søke litt i forumet: https://www.diskusjon.no/index.php?showtopic=766294 Lenke til kommentar
aadnk Skrevet 19. juni 2007 Del Skrevet 19. juni 2007 En bør nok benytte AnimateWindow til dette, ja. Dersom du er ute etter eksempler til VB6, kan du ta en titt her. Lenke til kommentar
GeirGrusom Skrevet 19. juni 2007 Del Skrevet 19. juni 2007 En kan også fade med Opacity egenskapen, som vel er .NET måten å gjøre det på. Lenke til kommentar
Manfred Skrevet 19. juni 2007 Del Skrevet 19. juni 2007 En kan også fade med Opacity egenskapen, som vel er .NET måten å gjøre det på. 8895168[/snapback] Erfaringsmessig funker den heller dårlig, spesielt dersom man har et bakgrunnsbilde, og har en lei tendens til å hakke, og ikke se spesielt bra ut... Lenke til kommentar
AnaXyd Skrevet 20. juni 2007 Forfatter Del Skrevet 20. juni 2007 (endret) Er ute etter til vb.net ja... Jeg får forresten ikke til dette med denne, blir bare rot når jeg slenger dette inn i en tom class.vb: using System; using System.Runtime.InteropServices; namespace MyNameSpace { /// <summary> /// Win32 implementation to show / hide a window with animation. /// </summary> public class WinAPI { /// <summary> /// Animates the window from left to right. This flag can be used with roll or slide animation. /// </summary> public const int AW_HOR_POSITIVE = 0X1; /// <summary> /// Animates the window from right to left. This flag can be used with roll or slide animation. /// </summary> public const int AW_HOR_NEGATIVE = 0X2; /// <summary> /// Animates the window from top to bottom. This flag can be used with roll or slide animation. /// </summary> public const int AW_VER_POSITIVE = 0X4; /// <summary> /// Animates the window from bottom to top. This flag can be used with roll or slide animation. /// </summary> public const int AW_VER_NEGATIVE = 0X8; /// <summary> /// Makes the window appear to collapse inward if AW_HIDE is used or expand outward if the AW_HIDE is not used. /// </summary> public const int AW_CENTER = 0X10; /// <summary> /// Hides the window. By default, the window is shown. /// </summary> public const int AW_HIDE = 0X10000; /// <summary> /// Activates the window. /// </summary> public const int AW_ACTIVATE = 0X20000; /// <summary> /// Uses slide animation. By default, roll animation is used. /// </summary> public const int AW_SLIDE = 0X40000; /// <summary> /// Uses a fade effect. This flag can be used only if hwnd is a top-level window. /// </summary> public const int AW_BLEND = 0X80000; /// <summary> /// Animates a window. /// </summary> [DllImport("user32.dll", CharSet=CharSet.Auto)] public static extern int AnimateWindow (IntPtr hwand , int dwTime , int dwFlags); } } Er det en class til vb.net? Har ikke lekt med class før... Også skal jeg bruke denne koden til å fade?: WinAPI.AnimateWindow(this.Handle, 1000, WinAPI.AW_HIDE | WinAPI.AW_BLEND); Endret 20. juni 2007 av AnaXyd Lenke til kommentar
GeirGrusom Skrevet 20. juni 2007 Del Skrevet 20. juni 2007 Ja.... Classes er fundamentet i .NET i VB6 var dette veldig halveis implementert (ingen støtte for inheritance, og kun støtte for interfaces ved å importere dem fra COM biblioteker) VB.NET derimot er 100% objektorientert, og støtter inheritance og interfaces. Det man bruker her er en static funksjon, altså en funksjon som ikke kan kalles fra en instansiert objekt (...) :S dårlig forklart.... Lenke til kommentar
AnaXyd Skrevet 20. juni 2007 Forfatter Del Skrevet 20. juni 2007 Så, hvordan skal jeg få med dette i prosjektet mitt da? Er jo jo bare en hobby-programmerer uten noe særlig peil på dette jeg da.. Lenke til kommentar
GeirGrusom Skrevet 20. juni 2007 Del Skrevet 20. juni 2007 Bare legg til klassen hvor som helst. Og ved FormClosing eller noe kan du prøve å dytte inn AnimateWindow koden. Lenke til kommentar
AnaXyd Skrevet 20. juni 2007 Forfatter Del Skrevet 20. juni 2007 Men, jeg skal adde en class.vb fil også ikkesant? Og slenge koden inn der? For det som skjer, er at det blir MASSE errors når jeg kopierer den inn... Lenke til kommentar
aadnk Skrevet 20. juni 2007 Del Skrevet 20. juni 2007 Det er fordi det kodeeksempelet er C#, ikke VB .NET. Disse to programmeringsspråkene er rent syntaksmessig ikke kompatibel, men ettersom rammeverket (.NET) er den samme, er det forholdsvis en smal sak å automatisk konvertere mellom disse. Mange nettsider lar deg gjøre dette gratis, eksempelvis denne. Jeg har tatt meg den frihet å konvertere koden for deg: Klikk for å se/fjerne innholdet nedenfor ]Imports SystemImports System.Runtime.InteropServices Namespace MyNameSpace ''' <summary> ''' Win32 implementation to show / hide a window with animation. ''' </summary> Public Class WinAPI ''' <summary> ''' Animates the window from left to right. This flag can be used with roll or slide animation. ''' </summary> Public Const AW_HOR_POSITIVE As Integer = 1 ''' <summary> ''' Animates the window from right to left. This flag can be used with roll or slide animation. ''' </summary> Public Const AW_HOR_NEGATIVE As Integer = 2 ''' <summary> ''' Animates the window from top to bottom. This flag can be used with roll or slide animation. ''' </summary> Public Const AW_VER_POSITIVE As Integer = 4 ''' <summary> ''' Animates the window from bottom to top. This flag can be used with roll or slide animation. ''' </summary> Public Const AW_VER_NEGATIVE As Integer = 8 ''' <summary> ''' Makes the window appear to collapse inward if AW_HIDE is used or expand outward if the AW_HIDE is not used. ''' </summary> Public Const AW_CENTER As Integer = 16 ''' <summary> ''' Hides the window. By default, the window is shown. ''' </summary> Public Const AW_HIDE As Integer = 65536 ''' <summary> ''' Activates the window. ''' </summary> Public Const AW_ACTIVATE As Integer = 131072 ''' <summary> ''' Uses slide animation. By default, roll animation is used. ''' </summary> Public Const AW_SLIDE As Integer = 262144 ''' <summary> ''' Uses a fade effect. This flag can be used only if hwnd is a top-level window. ''' </summary> Public Const AW_BLEND As Integer = 524288 ''' <summary> ''' Animates a window. ''' </summary> <DllImport("user32.dll", CharSet := CharSet.Auto)> _ Public Shared Function AnimateWindow(ByVal hwand As IntPtr, ByVal dwTime As Integer, ByVal dwFlags As Integer) As Integer End Function End Class End Namespace Lenke til kommentar
AnaXyd Skrevet 20. juni 2007 Forfatter Del Skrevet 20. juni 2007 (endret) Tusen takk for at du hjelper meg! Både i denne og den andre tråden! Du kan tydeligvis dine saker.. Du hjelper meg på god vei! Takk! Da skal jeg prøve "fade" effekten nå.. Svarteste altså... Skal alltid være noe error på meg.. Slik ser koden min ut nå: Imports System.Windows.Forms Imports System.Runtime.InteropServices Imports System Namespace MyNameSpace ''' <summary> ''' Win32 implementation to show / hide a window with animation. ''' </summary> Public Class WinAPI ''' <summary> ''' Animates the window from left to right. This flag can be used with roll or slide animation. ''' </summary> Public Const AW_HOR_POSITIVE As Integer = 1 ''' <summary> ''' Animates the window from right to left. This flag can be used with roll or slide animation. ''' </summary> Public Const AW_HOR_NEGATIVE As Integer = 2 ''' <summary> ''' Animates the window from top to bottom. This flag can be used with roll or slide animation. ''' </summary> Public Const AW_VER_POSITIVE As Integer = 4 ''' <summary> ''' Animates the window from bottom to top. This flag can be used with roll or slide animation. ''' </summary> Public Const AW_VER_NEGATIVE As Integer = 8 ''' <summary> ''' Makes the window appear to collapse inward if AW_HIDE is used or expand outward if the AW_HIDE is not used. ''' </summary> Public Const AW_CENTER As Integer = 16 ''' <summary> ''' Hides the window. By default, the window is shown. ''' </summary> Public Const AW_HIDE As Integer = 65536 ''' <summary> ''' Activates the window. ''' </summary> Public Const AW_ACTIVATE As Integer = 131072 ''' <summary> ''' Uses slide animation. By default, roll animation is used. ''' </summary> Public Const AW_SLIDE As Integer = 262144 ''' <summary> ''' Uses a fade effect. This flag can be used only if hwnd is a top-level window. ''' </summary> Public Const AW_BLEND As Integer = 524288 ''' <summary> ''' Animates a window. ''' </summary> <DllImport("user32.dll", CharSet:=CharSet.Auto)> _ Public Shared Function AnimateWindow(ByVal hwand As IntPtr, ByVal dwTime As Integer, ByVal dwFlags As Integer) As Integer End Function End Class End Namespace Public Class frmInfdialog Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me.Close() End Sub Private Sub LinkLabel2_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Me.Close() End Sub Private Sub frmInfdialog_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click WinAPI.AnimateWindow(Me.Handle, 1000, WinAPI.AW_HIDE Or WinAPI.AW_BLEND) End Sub End Class Men på en måte så blir ikke WinAPI deklarert? "Name WinAPI is not declared" får jeg... Endret 20. juni 2007 av AnaXyd Lenke til kommentar
aadnk Skrevet 20. juni 2007 Del Skrevet 20. juni 2007 Fjern Namespace MyNameSpace eller bytt ut WinAPI med MyNameSpace.WinAPI. Lenke til kommentar
AnaXyd Skrevet 21. juni 2007 Forfatter Del Skrevet 21. juni 2007 Takk! Der funket det som bare det! Lenke til kommentar
AnaXyd Skrevet 23. juni 2007 Forfatter Del Skrevet 23. juni 2007 Denne fade effekten kan ikke være 100% stabil. Noen ganger bugger den seg helt, og jeg må gjøre alt på nytt igjen. (Den funker ikke lenger, og vinduet bare lukker seg uten fade.) Jeg har gjort slik at et vindu fader ut etter en bestemt tid med en timer. Det har funket, men fungerer plutselig ikke nå... Slik ser koden ut: Imports System.Windows.Forms Public Class frmDialog Private Sub frmDialog_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Timer1.Start() End Sub Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick Timer1.Stop() MyNameSpace.WinAPI.AnimateWindow(Me.Handle, 1000, MyNameSpace.WinAPI.AW_HIDE Or MyNameSpace.WinAPI.AW_BLEND) Me.Close() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click MyNameSpace.WinAPI.AnimateWindow(Me.Handle, 1000, MyNameSpace.WinAPI.AW_HIDE Or MyNameSpace.WinAPI.AW_BLEND) End Sub End Class Klassen har jeg i en egen class.vb fil, så da slipper jeg å ha den inne her. Kan noen fortelle meg hva som er feil? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå