Hallo Grobi, ich mal wieder...
Option Compare Database
Option Explicit
Type RECT
Left As Long
top As Long
Right As Long
bottom As Long
End Type
'** Ermittelt die Eck-Koordinaten des übergebenen Windows
Public Declare _
Function GetWindowRect _
Lib "user32.dll" (ByVal hwnd As Long, _
lpRect As RECT) As Long
'** Setzt die Position des übergebenen Windows
Public Declare _
Function SetWindowPos _
Lib "user32.dll" (ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal X As Long, _
ByVal Y As Long, _
ByVal cx As Long, _
ByVal cy As Long, _
ByVal wFlags As Long) As Long
'***********************************
'*** Deklaration: Konstanten ***
'***********************************
'* Einige Konstantenwerte (WindowPlacement) setzen.
Public Const WPF_RESTORETOMAXIMIZED = &H2
Public Const WPF_SETMINPOSITION = &H1
Public Const SW_HIDE = 0
Public Const SW_MINIMIZE = 6
Public Const SW_RESTORE = 9
Public Const SW_SHOW = 5
Public Const SW_SHOWMAXIMIZED = 3
Public Const SW_SHOWMINIMIZED = 2
Public Const SW_SHOWMINNOACTIVE = 7
Public Const SW_SHOWNA = 8
Public Const SW_SHOWNOACTIVATE = 4
Public Const SW_SHOWNORMAL = 1
'* Einige Konstantenwerte (SetWindowPos) setzen.
Public Const HWND_BOTTOM = 1
Public Const HWND_NOTOPMOST = -2
Public Const HWND_TOP = 0
Public Const HWND_TOPMOST = -1
Public Const SWP_HIDEWINDOW = &H80
Public Const SWP_NOACTIVATE = &H10
Public Const SWP_NOCOPYBITS = &H100
Public Const SWP_NOMOVE = &H2
Public Const SWP_NOOWNERZORDER = &H200
Public Const SWP_NOREDRAW = &H8
Public Const SWP_NOREPOSITION = SWP_NOOWNERZORDER
Public Const SWP_NOSIZE = &H1
Public Const SWP_NOZORDER = &H4
Public Const SWP_SHOWWINDOW = &H40
Public Function Set_WinPos(ByVal p_hWnd As Long, _
Optional ByVal p_Left As Long = 0, _
Optional ByVal p_Top As Long = 0, _
Optional ByVal p_Width As Long = 0, _
Optional ByVal p_Height As Long = 0, _
Optional ByVal p_Activate As Long = SWP_SHOWWINDOW) As Boolean
On Error GoTo RunError
'* Funktion initialisieren
Set_WinPos = False
'* Fenster ausrichten und Größe anpassen
Call SetWindowPos(hwnd:=p_hWnd, _
hWndInsertAfter:=HWND_TOP, _
X:=p_Left, _
Y:=p_Top, _
cx:=p_Width, _
cy:=p_Height, _
wFlags:=p_Activate)
'* Funktion erfolgreich
Set_WinPos = True
RunError:
If Err Then MsgBox Err.Description, vbCritical, "No. " & Err.Number
End Function
Public Function Get_WinPos(ByRef v_Rect As RECT)
Call GetWindowRect(hwnd:=Application.hWndAccessApp, lpRect:=v_Rect)
End Function Aufruf:
Private Sub Form_Open(Cancel As Integer)
Dim v_Rect As RECT
' wo befindet sich das aktuelle Fenster
Call GetWindowRect(hWnd:=Me.hWnd, lpRect:=v_Rect)
'Access hinter das PopUp-Fenster setzen
Set_WinPos Application.hWndAccessApp, v_Rect.Left , v_Rect.top , 100, 100
End Sub Du solltest aber beim Schließen der Application die alten Werte wieder einstellen, sonst passiert es, dass Du evt. nun das kleinstmögliche Fenster siehst
Gru?
SR |