////////////////////////////////////////////////////////////////////// // // PrtScrn.prg // // Copyright: // Maniacc Software Inc., (c) 2003. All rights reserved. // // Contents: // Makes PrintScreen and Alt_PrintScreen keys work // ////////////////////////////////////////////////////////////////////// #include "Gra.ch" #include "Appevent.ch" #include "PrntScrn.ch" PROCEDURE AppSys LOCAL oDlg MxUnique(,"PrtScrn",) oDlg := XbpDialog():new() oDlg:title := "PrintScreen" oDlg:visible := .F. oDlg:create(AppDesktop(),,{(AppDesktop():currentSize()[1]-530)/2,(AppDesktop():currentSize()[2]-440)/2},{530,440}) setAppWindow(oDlg) oPrntScrn := MxPrintScreen():new() oPrntScrn:start() RETURN PROCEDURE AppQuit QUIT RETURN ****************************************************************************** PROCEDURE Main LOCAL nEvent, mp1, mp2, oXbp, oTb, oMenu oTb := TaskBarIcon():New( xbeP_User + 30 ):Create() oTb:AddIcon( 1,ICON_PRINTER,"Print Screen" ) // Context menu for Icon oMenu := XbpMenu():new( oTb ):create() oMenu:AddItem( { "~Cancel" , { || NIL } } ) oMenu:AddItem( { "~Exit" , { || PostAppEvent( xbeP_Close ) } } ) DO WHILE nEvent <> xbeP_Close nEvent := AppEvent( @mp1,@mp2,@oXbp ) oXbp:handleEvent( nEvent, mp1, mp2 ) IF nEvent==xbeP_User+30 IF mp1[2]==xbeM_RbUp oMenu:PopUp( oTb, { mp1[3], mp1[4] } ) ENDIF ENDIF ENDDO oMenu:destroy() oTb:destroy() RETURN FUNCTION popmenu(oOwner,aPos,aMenArray) LOCAL nEvent, mp1, mp2, oXbp, oMenu LOCAL i oOwner := IIf(oOwner==NIL,setAppFocus(),oOwner) oMenu := XbpMenu():new() oMenu:create(oOwner) FOR i := 1 TO len(aMenArray) oMenu:addItem({(aMenArray[i,1]),(aMenArray[i,2])}) NEXT i oMenu:popup(oOwner, aPos ) nEvent := 0 DO WHILE nEvent <> xbeP_Close nEvent := AppEvent( @mp1, @mp2, @oXbp ) oXbp:HandleEvent( nEvent, mp1, mp2 ) ENDDO RETURN .T.