Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1928to1932
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Declare Function

Declare Function
02.05.2023 12:36:25
Frank

Guten Tag ans Forum,

kann mir bitte jemand sagen wie ich oben die Functions definieren muss, dass sie in Excel 64 bit verwendet werden können? Ich habe den Code hier gefunden: https://www.vbarchiv.net/api/api_setpixel.html

Private Declare Function GetPixel Lib "gdi32.dll" ( _
  ByVal hdc As Long, _
  ByVal nXPos As Long, _
  ByVal nYPos As Long) As Long
Private Declare Function SetPixel Lib "gdi32.dll" ( _
  ByVal hdc As Long, _
  ByVal X As Long, _
  ByVal Y As Long, _
  ByVal crColor As Long) As Long
' Plazieren Sie ein Bildfeld (Picture1) auf die Form und ordnen diesem
' ein beliebiges Bild zu
Private Sub Command1_Click()
  Dim I, J As Long
 
  With Picture1
    .ScaleMode = vbPixels
 
    ' Invertiert eine Grafik
    For I = 0 To .ScaleWidth
      For J = 0 To .ScaleHeight
        SetPixel .hdc, I, J, GetPixel(.hdc, I, J) Xor -1
      Next J
    Next I
  End With
End Sub


Vielen Dank
Frank

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Declare Function
02.05.2023 12:52:19
ralf_b
versuchs mal damit

Declare PtrSafe Function GetPixel Lib "gdi32" ( _
ByVal hdc As LongPtr, _
ByVal x As Long, _
ByVal y As Long) As Long
Declare PtrSafe Function SetPixel Lib "gdi32" ( _
ByVal hdc As LongPtr, _
ByVal x As Long, _
ByVal y As Long, _
ByVal crColor As Long) As Long


AW: Declare Function
02.05.2023 13:49:24
Frank
Hallo ralf_b,

vielen lieben Dank das hat geklappt. :-) Jetzt müsste nur noch die eigentliche Prozedur starten. Kannst dir den auchansehen? Ichh abe jetzt schon etwas probiert, aber VBA meckert bei With

Private Sub CommandButton1_Click()
  Dim I, J As Long
 
  'With image1.ScaleMode = vbpixels
  With Image1.PictureSizeMode = fmPictureSizeModeStretch
 
    ' Invertiert eine Grafik
    For I = 0 To .ScaleWidth
      For J = 0 To .ScaleHeight
        SetPixel .hdc, I, J, GetPixel(.hdc, I, J) Xor -1
      Next J
    Next I
  End With
End Sub

Private Sub Command1_Click()
  Dim I, J As Long
 
  'With image1.ScaleMode = vbpixels
  With UserForm1.Image1.PictureSizeMode = fmPictureSizeModeStretch
 
    ' Invertiert eine Grafik
    For I = 0 To .ScaleWidth
      For J = 0 To .ScaleHeight
        SetPixel .hdc, I, J, GetPixel(.hdc, I, J) Xor -1
      Next J
    Next I
  End With
End Sub

VBA sagt Objekt erforderlich. Dann habe ich noch UserForm1. Da sagt VBA dann With-Objekt muß einen benutzerdefinierten Typ oder den Typ Object oder Variant haben.


Anzeige
AW: Declare Function
02.05.2023 13:58:01
ralf_b
Du solltest auf VBA hören. With wird für ein Objekt benutzt. Alles zwischen with und end with das mit einem Punkt (.) beginnt gehört zu dem Objekt.
With UserForm1.Image1.PictureSizeMode = fmPictureSizeModeStretch
das würde die Eigenschaft "PictureSizeMode" eines Objektes betreffen.

 
With Image1
     .PictureSizeMode = fmPictureSizeModeStretch
 ...
end with 


AW: Declare Function
02.05.2023 14:17:47
Frank
Okay vielen Dank ralf_b - hab ich verstanden :-).


AW: Declare Function
02.05.2023 20:05:37
volti
Hallo zusammen,

mal 'ne Frage dazu. Hat das schon mal funktioniert?

Mir ist nicht bekannt, dass Image's hier in Excel einen Parameter für Device Context haben (hDC).
Das wird aber hier im Code so verwendet (Image1.hDC). Device Context verwendet man u.A. zur Manipulation des Screens. Hierzu holt man sich den DC (GetDC) oder erstellt einen (CreateDC) usw.
Oder ist da was an mir vorüber gegangen?

Gruß KH


Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige