Avatar billede challenge Praktikant
23. oktober 2009 - 13:35 Der er 5 kommentarer og
1 løsning

Captionless UserForm kant

Hej guys,

Jeg har brugt følgende til at lave en captionless UserForm i Excel;

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) 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 Declare Function ReleaseCapture Lib "user32" () As Long
Private Const GWL_STYLE As Long = (-16)
Private wHandle As Long


Private Sub cmdClose_Click()
Unload Me
End Sub


Private Sub UserForm_Initialize()
    Dim frm As Long, frmstyle As Long
    If Val(Application.Version) >= 9 Then
        wHandle = FindWindow("ThunderDFrame", Me.Caption)
    Else
        wHandle = FindWindow("ThunderXFrame", Me.Caption)
    End If
    If wHandle = 0 Then Exit Sub
    frm = GetWindowLong(wHandle, GWL_STYLE)
    frm = frm Or &HC00000
    SetWindowLong wHandle, -16, frmstyle
    DrawMenuBar wHandle
End Sub


Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  'Code to drag the form

  If wHandle = 0 Then Exit Sub
  If Button = 1 Then
      ReleaseCapture
      SendMessage wHandle, &HA1, 2, 0
  End If
End Sub

Problemet er dog, at min UserForm stadig har en slags "3D-kant". Hvordan fjerner jeg denne således at min UserForm er helt "flad" uden "kanten"?

http://img32.imageshack.us/img32/7662/captionlessdialog.jpg
Avatar billede supertekst Ekspert
23. oktober 2009 - 14:15 #1
Højreklik på userform
Vælg Properties
SpecialEffect - sæt til "flad"
Avatar billede challenge Praktikant
23. oktober 2009 - 14:28 #2
Supertekst,

Tak for forslaget - men denne setting er desværre allerede slået til.
Avatar billede tjacob Juniormester
23. oktober 2009 - 18:20 #3
Har du prøvet med andre værdier i SetWindowLong-kaldet.
Jeg tænker her på frmstyle (som for i øvrigt er 0 -du giver den aldrig en værdi)
Avatar billede challenge Praktikant
24. oktober 2009 - 21:43 #4
tjacob,

Ja, jeg har prøvet at give variablen både numre og forskellige styles (eks. WS_POPUP) dog uden held...
Avatar billede challenge Praktikant
29. oktober 2009 - 16:06 #5
Anyone...?
Avatar billede challenge Praktikant
01. november 2009 - 16:13 #6
Guess not...

Tak for hjælpen til de der prøvede :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester