Alvaro:
Lo que puedes hacer es crear un dialog y que la ventana child se ajuste luego a ese dialogo.
Tambien con las versiones nuevas de Fivewin puedes hacer un dialogo resizable y minimizable en lugar de lanzar una ventana child.
Depende mucho de la funcionalidad que quieras darle a tu programa.
Para el caso 1 puedes definir una ventana y dentro un dialogo NO MODAL, y que la ventana luego se ajuste exactamente al dialogo.
Te paso ese ejemplo
- Code: Select all Expand view RUN
DEFINE WINDOW oWnd1 MDICHILD TITLE "Titulo" NOZOOM OF oWndPrincipal
oWnd1:bGotFocus := { || oDlg:SetFocus}
oWnd1:bResized := { || Incrusta( oWnd1, oDlg, .t.) }
DEFINE DIALOG oDlg RESOURCE "ABMS" OF oWnd1
REDEFINE XBROWSE oBrw DATASOURCE ......
REDEFINE SAY oBrw:oSeek PROMPT "" ID 113 OF oDlg
... // Todos tus controles
ACTIVATE DIALOG oDlg CENTER NOWAIT ON INIT oDlg:Move(0,0) VALID(oWnd1:end())
ACTIVATE WINDOW oWnd1 CENTER ON INIT Incrusta( oWnd1, oDlg, .T.)
//Incrustar dialogo en ventana
FUNCTION Incrusta( oWnd, oDlg, lCentra)
STATIC lActivo := .F.
LOCAL aRect, nPosY, nPosX, nPosXX, oIco
IF IsIconic(oWnd:hWnd)
RETURN .T.
ENDIF
IF !(lActivo)
lActivo = .T.
// Muevo dialogo a 0,0 para que quede bien incrustado...
oDlg:Move(0,0)
// Primero Seteo Como si Windows Fuera Estandar...
oWnd:SetSize(oDlg:nWidth+8, oDlg:nHeight+27)
// Calculo diferencia !
aRect := GetClientRect(oWnd:hWnd)
nPosY := ABS(ABS(aRect[3]-aRect[1])-ABS(oWnd:nTop-oWnd:nBottom))
nPosX := ABS(ABS(aRect[4]-aRect[2])-ABS(oWnd:nRight-oWnd:nLeft))
nPosXX := INT(ABS(ABS(oWnd:nRight-oWnd:nLeft) - ;
ABS(oApp:oWnd:nRight-oApp:oWnd:nLeft)) / 2)
// Ahora la pongo JUSTA, JUSTA...
oWnd:SetSize(oDlg:nWidth+nPosX,oDlg:nHeight+nPosY)
oWnd:Move(oApp:oWnd:nTop+5,nPosXX)
lActivo := .F.
oWnd:Refresh()
oApp:oWnd:oWndClient:Refresh()
ENDIF
RETURN .T.
Y el RC del dialogo deberia ser de este estilo (sin barra de titulo y sin controles)
- Code: Select all Expand view RUN
ABMS DIALOG DISCARDABLE 15, 19, 551, 309
STYLE WS_CHILD
FONT 8, "MS Sans Serif"
{
CONTROL "", 111, "TXBROWSE", WS_TABSTOP|0x00b000a1, 4, 44, 540, 240
CONTROL "Buscar=>:", -1, "Static", SS_RIGHT|WS_GROUP, 8, 292, 56, 8
CONTROL "", 113, "Edit", ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 68, 288, 476, 12
.... y todos tus controles
}
Para el caso 2, con dialogos Resizables y minimizables simplemente lo defines en el dialogo
DEFINE DIALOG oDlg SIZE nWd,nHt PIXEL TITLE cTitle FONT oFont RESIZABLE OF oWnd
Espero que te de al menos una pista