summaryrefslogtreecommitdiff
path: root/IvyCursor
diff options
context:
space:
mode:
authorfcolin2007-02-01 13:29:31 +0000
committerfcolin2007-02-01 13:29:31 +0000
commitafe2e7dfc1388cad991e8d38dda7d648c137aa52 (patch)
tree92bf63d2b2b34a805927aa294c7c51912638f66a /IvyCursor
parent0be65f8a110ee9bf5da9c93e0bd5b5b62b3bad0c (diff)
parent04c263c314499e38d64af9d4a1aa5e2b8d9d5ead (diff)
downloadivy-cplusplus-afe2e7dfc1388cad991e8d38dda7d648c137aa52.zip
ivy-cplusplus-afe2e7dfc1388cad991e8d38dda7d648c137aa52.tar.gz
ivy-cplusplus-afe2e7dfc1388cad991e8d38dda7d648c137aa52.tar.bz2
ivy-cplusplus-afe2e7dfc1388cad991e8d38dda7d648c137aa52.tar.xz
modif struct svnwindows@3001
Diffstat (limited to 'IvyCursor')
-rw-r--r--IvyCursor/InstIvyCursor/InstIvyCursor.vdproj797
-rw-r--r--IvyCursor/InstIvyCursor/InstIvyCursor.vdproj.vspscc10
-rw-r--r--IvyCursor/IvyCursor.cpp325
-rw-r--r--IvyCursor/IvyCursor.h3
-rw-r--r--IvyCursor/IvyCursor.icobin0 -> 22534 bytes
-rw-r--r--IvyCursor/IvyCursor.rc115
-rw-r--r--IvyCursor/IvyCursor.sln55
-rw-r--r--IvyCursor/IvyCursor.vcproj177
-rw-r--r--IvyCursor/IvyCursor.vcproj.vspscc10
-rw-r--r--IvyCursor/IvyCursor.vssscc10
-rw-r--r--IvyCursor/ReadMe.txt53
-rw-r--r--IvyCursor/resource.h28
-rw-r--r--IvyCursor/small.icobin0 -> 23558 bytes
-rw-r--r--IvyCursor/stdafx.cpp8
-rw-r--r--IvyCursor/stdafx.h18
15 files changed, 1609 insertions, 0 deletions
diff --git a/IvyCursor/InstIvyCursor/InstIvyCursor.vdproj b/IvyCursor/InstIvyCursor/InstIvyCursor.vdproj
new file mode 100644
index 0000000..69a3248
--- /dev/null
+++ b/IvyCursor/InstIvyCursor/InstIvyCursor.vdproj
@@ -0,0 +1,797 @@
+"DeployProject"
+{
+"VSVersion" = "3:701"
+"ProjectType" = "8:{2C2AF0D9-9B47-4FE5-BEF2-169778172667}"
+"IsWebType" = "8:FALSE"
+"ProjectName" = "8:Install"
+"LanguageId" = "3:1036"
+"CodePage" = "3:1252"
+"UILanguageId" = "3:1036"
+"SccProjectName" = "8:SAK"
+"SccLocalPath" = "8:SAK"
+"SccAuxPath" = "8:SAK"
+"SccProvider" = "8:SAK"
+ "Hierarchy"
+ {
+ "Entry"
+ {
+ "MsmKey" = "8:_4E16B1233013473896B5B14884B766C6"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_5A688E16C8FB4F969BAAF36ACF9DE131"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_8E374943E56221993853F7D9051D7B42"
+ "OwnerKey" = "8:_4E16B1233013473896B5B14884B766C6"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_CD5F4F48D63B4317962CABF981642C29"
+ "OwnerKey" = "8:_4E16B1233013473896B5B14884B766C6"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_CE3A08225274427BA9D9B77094DAD99A"
+ "OwnerKey" = "8:_4E16B1233013473896B5B14884B766C6"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ }
+ "Configurations"
+ {
+ "Debug"
+ {
+ "DisplayName" = "8:Debug"
+ "IsDebugOnly" = "11:TRUE"
+ "IsReleaseOnly" = "11:FALSE"
+ "OutputFilename" = "8:Debug\\InstIvyCursor.msi"
+ "PackageFilesAs" = "3:2"
+ "PackageFileSize" = "3:-2147483648"
+ "CabType" = "3:1"
+ "Compression" = "3:2"
+ "SignOutput" = "11:FALSE"
+ "CertificateFile" = "8:"
+ "PrivateKeyFile" = "8:"
+ "TimeStampServer" = "8:"
+ "InstallerBootstrapper" = "3:2"
+ }
+ "Release"
+ {
+ "DisplayName" = "8:Release"
+ "IsDebugOnly" = "11:FALSE"
+ "IsReleaseOnly" = "11:TRUE"
+ "OutputFilename" = "8:..\\..\\..\\..\\Install\\IvyCursor.msi"
+ "PackageFilesAs" = "3:2"
+ "PackageFileSize" = "3:-2147483648"
+ "CabType" = "3:1"
+ "Compression" = "3:2"
+ "SignOutput" = "11:FALSE"
+ "CertificateFile" = "8:"
+ "PrivateKeyFile" = "8:"
+ "TimeStampServer" = "8:"
+ "InstallerBootstrapper" = "3:1"
+ }
+ }
+ "Deployable"
+ {
+ "CustomAction"
+ {
+ }
+ "DefaultFeature"
+ {
+ "Name" = "8:DefaultFeature"
+ "Title" = "8:"
+ "Description" = "8:"
+ }
+ "ExternalPersistence"
+ {
+ "LaunchCondition"
+ {
+ }
+ }
+ "Feature"
+ {
+ }
+ "File"
+ {
+ "{A582A373-4685-4296-BEFE-614B80A702C3}:_8E374943E56221993853F7D9051D7B42"
+ {
+ "SourcePath" = "8:WSOCK32.dll"
+ "TargetName" = "8:WSOCK32.dll"
+ "Tag" = "8:"
+ "Folder" = "8:_4032CB2519934BECBD77C58A883B04AC"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:TRUE"
+ "IsDependency" = "11:TRUE"
+ "IsolateTo" = "8:"
+ }
+ }
+ "FileType"
+ {
+ }
+ "Folder"
+ {
+ "{58C0ADA3-3CEA-43BD-A3B3-2EA121BC8217}:_4032CB2519934BECBD77C58A883B04AC"
+ {
+ "DefaultLocation" = "8:[ProgramFilesFolder][Manufacturer]\\[ProductName]"
+ "Name" = "8:#1925"
+ "AlwaysCreate" = "11:FALSE"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Property" = "8:TARGETDIR"
+ "Folders"
+ {
+ }
+ }
+ "{78BAF5CE-F2E5-45BE-83BC-DB6AF387E941}:_664713DFF3804FDBAB8E117608A0FABC"
+ {
+ "Name" = "8:#1919"
+ "AlwaysCreate" = "11:FALSE"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Property" = "8:ProgramMenuFolder"
+ "Folders"
+ {
+ }
+ }
+ "{78BAF5CE-F2E5-45BE-83BC-DB6AF387E941}:_A192F2DB771043B083A2C45490FA442F"
+ {
+ "Name" = "8:#1916"
+ "AlwaysCreate" = "11:FALSE"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Property" = "8:DesktopFolder"
+ "Folders"
+ {
+ }
+ }
+ }
+ "LaunchCondition"
+ {
+ }
+ "Locator"
+ {
+ }
+ "MsiBootstrapper"
+ {
+ "LangId" = "3:1036"
+ }
+ "Product"
+ {
+ "Name" = "8:Microsoft Visual Studio"
+ "ProductName" = "8:IvyCursor"
+ "ProductCode" = "8:{0A313183-7BCE-4AD0-B5BB-FD4A32104B32}"
+ "PackageCode" = "8:{60E055D3-3D7E-4515-9203-37EB79A12EF3}"
+ "UpgradeCode" = "8:{B9048C4D-4B78-4498-8634-FA5726303A10}"
+ "RestartWWWService" = "11:FALSE"
+ "RemovePreviousVersions" = "11:FALSE"
+ "DetectNewerInstalledVersion" = "11:TRUE"
+ "ProductVersion" = "8:1.0.0"
+ "Manufacturer" = "8:CENA"
+ "ARPHELPTELEPHONE" = "8:"
+ "ARPHELPLINK" = "8:"
+ "Title" = "8:IvyCursor"
+ "Subject" = "8:"
+ "ARPCONTACT" = "8:CENA"
+ "Keywords" = "8:"
+ "ARPCOMMENTS" = "8:"
+ "ARPURLINFOABOUT" = "8:"
+ "ARPPRODUCTICON" = "8:"
+ "ARPIconIndex" = "3:0"
+ "SearchPath" = "8:"
+ "UseSystemSearchPath" = "11:TRUE"
+ }
+ "Registry"
+ {
+ "HKLM"
+ {
+ "Keys"
+ {
+ "{6A471EEF-D31B-40F8-BCF6-C9E8EC783F36}:_F6740CA6BCA84BB49508BADA0BBCBBBF"
+ {
+ "Name" = "8:Software"
+ "Condition" = "8:"
+ "AlwaysCreate" = "11:FALSE"
+ "DeleteAtUninstall" = "11:FALSE"
+ "Transitive" = "11:FALSE"
+ "Keys"
+ {
+ "{6A471EEF-D31B-40F8-BCF6-C9E8EC783F36}:_C20FFB7B3DF34F7280C6464E7AB3F96F"
+ {
+ "Name" = "8:[Manufacturer]"
+ "Condition" = "8:"
+ "AlwaysCreate" = "11:FALSE"
+ "DeleteAtUninstall" = "11:FALSE"
+ "Transitive" = "11:FALSE"
+ "Keys"
+ {
+ }
+ "Values"
+ {
+ }
+ }
+ }
+ "Values"
+ {
+ }
+ }
+ }
+ }
+ "HKCU"
+ {
+ "Keys"
+ {
+ "{6A471EEF-D31B-40F8-BCF6-C9E8EC783F36}:_79D7593CDD5549DC9DD26DC610419BB0"
+ {
+ "Name" = "8:Software"
+ "Condition" = "8:"
+ "AlwaysCreate" = "11:FALSE"
+ "DeleteAtUninstall" = "11:FALSE"
+ "Transitive" = "11:FALSE"
+ "Keys"
+ {
+ "{6A471EEF-D31B-40F8-BCF6-C9E8EC783F36}:_F5467127899F4382B8608654B9BD162D"
+ {
+ "Name" = "8:[Manufacturer]"
+ "Condition" = "8:"
+ "AlwaysCreate" = "11:FALSE"
+ "DeleteAtUninstall" = "11:FALSE"
+ "Transitive" = "11:FALSE"
+ "Keys"
+ {
+ }
+ "Values"
+ {
+ }
+ }
+ }
+ "Values"
+ {
+ }
+ }
+ }
+ }
+ "HKCR"
+ {
+ "Keys"
+ {
+ }
+ }
+ "HKU"
+ {
+ "Keys"
+ {
+ }
+ }
+ "HKPU"
+ {
+ "Keys"
+ {
+ }
+ }
+ }
+ "Sequences"
+ {
+ }
+ "Shortcut"
+ {
+ "{478F747B-8505-45D1-9AAE-8C3B645C26E3}:_1DD319DEBF174F32B022569E0FDC8231"
+ {
+ "Name" = "8:IvyCursor"
+ "Arguments" = "8:"
+ "Description" = "8:"
+ "ShowCmd" = "3:1"
+ "IconIndex" = "3:0"
+ "Transitive" = "11:FALSE"
+ "Target" = "8:_5A688E16C8FB4F969BAAF36ACF9DE131"
+ "Folder" = "8:_A192F2DB771043B083A2C45490FA442F"
+ "WorkingFolder" = "8:_4032CB2519934BECBD77C58A883B04AC"
+ "Icon" = "8:"
+ "Feature" = "8:"
+ }
+ "{478F747B-8505-45D1-9AAE-8C3B645C26E3}:_FFDAE000C8814769B666A79E1A1874E9"
+ {
+ "Name" = "8:IvyCursor"
+ "Arguments" = "8:"
+ "Description" = "8:"
+ "ShowCmd" = "3:1"
+ "IconIndex" = "3:0"
+ "Transitive" = "11:FALSE"
+ "Target" = "8:_5A688E16C8FB4F969BAAF36ACF9DE131"
+ "Folder" = "8:_664713DFF3804FDBAB8E117608A0FABC"
+ "WorkingFolder" = "8:_4032CB2519934BECBD77C58A883B04AC"
+ "Icon" = "8:"
+ "Feature" = "8:"
+ }
+ }
+ "UserInterface"
+ {
+ "{8D9DEE8B-DD8B-4F48-9072-C4364E4F4011}:_0636F50D084F44628ABC60E0B92F6482"
+ {
+ "Name" = "8:#1901"
+ "Sequence" = "3:2"
+ "Attributes" = "3:2"
+ "Dialogs"
+ {
+ "{18ADD6EC-89FE-4ED7-AD3E-211C40278470}:_9DF06B29188C410D86056403380FE6D0"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Progression"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdAdminProgressDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "ShowProgress"
+ {
+ "Name" = "8:ShowProgress"
+ "DisplayName" = "8:#1009"
+ "Description" = "8:#1109"
+ "Type" = "3:5"
+ "ContextData" = "8:1;True=1;False=0"
+ "Attributes" = "3:0"
+ "Setting" = "3:0"
+ "Value" = "3:1"
+ "DefaultValue" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{8D9DEE8B-DD8B-4F48-9072-C4364E4F4011}:_18CABE436CC84533888CCE0E7AFABFC7"
+ {
+ "Name" = "8:#1902"
+ "Sequence" = "3:2"
+ "Attributes" = "3:3"
+ "Dialogs"
+ {
+ "{18ADD6EC-89FE-4ED7-AD3E-211C40278470}:_4BBF6ECCF3FF4CCE9DF57D69257EACFE"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Terminé"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdAdminFinishedDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{8D9DEE8B-DD8B-4F48-9072-C4364E4F4011}:_2A026925638547F882E2143EB6CBFB47"
+ {
+ "Name" = "8:#1900"
+ "Sequence" = "3:1"
+ "Attributes" = "3:1"
+ "Dialogs"
+ {
+ "{18ADD6EC-89FE-4ED7-AD3E-211C40278470}:_BA40ECBCA4F74472B6B4A2B850EF0B58"
+ {
+ "Sequence" = "3:200"
+ "DisplayName" = "8:Dossier d'installation"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdFolderDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ "{18ADD6EC-89FE-4ED7-AD3E-211C40278470}:_CA4454662068449AB70A51A0D6B62F45"
+ {
+ "Sequence" = "3:300"
+ "DisplayName" = "8:Confirmer l'installation"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdConfirmDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ "{18ADD6EC-89FE-4ED7-AD3E-211C40278470}:_D88802A5F2B14E358204211F16EB4FAE"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Bienvenue"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdWelcomeDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "CopyrightWarning"
+ {
+ "Name" = "8:CopyrightWarning"
+ "DisplayName" = "8:#1002"
+ "Description" = "8:#1102"
+ "Type" = "3:3"
+ "ContextData" = "8:"
+ "Attributes" = "3:0"
+ "Setting" = "3:1"
+ "Value" = "8:#1202"
+ "DefaultValue" = "8:#1202"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "Welcome"
+ {
+ "Name" = "8:Welcome"
+ "DisplayName" = "8:#1003"
+ "Description" = "8:#1103"
+ "Type" = "3:3"
+ "ContextData" = "8:"
+ "Attributes" = "3:0"
+ "Setting" = "3:1"
+ "Value" = "8:#1203"
+ "DefaultValue" = "8:#1203"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{8D9DEE8B-DD8B-4F48-9072-C4364E4F4011}:_6987FD35A7A4427285F47DF69B3F46AC"
+ {
+ "Name" = "8:#1902"
+ "Sequence" = "3:1"
+ "Attributes" = "3:3"
+ "Dialogs"
+ {
+ "{18ADD6EC-89FE-4ED7-AD3E-211C40278470}:_0B3BD974222A492098588B27DB307CDA"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Terminé"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdFinishedDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "UpdateText"
+ {
+ "Name" = "8:UpdateText"
+ "DisplayName" = "8:#1058"
+ "Description" = "8:#1158"
+ "Type" = "3:15"
+ "ContextData" = "8:"
+ "Attributes" = "3:0"
+ "Setting" = "3:1"
+ "Value" = "8:#1258"
+ "DefaultValue" = "8:#1258"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{B654A020-6903-4E6A-A86C-75DC463DB54B}:_BD34D23EE7874F2E8422867476425191"
+ {
+ "UseDynamicProperties" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdBasicDialogs.wim"
+ }
+ "{B654A020-6903-4E6A-A86C-75DC463DB54B}:_CF0CE67F9DDB4AF5A48F2F086BAB4C42"
+ {
+ "UseDynamicProperties" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdUserInterface.wim"
+ }
+ "{8D9DEE8B-DD8B-4F48-9072-C4364E4F4011}:_D9A2328703204827A30713BEAC6CF403"
+ {
+ "Name" = "8:#1901"
+ "Sequence" = "3:1"
+ "Attributes" = "3:2"
+ "Dialogs"
+ {
+ "{18ADD6EC-89FE-4ED7-AD3E-211C40278470}:_F15ADAF16F724C85916FA31593F72F8D"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Progression"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdProgressDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "ShowProgress"
+ {
+ "Name" = "8:ShowProgress"
+ "DisplayName" = "8:#1009"
+ "Description" = "8:#1109"
+ "Type" = "3:5"
+ "ContextData" = "8:1;True=1;False=0"
+ "Attributes" = "3:0"
+ "Setting" = "3:0"
+ "Value" = "3:1"
+ "DefaultValue" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{8D9DEE8B-DD8B-4F48-9072-C4364E4F4011}:_F12D846FFE1A4DC9B3126FA263DFD826"
+ {
+ "Name" = "8:#1900"
+ "Sequence" = "3:2"
+ "Attributes" = "3:1"
+ "Dialogs"
+ {
+ "{18ADD6EC-89FE-4ED7-AD3E-211C40278470}:_30F0F9F2A1834E0BA3D83DBD6F9BFAE9"
+ {
+ "Sequence" = "3:200"
+ "DisplayName" = "8:Dossier d'installation"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdAdminFolderDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ "{18ADD6EC-89FE-4ED7-AD3E-211C40278470}:_53970AAC5A024A3681F861F4BE2D650B"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Bienvenue"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdAdminWelcomeDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "CopyrightWarning"
+ {
+ "Name" = "8:CopyrightWarning"
+ "DisplayName" = "8:#1002"
+ "Description" = "8:#1102"
+ "Type" = "3:3"
+ "ContextData" = "8:"
+ "Attributes" = "3:0"
+ "Setting" = "3:1"
+ "Value" = "8:#1202"
+ "DefaultValue" = "8:#1202"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "Welcome"
+ {
+ "Name" = "8:Welcome"
+ "DisplayName" = "8:#1003"
+ "Description" = "8:#1103"
+ "Type" = "3:3"
+ "ContextData" = "8:"
+ "Attributes" = "3:0"
+ "Setting" = "3:1"
+ "Value" = "8:#1203"
+ "DefaultValue" = "8:#1203"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ "{18ADD6EC-89FE-4ED7-AD3E-211C40278470}:_A92D8986A08B4691BE0869927B5BCF43"
+ {
+ "Sequence" = "3:300"
+ "DisplayName" = "8:Confirmer l'installation"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdAdminConfirmDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ }
+ "MergeModule"
+ {
+ "{35A69C6E-5BA4-440D-803D-762B59A45393}:_CD5F4F48D63B4317962CABF981642C29"
+ {
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:TRUE"
+ "SourcePath" = "8:vc_user_stl71_rtl_x86_---.msm"
+ "Properties"
+ {
+ }
+ "LanguageId" = "3:0"
+ "Exclude" = "11:FALSE"
+ "Folder" = "8:"
+ "Feature" = "8:"
+ "IsolateTo" = "8:"
+ }
+ "{35A69C6E-5BA4-440D-803D-762B59A45393}:_CE3A08225274427BA9D9B77094DAD99A"
+ {
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:TRUE"
+ "SourcePath" = "8:vc_user_crt71_rtl_x86_---.msm"
+ "Properties"
+ {
+ }
+ "LanguageId" = "3:0"
+ "Exclude" = "11:FALSE"
+ "Folder" = "8:"
+ "Feature" = "8:"
+ "IsolateTo" = "8:"
+ }
+ }
+ "ProjectOutput"
+ {
+ "{8062640A-2EEE-46E9-AB67-688E9A886E9F}:_4E16B1233013473896B5B14884B766C6"
+ {
+ "SourcePath" = "8:..\\..\\Ivy\\Release\\Ivy.dll"
+ "TargetName" = "8:"
+ "Tag" = "8:"
+ "Folder" = "8:_4032CB2519934BECBD77C58A883B04AC"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ "ProjectOutputGroupRegister" = "3:1"
+ "OutputConfiguration" = "8:"
+ "OutputGroupCanonicalName" = "8:Built"
+ "OutputProjectGuid" = "8:{84E0039A-6721-4B18-9792-E9AE4274AC0E}"
+ "ShowKeyOutput" = "11:TRUE"
+ "ExcludeFilters"
+ {
+ }
+ }
+ "{8062640A-2EEE-46E9-AB67-688E9A886E9F}:_5A688E16C8FB4F969BAAF36ACF9DE131"
+ {
+ "SourcePath" = "8:..\\Release\\IvyCursor.exe"
+ "TargetName" = "8:"
+ "Tag" = "8:"
+ "Folder" = "8:_4032CB2519934BECBD77C58A883B04AC"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ "ProjectOutputGroupRegister" = "3:1"
+ "OutputConfiguration" = "8:"
+ "OutputGroupCanonicalName" = "8:Built"
+ "OutputProjectGuid" = "8:{5353F53D-8047-42AB-A3E1-73E6EAAFBBE6}"
+ "ShowKeyOutput" = "11:TRUE"
+ "ExcludeFilters"
+ {
+ }
+ }
+ }
+ "VJSharpPlugin"
+ {
+ }
+ }
+}
diff --git a/IvyCursor/InstIvyCursor/InstIvyCursor.vdproj.vspscc b/IvyCursor/InstIvyCursor/InstIvyCursor.vdproj.vspscc
new file mode 100644
index 0000000..326225f
--- /dev/null
+++ b/IvyCursor/InstIvyCursor/InstIvyCursor.vdproj.vspscc
@@ -0,0 +1,10 @@
+""
+{
+"FILE_VERSION" = "9237"
+"ENLISTMENT_CHOICE" = "NEVER"
+"PROJECT_FILE_RELATIVE_PATH" = "relative:InstIvyCursor"
+"NUMBER_OF_EXCLUDED_FILES" = "0"
+"ORIGINAL_PROJECT_FILE_PATH" = ""
+"NUMBER_OF_NESTED_PROJECTS" = "0"
+"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
+}
diff --git a/IvyCursor/IvyCursor.cpp b/IvyCursor/IvyCursor.cpp
new file mode 100644
index 0000000..8b5e48e
--- /dev/null
+++ b/IvyCursor/IvyCursor.cpp
@@ -0,0 +1,325 @@
+// IvyCursor.cpp : définit le point d'entrée pour l'application.
+//
+
+#include "stdafx.h"
+#include <winuser.h>
+#include <crtdbg.h>
+#include <shellapi.h>
+#include "Ivy.h"
+#include "IvyCursor.h"
+#define MAX_LOADSTRING 100
+
+#define WM_ICONTRAY_NOTIFY (WM_USER+150)
+// Variables globales :
+HINSTANCE hInst; // instance actuelle
+TCHAR szTitle[MAX_LOADSTRING]; // Le texte de la barre de titre
+TCHAR szWindowClass[MAX_LOADSTRING]; // le nom de la classe de fenêtre principale
+HMENU hMenu; // handle menu icontray
+HMENU hmenuTrackPopup;
+
+// Ivy
+Ivy* ivy;
+
+// Pré-déclarations des fonctions incluses dans ce module de code :
+ATOM MyRegisterClass(HINSTANCE hInstance);
+BOOL InitInstance(HINSTANCE, int);
+LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
+LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);
+
+
+void ivyCursorMouve(IvyApplication *app, void *user_data, int argc, const char **argv)
+{
+ UINT nb;
+ INPUT Inputs;
+ int x,y;
+ double xf = atof( *argv++ );
+ double yf = atof( *argv++ );
+ x = (int)(65535 * xf / 100.0 + 0.5);
+ y = (int)(65535 * yf / 100.0 + 0.5);
+ Inputs.type = INPUT_MOUSE;
+ Inputs.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE;
+ Inputs.mi.time = 0; // system provide it
+ Inputs.mi.dx = x;
+ Inputs.mi.dy = y;
+ nb = SendInput( 1, &Inputs, sizeof(INPUT));
+
+ if ( nb != 1 )
+ {
+ _RPT3(_CRT_WARN,"ivyCursorMouve can move to x=%d y=%d error=%d\n",x,y,GetLastError());
+ }
+}
+void ivyCursorClick(IvyApplication *app, void *user_data, int argc, const char **argv)
+{
+ UINT nb;
+ INPUT Inputs[2];
+ int x,y;
+ double xf = atof( *argv++ );
+ double yf = atof( *argv++ );
+ x = (int)(65535 * xf / 100.0 + 0.5);
+ y = (int)(65535 * yf / 100.0 + 0.5);
+ Inputs[0].type = INPUT_MOUSE;
+ Inputs[0].mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE;
+ Inputs[0].mi.time = 0; // system provide it
+ Inputs[0].mi.dx = x;
+ Inputs[0].mi.dy = y;
+ Inputs[1].type = INPUT_MOUSE;
+ Inputs[1].mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE;
+ Inputs[1].mi.time = 0; // system provide it
+ Inputs[1].mi.dx = x;
+ Inputs[1].mi.dy = y;
+ nb = SendInput( 2, Inputs, sizeof(INPUT));
+
+ if ( nb != 2 )
+ {
+ _RPT3(_CRT_WARN,"ivyCursorClick can click to x=%d y=%d error=%d\n",x,y,GetLastError());
+ }
+}
+int APIENTRY _tWinMain(HINSTANCE hInstance,
+ HINSTANCE hPrevInstance,
+ LPTSTR lpCmdLine,
+ int nCmdShow)
+{
+ MSG msg;
+ // Initialise les chaînes globales
+ LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
+ LoadString(hInstance, IDC_IVYCURSOR, szWindowClass, MAX_LOADSTRING);
+ hMenu = LoadMenu(hInstance, MAKEINTRESOURCE( IDR_MENU1 ) );
+
+ // TrackPopupMenu cannot display the menu bar so get
+ // a handle to the first shortcut menu.
+
+ hmenuTrackPopup = GetSubMenu(hMenu, 0);
+
+ if ( hmenuTrackPopup == NULL )
+ {
+ return FALSE;
+ }
+ MyRegisterClass(hInstance);
+
+ // Effectue l'initialisation de l'application :
+ if (!InitInstance (hInstance, nCmdShow))
+ {
+ return FALSE;
+ }
+ // Initoiailize ivy
+ ivy = new Ivy("IvyCursor", "IvyCursor Ready", 0, FALSE );
+ ivy->BindMsg(BUS_CALLBACK(ivyCursorMouve,0),"Cigale SetCursorPosition x=([0-9.]+) y=([0-9.]+)");
+ ivy->BindMsg(BUS_CALLBACK(ivyCursorClick,0),"Cigale CursorSelectEvent x=([0-9.]+) y=([0-9.]+)");
+ ivy->start( 0 );
+
+ // Boucle de messages principale :
+ while (GetMessage(&msg, NULL, 0, 0))
+ {
+ TranslateMessage(&msg);
+ DispatchMessage(&msg);
+ }
+
+ return (int) msg.wParam;
+}
+
+
+
+//
+// FONCTION : MyRegisterClass()
+//
+// BUT : inscrit la classe de fenêtre.
+//
+// COMMENTAIRES :
+//
+// Cette fonction et son utilisation sont nécessaires uniquement si vous souhaitez que ce code
+// soit compatible avec les systèmes Win32 avant la fonction 'RegisterClassEx'
+// qui a été ajoutée à Windows 95. Il est important d'appeler cette fonction
+// afin que l'application dispose des petites icônes correctes qui lui sont
+// associées.
+//
+ATOM MyRegisterClass(HINSTANCE hInstance)
+{
+ WNDCLASSEX wcex;
+
+ wcex.cbSize = sizeof(WNDCLASSEX);
+
+ wcex.style = CS_HREDRAW | CS_VREDRAW;
+ wcex.lpfnWndProc = (WNDPROC)WndProc;
+ wcex.cbClsExtra = 0;
+ wcex.cbWndExtra = 0;
+ wcex.hInstance = hInstance;
+ wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_IVYCURSOR);
+ wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
+ wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
+ wcex.lpszMenuName = NULL;
+ wcex.lpszClassName = szWindowClass;
+ wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);
+
+ return RegisterClassEx(&wcex);
+}
+
+//
+// FONCTION : InitInstance(HANDLE, int)
+//
+// BUT : enregistre le handle de l'instance et crée une fenêtre principale
+//
+// COMMENTAIRES :
+//
+// Dans cette fonction, nous enregistrons le handle de l'instance dans une variable globale, puis
+// créons et affichons la fenêtre principale du programme.
+//
+BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
+{
+ HWND hWnd;
+ NOTIFYICONDATA icodata;
+
+
+ hInst = hInstance; // Stocke le handle d'instance dans la variable globale
+
+ hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
+ CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, HWND_MESSAGE, NULL, hInstance, NULL);
+
+ if (!hWnd)
+ {
+ return FALSE;
+ }
+
+ ShowWindow(hWnd, nCmdShow);
+ UpdateWindow(hWnd);
+
+ icodata.cbSize = sizeof(NOTIFYICONDATA);
+ icodata.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP ;
+ icodata.hWnd = hWnd;
+ icodata.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_IVYCURSOR);
+ icodata.uID = 0;
+ icodata.uVersion = NOTIFYICON_VERSION;
+ icodata.uCallbackMessage = WM_ICONTRAY_NOTIFY;
+ strcpy ( icodata.szTip, "IvyCursor Event redirector");
+
+ if (! Shell_NotifyIcon( NIM_ADD, &icodata) )
+ {
+ return FALSE;
+ }
+ if (! Shell_NotifyIcon( NIM_SETVERSION, &icodata) )
+ {
+ return FALSE;
+ }
+ icodata.uFlags = NIF_INFO;
+ // Info
+ icodata.dwInfoFlags = NIIF_INFO;
+ strcpy ( icodata.szInfoTitle, "IvyCursor Event redirector");
+ strcpy (icodata.szInfo , "IvyCursor Event redirector" );
+ icodata.uTimeout = 10000; // 10 seconds
+ if (! Shell_NotifyIcon( NIM_MODIFY, &icodata) )
+ {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+void RemoveTrayIcon(HWND hWnd)
+{
+ NOTIFYICONDATA icodata;
+ icodata.cbSize = sizeof( icodata );
+ icodata.uFlags = 0;
+ icodata.hWnd = hWnd;
+ icodata.uID = 0;
+ Shell_NotifyIcon( NIM_DELETE, &icodata);
+}
+void ReturnFocus(HWND hWnd)
+{
+ NOTIFYICONDATA icodata;
+ icodata.cbSize = sizeof( icodata );
+ icodata.uFlags = 0;
+ icodata.hWnd = hWnd;
+ icodata.uID = 0;
+ Shell_NotifyIcon( NIM_SETFOCUS, &icodata);
+}
+void Quitting( HWND hWnd )
+{
+ RemoveTrayIcon(hWnd);
+ DestroyMenu(hMenu);
+ DestroyWindow(hWnd);
+ ivy->stop();
+}
+//
+// FONCTION : WndProc(HWND, unsigned, WORD, LONG)
+//
+// BUT : traite les messages pour la fenêtre principale.
+//
+// WM_COMMAND - traite le menu de l'application
+// WM_PAINT - dessine la fenêtre principale
+// WM_DESTROY - génère un message d'arrêt et retourne
+//
+//
+LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
+{
+ int wmId, wmEvent;
+ int xPos,yPos;
+ POINT point;
+
+ switch (message)
+ {
+ case WM_COMMAND:
+ wmId = LOWORD(wParam);
+ wmEvent = HIWORD(wParam);
+ // Analyse les sélections de menu :
+ switch (wmId)
+ {
+ case IDM_ABOUT:
+ //DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
+ break;
+ case IDM_EXIT:
+ case ID_QUIT:
+ Quitting(hWnd);
+ break;
+ default:
+ return DefWindowProc(hWnd, message, wParam, lParam);
+ }
+ break;
+ case WM_CONTEXTMENU:
+ // Display the shortcut menu. Track the right mouse
+ // button.
+ xPos = LOWORD(lParam);
+ yPos = HIWORD(lParam);
+
+ TrackPopupMenu(hmenuTrackPopup, TPM_LEFTALIGN | TPM_RIGHTBUTTON,
+ xPos, yPos, 0, hWnd, NULL);
+ PostMessage(hWnd, WM_NULL, 0, 0);
+
+ break;
+ case WM_ICONTRAY_NOTIFY:
+ switch ( lParam )
+ {
+ case WM_LBUTTONDOWN:
+ break;
+ case WM_RBUTTONDOWN:
+ GetCursorPos(&point);
+ TrackPopupMenu(hmenuTrackPopup, TPM_LEFTALIGN | TPM_RIGHTBUTTON,
+ point.x, point.y, 0, hWnd, NULL);
+ PostMessage(hWnd, WM_NULL, 0, 0);
+ break;
+ }
+ break;
+ case WM_DESTROY:
+ PostQuitMessage(0);
+ break;
+ default:
+ return DefWindowProc(hWnd, message, wParam, lParam);
+ }
+ return 0;
+}
+
+// Gestionnaire de messages pour la boîte de dialogue À propos de.
+LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
+{
+ switch (message)
+ {
+ case WM_INITDIALOG:
+ return TRUE;
+
+ case WM_COMMAND:
+ if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
+ {
+ EndDialog(hDlg, LOWORD(wParam));
+ return TRUE;
+ }
+ break;
+ }
+ return FALSE;
+}
diff --git a/IvyCursor/IvyCursor.h b/IvyCursor/IvyCursor.h
new file mode 100644
index 0000000..e60f2eb
--- /dev/null
+++ b/IvyCursor/IvyCursor.h
@@ -0,0 +1,3 @@
+#pragma once
+
+#include "resource.h"
diff --git a/IvyCursor/IvyCursor.ico b/IvyCursor/IvyCursor.ico
new file mode 100644
index 0000000..d0d1344
--- /dev/null
+++ b/IvyCursor/IvyCursor.ico
Binary files differ
diff --git a/IvyCursor/IvyCursor.rc b/IvyCursor/IvyCursor.rc
new file mode 100644
index 0000000..9d49167
--- /dev/null
+++ b/IvyCursor/IvyCursor.rc
@@ -0,0 +1,115 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#define APSTUDIO_HIDDEN_SYMBOLS
+#include "windows.h"
+#undef APSTUDIO_HIDDEN_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// Français (France) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA)
+#ifdef _WIN32
+LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_IVYCURSOR ICON "IvyCursor.ico"
+IDI_SMALL ICON "small.ico"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Accelerator
+//
+
+IDC_IVYCURSOR ACCELERATORS
+BEGIN
+ "?", IDM_ABOUT, ASCII, ALT
+ "/", IDM_ABOUT, ASCII, ALT
+END
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE
+BEGIN
+ "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
+ "#include ""windows.h""\r\n"
+ "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Menu
+//
+
+IDR_MENU1 MENU
+BEGIN
+ POPUP "Menu"
+ BEGIN
+ MENUITEM "Quit", ID_QUIT
+ END
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE
+BEGIN
+ IDS_APP_TITLE "IvyCursor"
+ IDC_IVYCURSOR "IVYCURSOR"
+END
+
+#endif // Français (France) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/IvyCursor/IvyCursor.sln b/IvyCursor/IvyCursor.sln
new file mode 100644
index 0000000..e8e53cb
--- /dev/null
+++ b/IvyCursor/IvyCursor.sln
@@ -0,0 +1,55 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "IvyCursor", "IvyCursor.vcproj", "{5353F53D-8047-42AB-A3E1-73E6EAAFBBE6}"
+ ProjectSection(ProjectDependencies) = postProject
+ {84E0039A-6721-4B18-9792-E9AE4274AC0E} = {84E0039A-6721-4B18-9792-E9AE4274AC0E}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Ivy", "..\Ivy\Ivy.vcproj", "{84E0039A-6721-4B18-9792-E9AE4274AC0E}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Install", "InstIvyCursor\InstIvyCursor.vdproj", "{465D12EC-FE99-47FE-AF2A-17BB43672F22}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SourceCodeControl) = preSolution
+ SccNumberOfProjects = 4
+ SccProjectUniqueName0 = ..\\Ivy\\Ivy.vcproj
+ SccProjectName0 = \u0022$/Bus/Ivy\u0022,\u0020QPEAAAAA
+ SccLocalPath0 = ..\\Ivy
+ CanCheckoutShared = false
+ SccLocalPath1 = .
+ CanCheckoutShared = false
+ SolutionUniqueID = {414FACD5-03EC-415D-B4B1-E8EA51BC621B}
+ SccProjectUniqueName2 = InstIvyCursor\\InstIvyCursor.vdproj
+ SccLocalPath2 = .
+ CanCheckoutShared = false
+ SccProjectFilePathRelativizedFromConnection2 = InstIvyCursor\\
+ SccProjectUniqueName3 = IvyCursor.vcproj
+ SccLocalPath3 = .
+ CanCheckoutShared = false
+ EndGlobalSection
+ GlobalSection(SolutionConfiguration) = preSolution
+ Debug = Debug
+ Release = Release
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {5353F53D-8047-42AB-A3E1-73E6EAAFBBE6}.Debug.ActiveCfg = Debug|Win32
+ {5353F53D-8047-42AB-A3E1-73E6EAAFBBE6}.Debug.Build.0 = Debug|Win32
+ {5353F53D-8047-42AB-A3E1-73E6EAAFBBE6}.Release.ActiveCfg = Release|Win32
+ {5353F53D-8047-42AB-A3E1-73E6EAAFBBE6}.Release.Build.0 = Release|Win32
+ {84E0039A-6721-4B18-9792-E9AE4274AC0E}.Debug.ActiveCfg = Debug|Win32
+ {84E0039A-6721-4B18-9792-E9AE4274AC0E}.Debug.Build.0 = Debug|Win32
+ {84E0039A-6721-4B18-9792-E9AE4274AC0E}.Release.ActiveCfg = Release|Win32
+ {84E0039A-6721-4B18-9792-E9AE4274AC0E}.Release.Build.0 = Release|Win32
+ {465D12EC-FE99-47FE-AF2A-17BB43672F22}.Debug.ActiveCfg = Debug
+ {465D12EC-FE99-47FE-AF2A-17BB43672F22}.Debug.Build.0 = Debug
+ {465D12EC-FE99-47FE-AF2A-17BB43672F22}.Release.ActiveCfg = Release
+ {465D12EC-FE99-47FE-AF2A-17BB43672F22}.Release.Build.0 = Release
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/IvyCursor/IvyCursor.vcproj b/IvyCursor/IvyCursor.vcproj
new file mode 100644
index 0000000..673c7df
--- /dev/null
+++ b/IvyCursor/IvyCursor.vcproj
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="IvyCursor"
+ ProjectGUID="{5353F53D-8047-42AB-A3E1-73E6EAAFBBE6}"
+ SccProjectName="SAK"
+ SccAuxPath="SAK"
+ SccLocalPath="SAK"
+ SccProvider="SAK"
+ Keyword="Win32Proj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="Debug"
+ IntermediateDirectory="Debug"
+ ConfigurationType="1"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\Ivy"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_WIN32_IE=0x500;_WIN32_WINNT=0x0500"
+ MinimalRebuild="TRUE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="5"
+ UsePrecompiledHeader="3"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="4"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)/IvyCursor.exe"
+ LinkIncremental="2"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/IvyCursor.pdb"
+ SubSystem="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="Release"
+ IntermediateDirectory="Release"
+ ConfigurationType="1"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\Ivy"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_WIN32_IE=0x500;_WIN32_WINNT=0x0500"
+ RuntimeLibrary="4"
+ UsePrecompiledHeader="3"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)/IvyCursor.exe"
+ LinkIncremental="1"
+ GenerateDebugInformation="TRUE"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ <ProjectReference
+ ReferencedProjectIdentifier="{84E0039A-6721-4B18-9792-E9AE4274AC0E}"
+ Name="Ivy"/>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+ <File
+ RelativePath=".\IvyCursor.cpp">
+ </File>
+ <File
+ RelativePath=".\stdafx.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"/>
+ </FileConfiguration>
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+ <File
+ RelativePath=".\IvyCursor.h">
+ </File>
+ <File
+ RelativePath=".\Resource.h">
+ </File>
+ <File
+ RelativePath=".\stdafx.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+ <File
+ RelativePath=".\IvyCursor.ico">
+ </File>
+ <File
+ RelativePath=".\IvyCursor.rc">
+ </File>
+ <File
+ RelativePath=".\small.ico">
+ </File>
+ </Filter>
+ <File
+ RelativePath=".\ReadMe.txt">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/IvyCursor/IvyCursor.vcproj.vspscc b/IvyCursor/IvyCursor.vcproj.vspscc
new file mode 100644
index 0000000..feffdec
--- /dev/null
+++ b/IvyCursor/IvyCursor.vcproj.vspscc
@@ -0,0 +1,10 @@
+""
+{
+"FILE_VERSION" = "9237"
+"ENLISTMENT_CHOICE" = "NEVER"
+"PROJECT_FILE_RELATIVE_PATH" = ""
+"NUMBER_OF_EXCLUDED_FILES" = "0"
+"ORIGINAL_PROJECT_FILE_PATH" = ""
+"NUMBER_OF_NESTED_PROJECTS" = "0"
+"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
+}
diff --git a/IvyCursor/IvyCursor.vssscc b/IvyCursor/IvyCursor.vssscc
new file mode 100644
index 0000000..794f014
--- /dev/null
+++ b/IvyCursor/IvyCursor.vssscc
@@ -0,0 +1,10 @@
+""
+{
+"FILE_VERSION" = "9237"
+"ENLISTMENT_CHOICE" = "NEVER"
+"PROJECT_FILE_RELATIVE_PATH" = ""
+"NUMBER_OF_EXCLUDED_FILES" = "0"
+"ORIGINAL_PROJECT_FILE_PATH" = ""
+"NUMBER_OF_NESTED_PROJECTS" = "0"
+"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROJECT"
+}
diff --git a/IvyCursor/ReadMe.txt b/IvyCursor/ReadMe.txt
new file mode 100644
index 0000000..1d12090
--- /dev/null
+++ b/IvyCursor/ReadMe.txt
@@ -0,0 +1,53 @@
+========================================================================
+ APPLICATION WIN32 : vue d'ensemble du projet IvyCursor
+========================================================================
+
+AppWizard a créé cette application IvyCursor pour vous.
+Ce fichier contient un résumé du contenu de chacun des fichiers qui
+constituent votre application IvyCursor.
+
+
+IvyCursor.vcproj
+ Il s'agit du fichier projet principal pour les projets VC++ générés en utilisant un Assistant Application.
+ Il contient les informations sur la version de Visual C++ qui a généré le fichier et
+ les informations sur les plates-formes, les configurations et les fonctionnalités du projet sélectionnées avec
+ l'Assistant Application.
+
+IvyCursor.cpp
+ Il s'agit du fichier source principal de l'application .
+
+/////////////////////////////////////////////////////////////////////////////
+AppWizard a créé les ressources suivantes :
+
+IvyCursor.rc
+ Il s'agit de la liste de toutes les ressources Microsoft Windows que le
+ programme utilise. Elle comprend les icônes, les bitmaps et les curseurs qui sont stockés
+ dans le sous-répertoire RES. Ce fichier peut être modifié directement dans Microsoft
+ Visual C++.
+
+Resource.h
+ Il s'agit du fichier d'en-tête standard, qui définit les nouveaux ID de ressources.
+ Microsoft Visual C++ lit et met à jour ce fichier.
+IvyCursor.ico
+ Il s'agit d'un fichier icône, qui est utilisé comme icône de l'application (32x32).
+ Cette icône est incluse par le fichier de ressources principal IvyCursor.rc.
+
+small.ico
+ Il s'agit d'un fichier icône, qui contient une version plus petite (16x16)
+ de l'icône de l'application. Cette icône est incluse par le fichier de ressources
+ principal IvyCursor.rc.
+
+/////////////////////////////////////////////////////////////////////////////
+Autres fichiers standard :
+
+StdAfx.h, StdAfx.cpp
+ Ces fichiers sont utilisés pour générer un fichier d'en-tête précompilé (PCH)
+ nommé IvyCursor.pch et un fichier de type précompilé nommé StdAfx.obj.
+
+/////////////////////////////////////////////////////////////////////////////
+Autres remarques :
+
+AppWizard utilise des commentaires "TODO :" pour indiquer les parties du code source où vous
+pouvez ajouter ou modifier du code.
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/IvyCursor/resource.h b/IvyCursor/resource.h
new file mode 100644
index 0000000..e2f7a7d
--- /dev/null
+++ b/IvyCursor/resource.h
@@ -0,0 +1,28 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by IvyCursor.rc
+//
+#define IDC_MYICON 2
+#define IDD_IVYCURSOR_DIALOG 102
+#define IDS_APP_TITLE 103
+#define IDM_ABOUT 104
+#define IDM_EXIT 105
+#define IDI_IVYCURSOR 107
+#define IDI_SMALL 108
+#define IDC_IVYCURSOR 109
+#define IDR_MAINFRAME 128
+#define IDR_MENU1 129
+#define ID_QUIT 32771
+#define IDC_STATIC -1
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NO_MFC 1
+#define _APS_NEXT_RESOURCE_VALUE 130
+#define _APS_NEXT_COMMAND_VALUE 32773
+#define _APS_NEXT_CONTROL_VALUE 1000
+#define _APS_NEXT_SYMED_VALUE 110
+#endif
+#endif
diff --git a/IvyCursor/small.ico b/IvyCursor/small.ico
new file mode 100644
index 0000000..d551aa3
--- /dev/null
+++ b/IvyCursor/small.ico
Binary files differ
diff --git a/IvyCursor/stdafx.cpp b/IvyCursor/stdafx.cpp
new file mode 100644
index 0000000..2233343
--- /dev/null
+++ b/IvyCursor/stdafx.cpp
@@ -0,0 +1,8 @@
+// stdafx.cpp : fichier source incluant simplement les fichiers Include standard
+// IvyCursor.pch représente l'en-tête précompilé
+// stdafx.obj contient les informations de type précompilées
+
+#include "stdafx.h"
+
+// TODO : faites référence aux en-têtes supplémentaires nécessaires dans STDAFX.H
+// absents de ce fichier
diff --git a/IvyCursor/stdafx.h b/IvyCursor/stdafx.h
new file mode 100644
index 0000000..5a1bba0
--- /dev/null
+++ b/IvyCursor/stdafx.h
@@ -0,0 +1,18 @@
+// stdafx.h : Fichier Include pour les fichiers Include système standard,
+// ou les fichiers Include spécifiques aux projets qui sont utilisés fréquemment,
+// et sont rarement modifiés
+//
+
+#pragma once
+
+
+#define WIN32_LEAN_AND_MEAN // Exclure les en-têtes Windows rarement utilisés
+// Fichiers d'en-tête Windows :
+#include <windows.h>
+// Fichiers d'en-tête C RunTime
+#include <stdlib.h>
+#include <malloc.h>
+#include <memory.h>
+#include <tchar.h>
+
+// TODO : faites référence ici aux en-têtes supplémentaires nécessaires au programme