Hunter,
I have tried this implementation to make this into my application... maybe this help you!
STATIC PROCEDURE adjustDialog( oDlg, oWnd, nTopCorrection )
LOCAL aCoorsWnd := { 0, 0 }
LOCAL nTopWnd := 0
LOCAL nLeftWnd := 0
DEFAULT nTopCorrection := 0
// Gettering informations
aCoorsWnd := clientToScreen( oWnd:hWnd, aCoorsWnd )
nTopWnd := ( ( aCoorsWnd[1] + oWnd:nHeight ) - oDlg:nHeight ) - 29
// Positioning dialog
oDlg:center( oWnd )
oDlg:move( iif( !isEmpty( nTopCorrection ), nTopWnd - nTopCorrection, nTopWnd ), ( clientToScreen( oDlg:hWnd, { 0, 0 } ) )[2],,, TRUE )
RETURN( NIL )