PROCEDURE Sleep WITH This IF NOT VARTYPE(This.DumbCover)=="O" ADDPROPERTY(This,'DumbCover',NEWOBJECT('frmTransparent','frmTransparent.VCX')) ENDIF .DumbCover.MakeDumbCover(This) ThisForm.HaveGarbage(this) .OldTabStop = .TabStop IF .TabStop .TabStop = .F. ENDIF ENDWITH RETURN PROCEDURE Wake WITH This IF VARTYPE(.DumbCover)=="O" .DumbCover.Release() ENDIF IF NOT (.OldTabStop = .TabStop) .TabStop = .OldTabStop ENDIF ENDWITHThe transparent part is:
************************************************** *-- Class: frmtransparent *-- ParentClass: frmbase *-- BaseClass: form *-- Time Stamp: 06/04/2010 10:35:14 AM *-- Semi-Transparent form to disable mouse clicks and convey a wait-mode condition. * DEFINE CLASS frmtransparent AS frmbase Desktop = .T. DoCreate = .T. *-- 50 = lowest, 254 = highest. fade = 120 *-- creator object. Object you want to cover. oparent = .NULL. Name = "frmtransparent" *-- Make the form semi-transparent. PROCEDURE showfade SetLayeredWindowAttributes(This.HWnd, 0, This.Fade, 2) ENDPROC *-- Pass the object you want to cover. PROCEDURE makedumbcover LPARAMETERS Obj2Cover ASSERT VARTYPE(Obj2Cover)=="O" MESSAGE "You must pass the object you wish to cover." WITH This .oParent = m.Obj2Cover .TitleBar = 0 .Resize() BINDEVENT(Obj2Form(.oParent), "Moved", This, "Resize") BINDEVENT(_SCREEN, "Moved", This, "Resize") BINDEVENT(.oParent, "Resize", This, "Resize") .MousePointer = MOUSE_HOURGLASS IF NOT .Visible .Show() ENDIF ENDWITH RETURN ENDPROC PROCEDURE Resize LOCAL obj WITH This IF VARTYPE(.oParent)=="O" IF .oParent.BaseClass = "Form" obj = .oParent .Top = OBJTOCLIENT(m.obj,1) .Left = OBJTOCLIENT(m.obj,2) .Width = OBJTOCLIENT(m.obj,3) .Height = OBJTOCLIENT(m.obj,4) ELSE obj = Obj2Form(.oParent) .Top = OBJTOCLIENT(m.obj,1) + OBJTOCLIENT(.oParent,1) + m.Obj.TitleHeight .Left = OBJTOCLIENT(m.obj,2) + OBJTOCLIENT(.oParent,2) .Width = OBJTOCLIENT(.oParent,3) .Height = OBJTOCLIENT(.oParent,4) ENDIF ENDIF ENDWITH RETURN ENDPROC PROCEDURE Show LPARAMETERS nStyle && Normal parameter are 1 = modal, 2 = nonmodal. This.ShowFade() ENDPROC PROCEDURE Init DODEFAULT() DECLARE SetWindowLong In Win32Api Integer, Integer, Integer DECLARE SetLayeredWindowAttributes In Win32Api Integer, String, Integer, Integer SetWindowLong(This.HWnd, -20, 0x00080000) RETURN ENDPROC PROCEDURE Release LPARAMETER Force This.oParent = NULL DODEFAULT(m.Force) ENDPROC ENDDEFINE * *-- EndDefine: frmtransparent **************************************************