Gast BeowulfOF Geschrieben 25. Oktober 2001 Teilen Geschrieben 25. Oktober 2001 Beowulf grüßt, Durch die VB-Pro habe ich erfahren, das man z.B. auch runde Fenster erstellen kann, und das man aus all diesen funktionen der Win API auch eine ocx erstellen könnte... 1. Hat jemand so eine ocx, und kann er sie mir geben, bzw erklären, wie man sowas macht? 2. Kennt jemand gute Tutorials, wo man sowas lernen könnte? gehabt euch wohl, und möge der Wind mir zahlreiche Antworten senden... Beowulf Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
siggy Geschrieben 25. Oktober 2001 Teilen Geschrieben 25. Oktober 2001 Hallöchen.. versuch mal dieses hier... Ist aus der AktiveVB und demonstriert ein ovales Formular Zu weiteren Info´s www.activeVB.de Viel Spass Option Explicit Private Declare Function CreateEllipticRgn Lib "gdi32" _ (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As _ Long, ByVal Y2 As Long) As Long Private Declare Function SetWindowRgn Lib "user32" (ByVal _ hwnd As Long, ByVal hRgn As Long, ByVal bRedraw _ As Long) As Long Private Declare Function ReleaseCapture Lib "user32" () _ As Long Private Declare Function SendMessage Lib "user32"Alias _ "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As _ Long, ByVal wParam As Long, lParam As Any) As Long Private Const HTCAPTION = 2 Private Const WM_NCLBUTTONDOWN = &HA1 Private Sub Form_Load() Me.Picture = LoadPicture(App.Path & "\Back.gif") Call CreateReg End Sub Private Sub Command1_Click() Unload Me End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _ x As Single, y As Single) If y / Screen.TwipsPerPixelY < 25 Then Call ReleaseCapture Call SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&) End If End Sub Private Sub CreateReg() Dim x&, y&, dx&, dy&, Result& With Me dx = .Width / Screen.TwipsPerPixelX dy = .Height / Screen.TwipsPerPixelY Result = CreateEllipticRgn(y + 1, x + 1, dx - 1, dy - 1) Call SetWindowRgn(.hwnd, Result, 1&) End With End Sub Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gast BeowulfOF Geschrieben 26. Oktober 2001 Teilen Geschrieben 26. Oktober 2001 Danke, aber kann ich auch Fenster mithilfe von BMP´s erstellen? Also das ich ein BMP nehme und dem Fenster sage, sieh so aus!?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
siggy Geschrieben 26. Oktober 2001 Teilen Geschrieben 26. Oktober 2001 Klaro, folgende Funktion setzt eine Farbe (bAlpha) durchsichtig. Unter der Funktion SetLayeredWindowAttributes kann man eine RGB(.....) durchsichtig setzen. (Im Beispiel hellgrün) Also setzt dein BMP auf die Form, und die Form selber setzt du auf eine andere Farbe. Die noch sichtbaren Stücke der Form werden durchsichtig (Mit der Funktion abstimmen) Viel Spass Option Explicit ' Fenstereigenschaft setzen Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _ (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long ' Fenstereigenschaft auslesen Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _ (ByVal hwnd As Long, ByVal nIndex As Long) As Long ' Attribut für Layered Window setzen Private Declare Function SetLayeredWindowAttributes Lib "user32" _ (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, _ ByVal dwFlags As Long) As Boolean Private Const gwl_ExStyle = -20 Private Const ws_Ex_Layered = &H80000 Private Const lwa_Alpha = 2 Private Const lwa_ColorKey = 1 ' Windows-Version ermitteln Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long Private Type OSVERSIONINFO dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long szCSDVersion As String * 128 End Type Private Sub Form_Load() If Not CheckWinVersion Then MsgBox "Leider eine zu alte Windows-Version!" End End If Call SetWindowLong(hwnd, gwl_ExStyle, GetWindowLong(hwnd, gwl_ExStyle) Or ws_Ex_Layered) Call SetLayeredWindowAttributes(hwnd, RGB(0, 255, 0), 0, lwa_ColorKey) End Sub Private Function CheckWinVersion() As Boolean Dim lResult As Long Dim OSInfo As OSVERSIONINFO CheckWinVersion = False ' Windows-Version ermitteln OSInfo.dwOSVersionInfoSize = Len(OSInfo) lResult = GetVersionEx(OSInfo) If lResult <> 0 Then ' API-Aufruf war fehlerfrei: Rückgabestruktur untersuchen If OSInfo.dwPlatformId = 1 Then ' Windows 95/98/ME MsgBox CStr(OSInfo.dwMajorVersion) & "." & CStr(OSInfo.dwMinorVersion) If (OSInfo.dwMajorVersion >= 4 And OSInfo.dwMinorVersion > 90) Or _ (OSInfo.dwMajorVersion >= 5) Then ' Windows ME CheckWinVersion = True End If ElseIf OSInfo.dwPlatformId = 2 Then ' Windows NT/2000 If OSInfo.dwMajorVersion >= 5 Then ' Windows 2000 CheckWinVersion = True End If End If End If End Function Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Technician Geschrieben 26. Oktober 2001 Teilen Geschrieben 26. Oktober 2001 Hi! Eine Bitmap ist ja immer rechteckig (oder quadratisch ) – was mache ich dann, wenn ich z.B. ein unregelmäßig geformtes Fenster möchte? Geht das mit dem Code auch (ich denke nämlich, das geht damit nicht?!) Dann müsste ich ja eine Farbe aus dem Bitmap als Transparent markieren... Technician Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
siggy Geschrieben 26. Oktober 2001 Teilen Geschrieben 26. Oktober 2001 Das sind ja gleich mehrere Dinge aufeinmal... Bmp durchsichtig geht sowieso nicht... Wenn dann schon gif. Habe eine imgbox mal schnell auf eine frm gelegt und siehe da, das gif war nur sichtbar... frm habe ich eine andere Farbe gegeben was mit der Funktion s.o. transparent gemacht werden könnte. Aber verschiedene Formen der frm und durchsichtig inklusive bmp/gif... try and error. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Technician Geschrieben 26. Oktober 2001 Teilen Geschrieben 26. Oktober 2001 Hi siggy, mit "Bitmap" meinte ich allgemein eine gespeicherte Grafik. Wenn ich jetzt z.B. ein transparentes Gif habe, sagen wir mal einen blauen Pfeil und das "Drumherum" ist auf Transparent eingestellt. Ich mach eine Form, Farbe hellgrün und stelle das Hellgrün als transparente Farbe ein. Dann lege ich das Gif mit dem Pfeil drauf - hab ich dann eine Form in Pfeil-Form?! Wenn ja - dann könnte man da ganz tolle Sachen mit machen! Technician *die-gerade-an-einem-futuristischen-Terminplaner-programmiert* Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
siggy Geschrieben 26. Oktober 2001 Teilen Geschrieben 26. Oktober 2001 Jo zack, hab ich zwar zusammenhängend (noch) nicht ausprobiert, so ist es aber zu verstehen. Blauer Pfeil, grüne frm. Obacht, es darf wirklich kein grün im Pfeil vorkommen. Durch RGB(bAlpha) kannst du allerdings die Farbe verändern. Gleiches dann folglich in der frm.backcolor = rgb(balpha). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Technician Geschrieben 26. Oktober 2001 Teilen Geschrieben 26. Oktober 2001 Jo, dann werd ich das mal am Wochenende austesten und dann am Montag meinen (hoffentlichen) Erfolg damit posten! Gruß&Danke, Technician Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
siggy Geschrieben 26. Oktober 2001 Teilen Geschrieben 26. Oktober 2001 ja, mach das mal... Nebenbei mal erwähnt, ich habs gerade ausprobiert mit einem blauen Pfeil... funzt !!! Um wiklich nur noch einen Pfeil zu sehen, muss man die frm.borderstyle=0 setzen (<kein> ). Allerdings kann man die Form dann nicht mehr beliebig verschieben. Und nun ist wieder Code gefragt um diesen "pfeil" auf der Oberfläche doch noch zu hin und her zu schaukeln... Viel Glück bin mal auf deine Erfolge gespannt (Vieleicht Beispiel Code) Gruß Siggy Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Technician Geschrieben 26. Oktober 2001 Teilen Geschrieben 26. Oktober 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von siggy: <STRONG>ja, mach das mal... Nebenbei mal erwähnt, ich habs gerade ausprobiert mit einem blauen Pfeil... funzt !!! Um wiklich nur noch einen Pfeil zu sehen, muss man die frm.borderstyle=0 setzen (<kein> ). Allerdings kann man die Form dann nicht mehr beliebig verschieben. Und nun ist wieder Code gefragt um diesen "pfeil" auf der Oberfläche doch noch zu hin und her zu schaukeln... Viel Glück bin mal auf deine Erfolge gespannt (Vieleicht Beispiel Code) Gruß Siggy</STRONG> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Technician Geschrieben 29. Oktober 2001 Teilen Geschrieben 29. Oktober 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von siggy: <STRONG>ja, mach das mal... Nebenbei mal erwähnt, ich habs gerade ausprobiert mit einem blauen Pfeil... funzt !!! Um wiklich nur noch einen Pfeil zu sehen, muss man die frm.borderstyle=0 setzen (<kein> ). Allerdings kann man die Form dann nicht mehr beliebig verschieben. Und nun ist wieder Code gefragt um diesen "pfeil" auf der Oberfläche doch noch zu hin und her zu schaukeln... Viel Glück bin mal auf deine Erfolge gespannt (Vieleicht Beispiel Code) Gruß Siggy</STRONG> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
siggy Geschrieben 29. Oktober 2001 Teilen Geschrieben 29. Oktober 2001 Hey Technician Win 2000 wird hier sicherlich das Stichwort sein. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Technician Geschrieben 29. Oktober 2001 Teilen Geschrieben 29. Oktober 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von siggy: <STRONG>Hey Technician Win 2000 wird hier sicherlich das Stichwort sein.</STRONG> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Technician Geschrieben 29. Oktober 2001 Teilen Geschrieben 29. Oktober 2001 Wer suchet, der findet! Hier http://www.vb-faq.com/Articles/Pharis/transparentform.asp hab ich ein Beispiel gefunden, geht problemlos unter WinNT und auch unter 98, soviel ich weiß (NT ausprobiert!). Allerdings wird alles, was auf der Form ist, transparent gemacht - der Code lässt sich aber bei Bedarf sicherlich entsprechend ändern Gruß Technician Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
siggy Geschrieben 1. November 2001 Teilen Geschrieben 1. November 2001 Hey Technician, funzt ohne Probleme. Bis auf die MSGBOX Unten im Code hat der gute Programmierer schon den geänderten Source für einstellbare Tranzparenz (nicht die ganze frm) in weiser Voraussicht mitgeliefert. Einfach auskommentieren... THX CU Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Technician Geschrieben 2. November 2001 Teilen Geschrieben 2. November 2001 Hi! Ich hab jetzt einen Code gefunden zum Form-in-den-Hintergrund-Stellen! Hab den Code aber leider jetzt gerade nicht da, aber kann ihn dir bei Bedarf an Dienstag zukommen lassen (müsste es dann aber noch heute wissen, ob du das gebrauchen kannst!) Das Seltsame war: für In-den-Vordergrund kann man eine einfache Funktion schreiben, für in-den-Hintergrund braucht man einen Timer (beim Anklicken der Form kommt sie sonst nämlich wieder in den Vordergrund!) Aber es funktioniert! (Hab's zum Testen meines Programms natürlich dann wieder ausgeschaltet, weil das beim Testen furchtbar nervt, wenn ich immer die Form suchen muss ) Gruß, Technician Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
siggy Geschrieben 2. November 2001 Teilen Geschrieben 2. November 2001 Ja, so kann man es natürlich auch machen Gerne nehm ich den Code. Kann man ja immer mal gebrauchen Also bis Dienstag dann... Gruß Siggy Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Technician Geschrieben 2. November 2001 Teilen Geschrieben 2. November 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von siggy: <STRONG>Ja, so kann man es natürlich auch machen Gerne nehm ich den Code. Kann man ja immer mal gebrauchen Also bis Dienstag dann... Gruß Siggy</STRONG> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
siggy Geschrieben 2. November 2001 Teilen Geschrieben 2. November 2001 Ja Sammler Dann mal ein schönen WE Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.