View Single Post
  #13   Report Post  
Posted to microsoft.public.excel.programming
RB Smissaert RB Smissaert is offline
external usenet poster
 
Posts: 2,452
Default Minimize and maximize buttons userforms

This is a very busy userform and I don't want to add another label or
textbox.
Also the titlebar is just nice for this purpose as it stands out and is
clear.
It is no trouble as all I have to do is add the line AddMinMax after any
code
that alters the caption.

I tend to subscribe to KISS personally


What is that?

RBS


"Bob Phillips" wrote in message
...
I appreciate that it doesn't solve the problem, but would it not have been
better (easier?) to have a status area and display your messages there
rather than change the caption. I tend to subscribe to KISS personally.

--

HTH

RP
(remove nothere from the email address if mailing direct)


"RB Smissaert" wrote in message
...

Two answers.

I use the userform title bar (caption) to display all kind of messages
for
the users.

Public Declare Function DrawMenuBar Lib "user32" _
(ByVal hwnd As Long) As Long

RBS


"Bob Phillips" wrote in message
...
Two questions.

Why do you need to change the caption?

Where is DrawMenuBar defined?

--

HTH

RP
(remove nothere from the email address if mailing direct)


"RB Smissaert" wrote in message
...
I think I have this now all worked out.
This is the code that does it:


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 Const WS_MAXIMIZEBOX = &H10000
Private Const WS_MINIMIZEBOX = &H20000
Private Const GWL_STYLE = (-16)

Sub AddMinMax()

Dim hWnd As Long
Dim lngStyle As Long

hWnd = FindWindow(vbNullString, MainForm.Caption)

lngStyle = GetWindowLong(hWnd, GWL_STYLE)
lngStyle = lngStyle Or WS_MAXIMIZEBOX
lngStyle = lngStyle Or WS_MINIMIZEBOX
SetWindowLong hWnd, GWL_STYLE, lngStyle

DrawMenuBar hWnd

End Sub

Just have to run AddMinMax from the Userform Activate event and after

any
code that alters the caption
of the userform via Userform.Caption =
It works very nice indeed.
Just have to make my keyboard shortcuts now to run these menubar

buttons.


RBS


"RB Smissaert" wrote in message
...
How do I add minimize and maximize buttons to a VBA userform?
I have this code that does it, but when I change the caption of the
userform
the buttons don't work anymore. I am slowly coming to the conclusion
that
it probably is not worth the trouble and that it is better to make

your
own buttons.

Public Declare Function FindWindow _
Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As Long, _
ByVal lpWindowName 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 Sub UserForm_Initialize()

Dim hWnd as Long

hWnd = FindWindow(vbNullString, UserForm1.Caption)
SetWindowLong hWnd, -16, &H20000 Or &H10000 Or &H84C80080

End Sub


RBS