RbBFBlokProjPSIVStrn2006.01 ACnmStrnAChpStrnACsvStrnVer1Strn1 Ver2Strn0 Ver3Strn0 RelsStrn0 NnRlStrn0 RegnStrnSVerStrnLVerStrnIVerStrnaiviInt DVewInt 7prTpInt DLanInt CLanInt DEncInt BflgInt IconGrupEndGInt MacCStrnBMacStrnMy Application (Classic)BCarStrnMy Application BCMOStrnMy Application BSizInt @BMSzInt BSzSStrn4096BMSSStrn2048MDIcStrnBWinStrnMy Application.exe BMDIInt WcmNStrnWpNmStrnWiNmStrnBL86Strn MyApplication PadnPadn********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************BlokpObj tgNameStrnApp ContInt paswStrnbClsInt SuprStrn Application bNtrInt bApOInt CompStrnPDefGrup$nameStrnMenuBar PValInt eEndGInt 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 CnstGrupEncoInt nameStrn kEditClear typeInt defnStrn&Delete flagInt CInsGrup0pltfInt langInt defnStrn&Delete EndGInt CInsGrup0pltfInt langInt defnStrn&Delete EndGInt EndGInt PadnPadnd****************************************************************************************************BlokpVew78NameStrnWindow1 ContInt paswStrnbClsInt SuprStrnWindow bNtrInt CompStrnHInsGrupnameStrnOpenCompStrnVsblInt sorcGrup`EncoInt srclStrn Sub Open() srclStrnShareMe = new TestData srclStrnEnd Sub EndGInt EndGInt PropGrupTEncoInt declStrnShareMe As TestData flagInt !CompStrnshrdInt EndGInt PDefGrup0nameStrnMenuBar PValStrn 1707282431 EndGInt PDefGrup( nameStrn MacProcID PValInt EndGInt  PDefGrup4!nameStrn BalloonHelp EncoInt PValStrnEndGInt !PDefGrup0"nameStrnMinimizeButton PValStrnTrueEndGInt "PDefGrup4#nameStrnMaximizeButton PValStrnFalse EndGInt #PDefGrup0$nameStrn LiveResize PValStrnFalse EndGInt $PDefGrup0%nameStrn Resizeable PValStrnFalse EndGInt %PDefGrup,&nameStrn CloseButton PValStrnTrueEndGInt &PDefGrup0'nameStrnMenuBarVisible PValStrnTrueEndGInt 'PDefGrup0(nameStrn FullScreen PValStrnFalse EndGInt (PDefGrup()nameStrnVisible PValStrnTrueEndGInt )PDefGrup8*nameStrnTitle EncoInt PValStrnUntitledEndGInt *PDefGrup$+nameStrnBackdropPValStrnEndGInt +PDefGrup(,nameStrn BackColor PValInt EndGInt ,PDefGrup0-nameStrn HasBackColorPValStrnFalse EndGInt -PDefGrup0.nameStrn Composite PValStrnFalse EndGInt .PDefGrup$/nameStrnFrame PValInt EndGInt /PDefGrup(0nameStrn MaxHeight PValInt }EndGInt 0PDefGrup$1nameStrnMaxWidthPValInt }EndGInt 1PDefGrup(2nameStrn MinHeight PValInt @EndGInt 2PDefGrup$3nameStrnMinWidthPValInt @EndGInt 3PDefGrup$4nameStrnHeight PValInt ,EndGInt 4PDefGrup$5nameStrnWidth PValInt ,EndGInt 5PDefGrup(6nameStrn Placement PValInt EndGInt 6VwBhGrup 7VwPrGrup08NameStrnNameVsblInt PrGpStrnID EndGInt 8VwPrGrup89NameStrn Interfaces VsblInt PrGpStrnID EndGInt 9VwPrGrup4:NameStrnSuper VsblInt PrGpStrnID EndGInt :VwPrGrup;NameStrn Placement VsblInt PrGpStrnPositionPValStrn0 EnumGrupNameStrnHeight VsblInt PrGpStrnPositionPValStrn300 EndGInt >VwPrGrupH?NameStrnMinWidthVsblInt PrGpStrnPositionPValStrn64 EndGInt ?VwPrGrupL@NameStrn MinHeight VsblInt PrGpStrnPositionPValStrn64 EndGInt @VwPrGrupLANameStrnMaxWidthVsblInt PrGpStrnPositionPValStrn32000 EndGInt AVwPrGrupPBNameStrn MaxHeight VsblInt PrGpStrnPositionPValStrn32000 EndGInt BVwPrGrupCNameStrnFrame VsblInt PrGpStrn Appearance PValStrn0 EnumGrupPDdefnStrn 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 DEndGInt CVwPrGrupTENameStrn Composite VsblInt PrGpStrn Appearance PValStrnFalse EndGInt EVwPrGrupTFNameStrn HasBackColorVsblInt PrGpStrn Appearance PValStrnFalse EndGInt FVwPrGrupTGNameStrn BackColor VsblInt PrGpStrn Appearance PValStrn&hFFFFFFEndGInt GVwPrGrup<HNameStrnBackdropVsblInt PrGpStrn Appearance EndGInt HVwPrGrupPINameStrnTitle VsblInt PrGpStrn Appearance PValStrnUntitledEndGInt IVwPrGrupLJNameStrnVisible VsblInt PrGpStrn Appearance PValStrnTrueEndGInt JVwPrGrupTKNameStrn FullScreen VsblInt PrGpStrn Appearance PValStrnFalse EndGInt KVwPrGrupTLNameStrnMenuBarVisible VsblInt PrGpStrn Appearance PValStrnTrueEndGInt LVwPrGrupPMNameStrn CloseButton VsblInt PrGpStrn Appearance PValStrnTrueEndGInt MVwPrGrupTNNameStrn Resizeable VsblInt PrGpStrn Appearance PValStrnFalse EndGInt NVwPrGrupTONameStrn LiveResize VsblInt PrGpStrn Appearance PValStrnFalse EndGInt OVwPrGrupXPNameStrnMaximizeButton VsblInt PrGpStrn Appearance PValStrnFalse EndGInt PVwPrGrupTQNameStrnMinimizeButton VsblInt PrGpStrn Appearance PValStrnTrueEndGInt QVwPrGrup@RNameStrn BalloonHelp VsblInt PrGpStrn Appearance EndGInt RVwPrGrupPSNameStrn MacProcID VsblInt PrGpStrn Appearance PValStrn0 EndGInt SVwPrGrup<TNameStrnMenuBar VsblInt PrGpStrn Appearance EndGInt TEndGInt 7CBhvGrupUSuprStrnThread HInsGrupVnameStrnRun CompStrnVsblInt sorcGrupxWEncoInt srclStrn Sub Run() srclStrn0ShareMe.AccessData( StaticText1, "Thread1.Run" )srclStrnEnd Sub EndGInt WEndGInt VEndGInt UCBhvGrupXSuprStrnThread HInsGrupYnameStrnRun CompStrnVsblInt sorcGrupxZEncoInt srclStrn Sub Run() srclStrn0ShareMe.AccessData( StaticText1, "Thread2.Run" )srclStrnEnd Sub EndGInt ZEndGInt YEndGInt XCBhvGrup[SuprStrn StaticText EndGInt [CBhvGrup \SuprStrn PushButton HInsGrup]nameStrnAction CompStrnVsblInt sorcGrup^EncoInt srclStrn Sub Action()srclStrn Thread1.Run srclStrnsrclStrn7ShareMe.AccessData( StaticText1, "PushButton1.Action" ) srclStrnEnd Sub EndGInt ^EndGInt ]EndGInt \CBhvGrup _SuprStrn PushButton HInsGrup`nameStrnAction CompStrnVsblInt sorcGrupaEncoInt srclStrn Sub Action()srclStrn7ShareMe.AccessData( StaticText1, "PushButton2.Action" ) srclStrnsrclStrn Thread2.Run srclStrnEnd Sub EndGInt aEndGInt `EndGInt _CtrlGrup<bcclsStrnThread nameStrnThread PDefGrup(cnameStrn StackSize PValInt EndGInt cPDefGrup$dnameStrnPriorityPValInt EndGInt dPDefGrup enameStrnTop PValInt ?EndGInt ePDefGrup fnameStrnLeftPValInt EndGInt fPDefGrup(gnameStrn ControlOrderPValInt EndGInt gPDefGrup8hnameStrnSuper EncoInt PValStrnThread EndGInt hPDefGrup$inameStrnIndex PValInt EndGInt iPDefGrup4jnameStrnNameEncoInt PValStrnThread1 EndGInt jCBixInt EndGInt bCtrlGrupkcclsStrnThread nameStrnThread PDefGrup,lnameStrn TabPanelIndex PValInt EndGInt lPDefGrup(mnameStrn StackSize PValInt EndGInt mPDefGrup$nnameStrnPriorityPValInt EndGInt nPDefGrup onameStrnTop PValInt ?EndGInt oPDefGrup pnameStrnLeftPValInt *EndGInt pPDefGrup(qnameStrn ControlOrderPValInt EndGInt qPDefGrup8rnameStrnSuper EncoInt PValStrnThread EndGInt rPDefGrup$snameStrnIndex PValInt EndGInt sPDefGrup4tnameStrnNameEncoInt PValStrnThread2 EndGInt tCBixInt EndGInt kCtrlGrupucclsStrn StaticText nameStrn StaticText PDefGrup8vnameStrn InitialParent EncoInt PValStrnEndGInt vPDefGrup4wnameStrn DataField EncoInt PValStrnEndGInt wPDefGrup4xnameStrn DataSource EncoInt PValStrnEndGInt xPDefGrup(ynameStrn Underline PValStrnEndGInt yPDefGrup$znameStrnItalic PValStrnEndGInt zPDefGrup {nameStrnBoldPValStrnEndGInt {PDefGrup$|nameStrnTextSizePValInt EndGInt |PDefGrup8}nameStrnTextFontEncoInt PValStrnSystem EndGInt }PDefGrup0~nameStrnAutoDeactivate PValStrnTrueEndGInt ~PDefGrup0nameStrnHelpTag EncoInt PValStrnEndGInt PDefGrup(nameStrnVisible PValStrnTrueEndGInt PDefGrup(nameStrnEnabled PValStrnTrueEndGInt PDefGrup(nameStrn Multiline PValStrnEndGInt PDefGrup(nameStrn TextColor PValInt EndGInt PDefGrup(nameStrn TextAlign PValInt EndGInt PDefGrup<nameStrnTextEncoInt PValStrnPress a button 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 EndGInt PDefGrup nameStrnTop PValInt EndGInt PDefGrup nameStrnLeftPValInt EndGInt PDefGrup(nameStrn ControlOrderPValInt EndGInt PDefGrup<nameStrnSuper EncoInt PValStrn StaticText EndGInt PDefGrup$nameStrnIndex PValInt EndGInt PDefGrup8nameStrnNameEncoInt PValStrn StaticText1 EndGInt CBixInt EndGInt uCtrlGrupcclsStrn 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 PDefGrup4nameStrnCaption EncoInt PValStrnOne 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 PDefGrup(nameStrn ControlOrderPValInt EndGInt PDefGrup<nameStrnSuper EncoInt PValStrn PushButton EndGInt PDefGrup$nameStrnIndex PValInt EndGInt PDefGrup8nameStrnNameEncoInt PValStrn PushButton1 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 PDefGrup4nameStrnCaption EncoInt PValStrnTwo 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 mEndGInt PDefGrup(nameStrn ControlOrderPValInt EndGInt PDefGrup<nameStrnSuper EncoInt PValStrn PushButton EndGInt PDefGrup$nameStrnIndex PValInt EndGInt PDefGrup8nameStrnNameEncoInt PValStrn PushButton2 EndGInt CBixInt EndGInt PadnPadn****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************BlokpMnue 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 MItmGrup|spmuInt nameStrntextStrn- 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 MItmGrup|spmuInt nameStrntextStrn- indxInt scutStrnmaEnInt EncoInt flagInt SuprStrnMenuItemEndGInt MItmGrupspmuInt nameStrn EditSelectAll textStrn Select &All indxInt scutStrnCmd+A MiSKStrnA MiMkInt maEnInt EncoInt flagInt SuprStrnMenuItemEndGInt EndGInt PadnPadn************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************BlokpObj5NameStrnSyncContInt paswStrnbClsInt bNtrInt CompStrnMethGrupnameStrnLockCompStrnVsblInt sorcGrupEncoInt srclStrnSub Lock(v as Variant) srclStrn'// The user wants to lock access to the srclStrn*// data passed in. So the first thing we srclStrn+// need to do is see whether our Dictionary srclStrn)// already has a semaphore for this data. srclStrnsrclStrn4if mResources = nil then mResources = new DictionarysrclStrnsrclStrnif mResources.HasKey( v ) then srclStrn2// We already have this key in the dictionary. So srclStrn4// we want to access the value, which is a semaphoresrclStrn // object. srclStrn,dim sem as Semaphore = mResources.Value( v )srclStrnsrclStrn-// Now we want to signal the semaphore. This srclStrn0// will cause the thread to block if some other srclStrn1// thread has already accessed this same variant. srclStrn sem.Signal srclStrnsrclStrn-// Now the thread can access the resource, so srclStrn// we're done here. srclStrnreturn srclStrnend if srclStrnsrclStrn*// If we got here, then there's no key for srclStrn// this Variant. So make one! srclStrndim sem as new SemaphoresrclStrnmResources.Value( v ) = sem srclStrnsrclStrn// And lock it srclStrn sem.Signal srclStrnsrclStrn// Now we're done srclStrnsrclStrnEnd Sub EndGInt EncoInt AlasStrnflagInt shrdInt parmStrn v as VariantrsltStrnEndGInt MethGrupnameStrnEndLock CompStrnVsblInt sorcGrup\EncoInt srclStrnSub EndLock(v as Variant) srclStrn// The user is done accessing srclStrn"// this particular resource, so we srclStrn'// need to dig it out of the Dictionary srclStrn// and release it srclStrnsrclStrn// Sanity check #1 srclStrnif mResources = nil thensrclStrndim exp as new RuntimeException srclStrn@exp.Message = "You have called EndLock before ever calling Lock"srclStrn raise exp srclStrnsrclStrnreturn srclStrnend if srclStrnsrclStrn// Sanity check #2 srclStrn"if not mResources.HasKey( v ) then srclStrndim exp as new RuntimeException srclStrn[exp.Message = "You have called EndLock before ever calling Lock for this particular object" srclStrn raise exp srclStrnsrclStrnreturn srclStrnend if srclStrnsrclStrn!// Now we know that we've got the srclStrn"// semaphore in our dictionary, so srclStrn// grab it out and release it. srclStrn,dim sem as Semaphore = mResources.Value( v )srclStrn sem.Release srclStrnsrclStrn// We're done! srclStrnEnd Sub EndGInt EncoInt AlasStrnflagInt shrdInt parmStrn v as VariantrsltStrnEndGInt PropGrupXEncoInt declStrnmResources As DictionaryflagInt !CompStrnshrdInt EndGInt VwBhGrupVwPrGrup0NameStrnNameVsblInt PrGpStrnID EndGInt VwPrGrupLNameStrnIndex VsblInt PrGpStrnID PValStrn -2147483648 EndGInt VwPrGrup4NameStrnSuper VsblInt PrGpStrnID EndGInt VwPrGrupDNameStrnLeftVsblInt PrGpStrnPositionPValStrn0 EndGInt VwPrGrupDNameStrnTop VsblInt PrGpStrnPositionPValStrn0 EndGInt EndGInt PadnPadnt****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************BlokpObj&NameStrnTestDataContInt paswStrnbClsInt bNtrInt CompStrnMethGrup\nameStrn AccessData CompStrnVsblInt sorcGrupEncoInt srclStrn4Sub AccessData(s as StaticText, fromWhere as String)srclStrnSync.Lock( self ) srclStrnsrclStrnmTest = mTest + 1 srclStrn;s.Text = fromWhere + " accessed. Value is " + Str( mTest ) srclStrns.Refresh( false ) srclStrnsrclStrn// Wait for a decent while srclStrnApp.SleepCurrentThread( 2000 ) srclStrnsrclStrnSync.EndLock( self )srclStrnEnd Sub EndGInt EncoInt AlasStrnflagInt shrdInt parmStrn$s as StaticText, fromWhere as StringrsltStrnEndGInt PropGrupPEncoInt declStrnmTest As IntegerflagInt !CompStrnshrdInt EndGInt VwBhGrupVwPrGrup0NameStrnNameVsblInt PrGpStrnID EndGInt VwPrGrupLNameStrnIndex VsblInt PrGpStrnID PValStrn -2147483648 EndGInt VwPrGrup4NameStrnSuper VsblInt PrGpStrnID EndGInt VwPrGrupDNameStrnLeftVsblInt PrGpStrnPositionPValStrn0 EndGInt VwPrGrupDNameStrnTop VsblInt PrGpStrnPositionPValStrn0 EndGInt VwPrGrup<NameStrnmTest PrGpStrnBehaviorPValStrn0 EndGInt EndGInt PadnPadn************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************BlokpUIsWnStGrupOTabGrupContInt eSptInt EndGInt OTabGrupContInt 5EndGInt OTabGrupContInt 7EndGInt OTabGrupContInt 7EndGInt OTabGrupContInt &EndGInt LsLcStrnWindow1.PushButton2.Action rEdtRect 2lEndGInt PadnPadn****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************EOF!