Die Kombination der ersten Beispiele. Hier der Quell-Code:
- Der Fensterstil wird um 'Maximize'/'Minimize' und 'Resize' erweitert.
- Der erweiterte Fensterstil wird um 'DialogFrame' reduziert. Der Effekt: Das Systemmenü wird sichtbar (existiert hat's auch vorher schon).
- Ausserdem wird der Inhalt des Systemmenüs verändert.
- Um die zusätzlichen Menüpunkte auszuführen braucht's noch eine WndProc; einen 'Event-Handler'.
Der sieht so aus:
Public Function WndProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'---------------------------------------------------------------------------------------
'user form's event handler
Select Case uMsg
Case WM_SYSCOMMAND 'menu selected
Select Case wParam 'which menu item
Case 1 'If About (ID = 1) was selected
MsgBox "About SysMenu Demo", vbOKOnly Or vbInformation, strMakro & " " & strVersion
WndProc = 0 'clear message
'Case 2 'menu item 2
End Select
End Select
' Here, we forward all irrelevant messages on to the default message handler.
WndProc = CallWindowProc(oldWndProc, hwnd, uMsg, wParam, lParam)
End Function
Das Ergebnis der Stil-/Menü-Änderungen:
Die WndProc verarbeitet den Klick auf 'About' und öffnet eine MessgeBox:
Es kann aber auch eine andere Programmroutine ausgeführt werden.