Deklaration: Declare Function SelectObject Lib "gdi32.dll" ( _ ByVal hdc As Long, _ ByVal hObject As Long) As Long
Beispiel: Private Declare Function CreateHatchBrush Lib "gdi32" ( _ ByVal nIndex As Long, _ ByVal crColor As Long) As Long Private Declare Function GetBrushOrgEx Lib "gdi32" ( _ ByVal hDC As Long, _ lpPoint As POINTAPI) As Long Private Declare Function SetBrushOrgEx Lib "gdi32" ( _ ByVal hDC As Long, _ ByVal nXOrg As Long, _ ByVal nYOrg As Long, _ lppt As POINTAPI) As Long Private Declare Function SelectObject Lib "gdi32" ( _ ByVal hDC As Long, _ ByVal hObject As Long) As Long Private Declare Function Rectangle Lib "gdi32" ( _ ByVal hDC As Long, _ ByVal X1 As Long, _ ByVal Y1 As Long, _ ByVal X2 As Long, _ ByVal Y2 As Long) As Long Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long Private Const HS_BDIAGONAL = 3 ' diagonal von links unten nach rechts oben (/) Private Const HS_CROSS = 4 ' Kreuz (+) Private Const HS_DIAGCROSS = 5 ' diagonales Kreuz (x) Private Const HS_FDIAGONAL = 2 ' diagonal von rechts unten nach links oben (\) Private Const HS_HORIZONTAL = 0 ' horizontal (-) Private Const HS_VERTICAL = 1 ' vertikal (|) Private Type POINTAPI x As Long y As Long End Type Private RetVal As Long, hBrushNew As Long, hBrushOld As Long Private OldOrginPt As POINTAPI, NewOrginPt As POINTAPI ' lädt die neuen Brush-Eigenschaften und speichert die alten in Variablen ' Die AutoRedraw-Eigenschaft muss False sein !!! Private Sub Form_Load() Me.ScaleMode = vbPixels ' erst einmal fragen wir den aktuellen Orgin-Punkt ab, den wir am Ende ' wiederherstellen müssen RetVal = GetBrushOrgEx(Me.hDC, OldOrginPt) ' danach setzen wir den neuen Orign-Punkt NewOrginPt.x = 4 NewOrginPt.y = 4 RetVal = SetBrushOrgEx(Me.hDC, NewOrginPt.x, NewOrginPt.y, NewOrginPt) ' dann erstellen wir uns einen neuen Brush in Blau hBrushNew = CreateHatchBrush(HS_DIAGCROSS, vbBlue) ' nun weisen wir den neuen Brush dem Fernster zu und erhalten dabei den alten hBrushOld = SelectObject(Me.hDC, hBrushNew) End Sub ' zeichnet den neuen Brush innerhalb eines Rechtecks Private Sub Form_Paint() ' Forminhalt löschen Me.Cls ' weil beim Maximieren und Minimieren die Form den alten Brush immer ' wiederherstellt müssen wir ihn jedes Mal erneut zuweisen um sicher zu stellen, ' dass der gewollte Brush auch das Rechteck ausfüllt SelectObject Me.hDC, hBrushNew ' nun zeichnen wir ein Rechteck in der Mitte der Form RetVal = Rectangle(Me.hDC, Me.ScaleWidth / 3, Me.ScaleHeight / 3, _ Me.ScaleWidth / 3 * 2, Me.ScaleHeight / 3 * 2) End Sub ' erzwingt, dass beim Maximieren eine Form_Paint Ereignis ausgelöst wird Private Sub Form_Resize() If Me.WindowState = vbmxaximized Then Me.Refresh End If End Sub ' stellt den Orginal-Brush wieder her Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) ' hier stellen wir den alten Brush und dessen Orginpunkt wieder her DeleteObject SelectObject(Me.hDC, hBrushOld) RetVal = SetBrushOrgEx(Me.hDC, OldOrginPt.x, OldOrginPt.y, OldOrginPt) End Sub Diese Seite wurde bereits 11.451 mal aufgerufen. |
sevZIP40 Pro DLL Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Buchempfehlung Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |