RbBFBlokProjPSIVStrn2006.01 ACnmStrnAChpStrnACsvStrnVer1Strn1 Ver2Strn0 Ver3Strn0 RelsStrn0 NnRlStrn0 RegnStrnSVerStrnLVerStrnIVerStrnaiviInt DVewInt BprTpInt DLanInt CLanInt DEncInt BflgInt IconGrupEndGInt MacCStrnBMacStrnMy Application (Classic)BCarStrnMy Application BCMOStrnMy Application BSizInt @BMSzInt BSzSStrn4096BMSSStrn2048MDIcStrnBWinStrnMy Application.exe BMDIInt WcmNStrnWpNmStrnWiNmStrnBL86Strn MyApplication PadnPadn********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************BlokpObj NameStrnApp ContInt paswStrnbClsInt SuprStrn Application bNtrInt bApOInt CompStrnPDefGrup$nameStrnMenuBar PValInt kWEndGInt VwBhGrupEndGInt CnstGrupEncoInt nameStrnkFileQuitShortcut typeInt defnStrnflagInt CInsGrup0pltfInt langInt defnStrnCmd+Q EndGInt EndGInt CnstGrupEncoInt nameStrn kFileQuit typeInt defnStrnQuitflagInt CInsGrup0pltfInt langInt defnStrnE&xit EndGInt CInsGrup0pltfInt langInt defnStrnE&xit EndGInt EndGInt CnstGrup EncoInt nameStrn kEditClear typeInt defnStrn&Delete flagInt CInsGrup0 pltfInt langInt defnStrn&Delete EndGInt CInsGrup0 pltfInt langInt defnStrn&Delete EndGInt EndGInt PadnPadnd****************************************************************************************************BlokpVewB<NameStrnWindow1 ContInt paswStrnbClsInt SuprStrnWindow bNtrInt CompStrnHInsGrup nameStrnOpenCompStrnVsblInt sorcGrup\ EncoInt srclStrn Sub Open() srclStrnmShared = new FuturesrclStrnEnd Sub EndGInt EndGInt PropGrupTEncoInt declStrnmShared As Future flagInt CompStrnshrdInt EndGInt PDefGrup0nameStrnMenuBar PValStrn 1808553983 EndGInt PDefGrup(nameStrn MacProcID PValInt EndGInt PDefGrup4nameStrn BalloonHelp EncoInt PValStrnEndGInt PDefGrup0nameStrnMinimizeButton PValStrnTrueEndGInt PDefGrup4nameStrnMaximizeButton PValStrnFalse EndGInt PDefGrup0nameStrn LiveResize PValStrnFalse EndGInt PDefGrup0nameStrn Resizeable PValStrnFalse EndGInt PDefGrup,nameStrn CloseButton PValStrnTrueEndGInt PDefGrup0nameStrnMenuBarVisible PValStrnTrueEndGInt PDefGrup0nameStrn FullScreen PValStrnFalse EndGInt PDefGrup(nameStrnVisible PValStrnTrueEndGInt PDefGrup8nameStrnTitle EncoInt PValStrnUntitledEndGInt PDefGrup$nameStrnBackdropPValStrnEndGInt PDefGrup(nameStrn BackColor PValInt EndGInt PDefGrup0nameStrn HasBackColorPValStrnFalse EndGInt PDefGrup0nameStrn Composite PValStrnFalse EndGInt PDefGrup$nameStrnFrame PValInt EndGInt PDefGrup( nameStrn MaxHeight PValInt }EndGInt PDefGrup$!nameStrnMaxWidthPValInt }EndGInt !PDefGrup("nameStrn MinHeight PValInt @EndGInt "PDefGrup$#nameStrnMinWidthPValInt @EndGInt #PDefGrup$$nameStrnHeight PValInt ,EndGInt $PDefGrup$%nameStrnWidth PValInt ,EndGInt %PDefGrup(&nameStrn Placement PValInt EndGInt &VwBhGrup 'VwPrGrup0(NameStrnNameVsblInt PrGpStrnID EndGInt (VwPrGrup8)NameStrn Interfaces VsblInt PrGpStrnID EndGInt )VwPrGrup4*NameStrnSuper VsblInt PrGpStrnID EndGInt *VwPrGrup+NameStrn Placement VsblInt PrGpStrnPositionPValStrn0 EnumGrup,defnStrn 0 - Default defnStrn1 - Parent Window defnStrn2 - Main Screen defnStrn3 - Parent Window ScreendefnStrn 4 - Stagger EndGInt ,EndGInt +VwPrGrupH-NameStrnWidth VsblInt PrGpStrnPositionPValStrn300 EndGInt -VwPrGrupH.NameStrnHeight VsblInt PrGpStrnPositionPValStrn300 EndGInt .VwPrGrupH/NameStrnMinWidthVsblInt PrGpStrnPositionPValStrn64 EndGInt /VwPrGrupL0NameStrn MinHeight VsblInt PrGpStrnPositionPValStrn64 EndGInt 0VwPrGrupL1NameStrnMaxWidthVsblInt PrGpStrnPositionPValStrn32000 EndGInt 1VwPrGrupP2NameStrn MaxHeight VsblInt PrGpStrnPositionPValStrn32000 EndGInt 2VwPrGrup3NameStrnFrame VsblInt PrGpStrn Appearance PValStrn0 EnumGrupP4defnStrn 0 - DocumentdefnStrn1 - Movable Modal defnStrn2 - Modal DialogdefnStrn3 - Floating Window defnStrn 4 - Plain Box defnStrn5 - Shadowed BoxdefnStrn6 - Rounded Window defnStrn7 - Global Floating Window defnStrn8 - Sheet WindowdefnStrn9 - Metal WindowdefnStrn10 - Drawer Window EndGInt 4EndGInt 3VwPrGrupT5NameStrn Composite VsblInt PrGpStrn Appearance PValStrnFalse EndGInt 5VwPrGrupT6NameStrn HasBackColorVsblInt PrGpStrn Appearance PValStrnFalse EndGInt 6VwPrGrupT7NameStrn BackColor VsblInt PrGpStrn Appearance PValStrn&hFFFFFFEndGInt 7VwPrGrup<8NameStrnBackdropVsblInt PrGpStrn Appearance EndGInt 8VwPrGrupP9NameStrnTitle VsblInt PrGpStrn Appearance PValStrnUntitledEndGInt 9VwPrGrupL:NameStrnVisible VsblInt PrGpStrn Appearance PValStrnTrueEndGInt :VwPrGrupT;NameStrn FullScreen VsblInt PrGpStrn Appearance PValStrnFalse EndGInt ;VwPrGrupTNameStrn Resizeable VsblInt PrGpStrn Appearance PValStrnFalse EndGInt >VwPrGrupT?NameStrn LiveResize VsblInt PrGpStrn Appearance PValStrnFalse EndGInt ?VwPrGrupX@NameStrnMaximizeButton VsblInt PrGpStrn Appearance PValStrnFalse EndGInt @VwPrGrupTANameStrnMinimizeButton VsblInt PrGpStrn Appearance PValStrnTrueEndGInt AVwPrGrup@BNameStrn BalloonHelp VsblInt PrGpStrn Appearance EndGInt BVwPrGrupPCNameStrn MacProcID VsblInt PrGpStrn Appearance PValStrn0 EndGInt CVwPrGrup<DNameStrnMenuBar VsblInt PrGpStrn Appearance EndGInt DEndGInt 'CBhvGrupESuprStrnThread HInsGrupFnameStrnRun CompStrnVsblInt sorcGrupGEncoInt srclStrn Sub Run() srclStrn:System.DebugLog( "Thread1: " + mShared.Value.StringValue ) srclStrnEnd Sub EndGInt GEndGInt FEndGInt ECBhvGrupHSuprStrnThread HInsGrupInameStrnRun CompStrnVsblInt sorcGrupJEncoInt srclStrn Sub Run() srclStrn:System.DebugLog( "Thread2: " + mShared.Value.StringValue ) srclStrnEnd Sub EndGInt JEndGInt IEndGInt HCBhvGrup\KSuprStrnThread HInsGrup,LnameStrnRun CompStrnVsblInt sorcGrupMEncoInt srclStrn Sub Run() srclStrn/System.DebugLog( "Setting the future's value" ) srclStrn'mShared.Value = "Ha ha ha, I'm set now" srclStrn0System.DebugLog( "Future's value has been set" )srclStrnEnd Sub EndGInt MEndGInt LEndGInt KCBhvGrupNSuprStrn PushButton HInsGrupOnameStrnAction CompStrnVsblInt sorcGrupTPEncoInt srclStrn Sub Action()srclStrn Thread1.Run srclStrnEnd Sub EndGInt PEndGInt OEndGInt NCBhvGrupQSuprStrn PushButton HInsGrupRnameStrnAction CompStrnVsblInt sorcGrupTSEncoInt srclStrn Sub Action()srclStrn Thread2.Run srclStrnEnd Sub EndGInt SEndGInt REndGInt QCBhvGrupTSuprStrn PushButton HInsGrupUnameStrnAction CompStrnVsblInt sorcGrupTVEncoInt srclStrn Sub Action()srclStrn Thread3.Run srclStrnEnd Sub EndGInt VEndGInt UEndGInt TCtrlGrupWcclsStrnThread nameStrnThread PDefGrup,XnameStrn TabPanelIndex PValInt EndGInt XPDefGrup8YnameStrn InitialParent EncoInt PValStrnEndGInt YPDefGrup(ZnameStrn StackSize PValInt EndGInt ZPDefGrup$[nameStrnPriorityPValInt EndGInt [PDefGrup \nameStrnTop PValInt MEndGInt \PDefGrup ]nameStrnLeftPValInt =EndGInt ]PDefGrup8^nameStrn ControlOrderEncoInt PValStrn0 EndGInt ^PDefGrup8_nameStrnSuper EncoInt PValStrnThread EndGInt _PDefGrup$`nameStrnIndex PValInt EndGInt `PDefGrup4anameStrnNameEncoInt PValStrnThread1 EndGInt aCBixInt EndGInt WCtrlGrupbcclsStrnThread nameStrnThread PDefGrup,cnameStrn TabPanelIndex PValInt EndGInt cPDefGrup8dnameStrn InitialParent EncoInt PValStrnEndGInt dPDefGrup(enameStrn StackSize PValInt EndGInt ePDefGrup$fnameStrnPriorityPValInt EndGInt fPDefGrup gnameStrnTop PValInt MEndGInt gPDefGrup hnameStrnLeftPValInt pEndGInt hPDefGrup8inameStrn ControlOrderEncoInt PValStrn1 EndGInt iPDefGrup8jnameStrnSuper EncoInt PValStrnThread EndGInt jPDefGrup$knameStrnIndex PValInt EndGInt kPDefGrup4lnameStrnNameEncoInt PValStrnThread2 EndGInt lCBixInt EndGInt bCtrlGrupmcclsStrnThread nameStrnThread PDefGrup,nnameStrn TabPanelIndex PValInt EndGInt nPDefGrup8onameStrn InitialParent EncoInt PValStrnEndGInt oPDefGrup(pnameStrn StackSize PValInt EndGInt pPDefGrup$qnameStrnPriorityPValInt EndGInt qPDefGrup rnameStrnTop PValInt MEndGInt rPDefGrup snameStrnLeftPValInt EndGInt sPDefGrup8tnameStrn ControlOrderEncoInt PValStrn2 EndGInt tPDefGrup8unameStrnSuper EncoInt PValStrnThread EndGInt uPDefGrup$vnameStrnIndex PValInt EndGInt vPDefGrup4wnameStrnNameEncoInt PValStrnThread3 EndGInt wCBixInt EndGInt mCtrlGrupxcclsStrn PushButton nameStrn PushButton PDefGrup8ynameStrn InitialParent EncoInt PValStrnEndGInt yPDefGrup(znameStrn Underline PValStrnEndGInt zPDefGrup${nameStrnItalic PValStrnEndGInt {PDefGrup |nameStrnBoldPValStrnEndGInt |PDefGrup$}nameStrnTextSizePValInt EndGInt }PDefGrup8~nameStrnTextFontEncoInt PValStrnSystem EndGInt ~PDefGrup0nameStrnAutoDeactivate PValStrnTrueEndGInt PDefGrup0nameStrnHelpTag EncoInt PValStrnEndGInt PDefGrup(nameStrnVisible PValStrnTrueEndGInt PDefGrup(nameStrnEnabled PValStrnTrueEndGInt PDefGrup$nameStrnCancel PValStrnEndGInt PDefGrup$nameStrnDefault PValStrnEndGInt PDefGrup<nameStrnCaption EncoInt PValStrn Thread1 Get EndGInt PDefGrup,nameStrn TabPanelIndex PValInt EndGInt PDefGrup(nameStrn LockBottom PValStrnEndGInt PDefGrup(nameStrn LockRight PValStrnEndGInt PDefGrup$nameStrnLockTop PValStrnEndGInt PDefGrup$nameStrnLockLeftPValStrnEndGInt PDefGrup$nameStrnHeight PValInt EndGInt PDefGrup$nameStrnWidth PValInt PEndGInt PDefGrup nameStrnTop PValInt EndGInt PDefGrup nameStrnLeftPValInt EndGInt PDefGrup8nameStrn ControlOrderEncoInt PValStrn3 EndGInt PDefGrup<nameStrnSuper EncoInt PValStrn PushButton EndGInt PDefGrup$nameStrnIndex PValInt EndGInt PDefGrup8nameStrnNameEncoInt PValStrn PushButton1 EndGInt CBixInt EndGInt xCtrlGrupcclsStrn PushButton nameStrn PushButton PDefGrup8nameStrn InitialParent EncoInt PValStrnEndGInt PDefGrup(nameStrn Underline PValStrnEndGInt PDefGrup$nameStrnItalic PValStrnEndGInt PDefGrup nameStrnBoldPValStrnEndGInt PDefGrup$nameStrnTextSizePValInt EndGInt PDefGrup8nameStrnTextFontEncoInt PValStrnSystem EndGInt PDefGrup0nameStrnAutoDeactivate PValStrnTrueEndGInt PDefGrup0nameStrnHelpTag EncoInt PValStrnEndGInt PDefGrup(nameStrnVisible PValStrnTrueEndGInt PDefGrup(nameStrnEnabled PValStrnTrueEndGInt PDefGrup$nameStrnCancel PValStrnEndGInt PDefGrup$nameStrnDefault PValStrnEndGInt PDefGrup<nameStrnCaption EncoInt PValStrn Thread2 Get EndGInt PDefGrup,nameStrn TabPanelIndex PValInt EndGInt PDefGrup(nameStrn LockBottom PValStrnEndGInt PDefGrup(nameStrn LockRight PValStrnEndGInt PDefGrup$nameStrnLockTop PValStrnEndGInt PDefGrup$nameStrnLockLeftPValStrnEndGInt PDefGrup$nameStrnHeight PValInt EndGInt PDefGrup$nameStrnWidth PValInt PEndGInt PDefGrup nameStrnTop PValInt EndGInt PDefGrup nameStrnLeftPValInt oEndGInt PDefGrup8nameStrn ControlOrderEncoInt PValStrn4 EndGInt PDefGrup<nameStrnSuper EncoInt PValStrn PushButton EndGInt PDefGrup$nameStrnIndex PValInt EndGInt PDefGrup8nameStrnNameEncoInt PValStrn PushButton2 EndGInt CBixInt EndGInt CtrlGrupcclsStrn PushButton nameStrn PushButton PDefGrup8nameStrn InitialParent EncoInt PValStrnEndGInt PDefGrup(nameStrn Underline PValStrnEndGInt PDefGrup$nameStrnItalic PValStrnEndGInt PDefGrup nameStrnBoldPValStrnEndGInt PDefGrup$nameStrnTextSizePValInt EndGInt PDefGrup8nameStrnTextFontEncoInt PValStrnSystem EndGInt PDefGrup0nameStrnAutoDeactivate PValStrnTrueEndGInt PDefGrup0nameStrnHelpTag EncoInt PValStrnEndGInt PDefGrup(nameStrnVisible PValStrnTrueEndGInt PDefGrup(nameStrnEnabled PValStrnTrueEndGInt PDefGrup$nameStrnCancel PValStrnEndGInt PDefGrup$nameStrnDefault PValStrnEndGInt PDefGrup<nameStrnCaption EncoInt PValStrn Thread3 Set EndGInt PDefGrup,nameStrn TabPanelIndex PValInt EndGInt PDefGrup(nameStrn LockBottom PValStrnEndGInt PDefGrup(nameStrn LockRight PValStrnEndGInt PDefGrup$nameStrnLockTop PValStrnEndGInt PDefGrup$nameStrnLockLeftPValStrnEndGInt PDefGrup$nameStrnHeight PValInt EndGInt PDefGrup$nameStrnWidth PValInt PEndGInt PDefGrup nameStrnTop PValInt EndGInt PDefGrup nameStrnLeftPValInt EndGInt PDefGrup8nameStrn ControlOrderEncoInt PValStrn5 EndGInt PDefGrup<nameStrnSuper EncoInt PValStrn PushButton EndGInt PDefGrup$nameStrnIndex PValInt EndGInt PDefGrup8nameStrnNameEncoInt PValStrn PushButton3 EndGInt CBixInt EndGInt PadnPadn********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************BlokpMnukW NameStrnMenuBar1ContInt paswStrnMItmGruppspmuInt nameStrnFileMenutextStrn&File indxInt scutStrnmaEnInt EncoInt flagInt SuprStrnMenuItemMItmGrupspmuInt nameStrnFileQuittextStrn#App.kFileQuit indxInt scutStrn#App.kFileQuitShortcut MiSKStrn#App.kFileQuitShortcut maEnInt EncoInt flagInt SuprStrn QuitMenuItemEndGInt EndGInt MItmGrup\spmuInt nameStrnEditMenutextStrn&Edit indxInt scutStrnmaEnInt EncoInt flagInt SuprStrnMenuItemMItmGrupspmuInt nameStrnEditUndotextStrn&Undo indxInt scutStrnCmd+Z MiSKStrnZ MiMkInt maEnInt EncoInt flagInt SuprStrnMenuItemEndGInt MItmGrupspmuInt nameStrn UntitledMenu1 textStrn- indxInt scutStrnmaEnInt EncoInt flagInt SuprStrnMenuItemEndGInt MItmGrupspmuInt nameStrnEditCut textStrnCu&tindxInt scutStrnCmd+X MiSKStrnX MiMkInt maEnInt EncoInt flagInt SuprStrnMenuItemEndGInt MItmGrupspmuInt nameStrnEditCopytextStrn&Copy indxInt scutStrnCmd+C MiSKStrnC MiMkInt maEnInt EncoInt flagInt SuprStrnMenuItemEndGInt MItmGrupspmuInt nameStrn EditPaste textStrn&Paste indxInt scutStrnCmd+V MiSKStrnV MiMkInt maEnInt EncoInt flagInt SuprStrnMenuItemEndGInt MItmGrupspmuInt nameStrn EditClear textStrn#App.kEditClear indxInt scutStrnmaEnInt EncoInt flagInt SuprStrnMenuItemEndGInt MItmGrupspmuInt nameStrn UntitledMenu0 textStrn- indxInt scutStrnmaEnInt EncoInt flagInt SuprStrnMenuItemEndGInt MItmGrupspmuInt nameStrn EditSelectAll textStrn Select &All indxInt scutStrnCmd+A MiSKStrnA MiMkInt maEnInt EncoInt flagInt SuprStrnMenuItemEndGInt EndGInt PadnPadn****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************BlokpObj3ONameStrnFuture ContInt paswStrnbClsInt bNtrInt CompStrnMethGrup(nameStrn Constructor CompStrnVsblInt sorcGrupEncoInt srclStrnSub Constructor() srclStrn&// The object starts out uninitialized srclStrnmInitialized = falsesrclStrnsrclStrn"// We want to make a new semaphore srclStrn$// so that we can block threads whensrclStrn // needed. srclStrnmLock = new Semaphore srclStrnsrclStrn&// The semaphore starts out originally srclStrn(// locked so that any thread calling GetsrclStrn&// will have to block. If someone has srclStrn&// already called Set though, then the srclStrn)// call to Get won't ever try to lock the srclStrn// semaphore, so it's fine. srclStrn mLock.SignalsrclStrnEnd Sub EndGInt EncoInt AlasStrnflagInt shrdInt parmStrnrsltStrnEndGInt PropGrupEncoInt declStrnmLock As Semaphore flagInt !CompStrnshrdInt sorcGrupEncoInt srclStrnmLock As Semaphore srclStrn+This is the lock used by the Value computed srclStrnproperty's getter and setter. EndGInt EndGInt PropGrup EncoInt declStrnmValue As Variant flagInt !CompStrnshrdInt sorcGrupEncoInt srclStrnmValue As Variant srclStrn5This is the backing storage for the class. It's used srclStrnby the Value computed property EndGInt EndGInt PropGrupEncoInt declStrnmInitialized As Boolean flagInt !CompStrnshrdInt sorcGrupEncoInt srclStrnmInitialized As Boolean srclStrn&We set this to true once we initialize srclStrn the value. EndGInt EndGInt PropGruppEncoInt declStrnValue As VariantflagInt CompStrnshrdInt sorcGrup8EncoInt srclStrnValue As VariantsrclStrnEndGInt CPrsGrup EncoInt srclStrnSet srclStrn// Set the valuesrclStrnmValue = value srclStrnsrclStrnsrclStrnif not mInitialized thensrclStrn+// The value is now initialized, so flag it srclStrnmInitialized = true srclStrnsrclStrn-// We need to release as many locks as we can srclStrn1// because there could be multiple locks obtained srclStrn"// from other threads calling Get. srclStrnwhile not mLock.TrySignal srclStrn mLock.Release srclStrnwendsrclStrnsrclStrn/// At this point, we own the lock again, but we srclStrn4// know there's only one lock. So release it. ThissrclStrn.// means that the semaphore is now back to the srclStrn// unlocked state srclStrn mLock.Release srclStrnend if srclStrnEnd Set EndGInt CPrgGrupEncoInt srclStrnGet srclStrn'// If the value hasn't been initialized srclStrn&// yet, then we need to lock ourselves srclStrn// until someone calls Set srclStrn%if not mInitialized then mLock.Signal srclStrnsrclStrn.// At this point, the value is initialized, so srclStrn// we can just return itsrclStrn return mValue srclStrnEnd Get EndGInt EndGInt VwBhGrup VwPrGrup0NameStrnNameVsblInt PrGpStrnID EndGInt VwPrGrupLNameStrnIndex VsblInt PrGpStrnID PValStrn -2147483648 EndGInt VwPrGrup4NameStrnSuper VsblInt PrGpStrnID EndGInt VwPrGrupDNameStrnLeftVsblInt PrGpStrnPositionPValStrn0 EndGInt VwPrGrupDNameStrnTop VsblInt PrGpStrnPositionPValStrn0 EndGInt VwPrGrup@NameStrn mInitializedPrGpStrnBehaviorPValStrn0 EndGInt EndGInt PadnPadnT****************************************************************************************************************************************************************************************************************************************************************************************************************************************************BlokpUIsWnStGrupOTabGrupContInt eSptInt EndGInt OTabGrupContInt 3OEndGInt OTabGrupContInt BEndGInt LsLcStrnFuture.Value.SetrEdtRectsEndGInt PadnPadn************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************EOF!