home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / zkuste / Perl / ActivePerl-5.6.0.613.msi / 䆊䌷䈹䈙䏵-䞅䞆䞀㡆䞃䄦䠥 / _775a28afd4263b7a4ab5b72159417080 < prev    next >
Text File  |  2000-03-15  |  8KB  |  217 lines

  1. =pod
  2.  
  3. =head1 NAME
  4.  
  5. Win32::OLE::NEWS - What's new in Win32::OLE
  6.  
  7. This file contains a history of user visible changes to the
  8. Win32::OLE::* modules. Only new features and major bug fixes that
  9. might affect backwards compatibility are included.
  10.  
  11. =head1 Version 0.11 (changes since 0.1008)
  12.  
  13. =head2 new DHTML typelib browser
  14.  
  15. The Win32::OLE distribution now contains a type library browser.  It
  16. is written in PerlScript, generating dynamic HTML.  It requires
  17. Internet Explorer 4.0 or later.  You'll find it in
  18. F<browser/Browser.html>.  It should be available in the ActivePerl
  19. HTML help under Win32::OLE::Browser.
  20.  
  21. After selecting a library, type or member you can press F1 to call up
  22. the corresponding help file at the appropriate location.
  23.  
  24. =head2 VT_DECIMAL support
  25.  
  26. The Win32::OLE::Variant module now supports VT_DECIMAL variants too.
  27. They are not "officially" allowed in OLE Automation calls, but even
  28. Microsoft's "ActiveX Data Objects" sometimes returns VT_DECIMAL
  29. values.
  30.  
  31. VT_DECIMAL variables are stored as 96-bit integers scaled by a
  32. variable power of 10.  The power of 10 scaling factor specifies the
  33. number of digits to the right of the decimal point, and ranges from 0
  34. to 28.  With a scale of 0 (no decimal places), the largest possible
  35. value is +/-79,228,162,514,264,337,593,543,950,335.  With a 28 decimal
  36. places, the largest value is +/-7.9228162514264337593543950335 and the
  37. smallest, non-zero value is +/-0.0000000000000000000000000001.
  38.  
  39. =head1 Version 0.1008
  40.  
  41. =head2 new LetProperty() object method
  42.  
  43. In Win32::OLE property assignment using the hash syntax is equivalent
  44. to the Visual Basic C<Set> syntax (I<by reference> assignment):
  45.  
  46.   $Object->{Property} = $OtherObject;
  47.  
  48. corresponds to this Visual Basic statement:
  49.  
  50.   Set Object.Property = OtherObject
  51.  
  52. To get the I<by value> treatment of the Visual Basic C<Let> statement
  53.  
  54.   Object.Property = OtherObject
  55.  
  56. you have to use the LetProperty() object method in Perl:
  57.  
  58.   $Object->LetProperty($Property, $OtherObject);
  59.  
  60. =head2 new HRESULT() function
  61.  
  62. The HRESULT() function converts an unsigned number into a signed HRESULT
  63. error value as used by OLE internally. This is necessary because Perl
  64. treats all hexadecimal constants as unsigned. To check if the last OLE
  65. function returned "Member not found" (0x80020003) you can write:
  66.  
  67.   if (Win32::OLE->LastError == HRESULT(0x80020003)) {
  68.       # your error recovery here
  69.   }
  70.  
  71. =head1 Version 0.1007 (changes since 0.1005)
  72.  
  73. =head2 OLE Event support
  74.  
  75. This version of Win32::OLE contains B<ALPHA> level support for OLE events. The
  76. userinterface is still subject to change. There are ActiveX objects / controls
  77. that don't fire events under the current implementation.
  78.  
  79. Events are enabled for a specific object with the Win32::OLE->WithEvents()
  80. class method:
  81.  
  82.   Win32::OLE->WithEvents(OBJECT, HANDLER, INTERFACE)
  83.  
  84. Please read further documentation in Win32::OLE.
  85.  
  86. =head2 GetObject() and GetActiveObject() now support optional DESTRUCTOR argument
  87.  
  88. It is now possible to specify a DESTRUCTOR argument to the GetObject() and
  89. GetActiveObject() class methods. They work identical to the new() DESTRUCTOR
  90. argument.
  91.  
  92. =head2 Remote object instantiation via DCOM
  93.  
  94. This has actually been in Win32::OLE since 0.0608, but somehow never got
  95. documented. You can provide an array reference in place of the usual PROGID
  96. parameter to Win32::OLE->new():
  97.  
  98.   OBJ = Win32::OLE->new([MACHINE, PRODID]);
  99.  
  100. The array must contain two elements: the name of the MACHINE and the PROGID.
  101. This will try to create the object on the remote MACHINE.
  102.  
  103. =head2 Enumerate all Win32::OLE objects
  104.  
  105. This class method returns the number Win32::OLE objects currently in
  106. existance. It will call the optional CALLBACK function for each of
  107. these objects:
  108.  
  109.   $Count = Win32::OLE->EnumAllObjects(sub {
  110.       my $Object = shift;
  111.       my $Class = Win32::OLE->QueryObjectType($Object);
  112.       printf "# Object=%s Class=%s\n", $Object, $Class;
  113.   });
  114.  
  115. The EnumAllObjects() method is primarily a debugging tool. It can be
  116. used e.g. in an END block to check if all external connections have
  117. been properly destroyed.
  118.  
  119. =head2 The VARIANT->Put() method now returns the VARIANT object itself
  120.  
  121. This allows chaining of Put() method calls to set multiple values in an
  122. array variant:
  123.  
  124.   $Array->Put(0,0,$First_value)->Put(0,1,$Another_value);
  125.  
  126. =head2 The VARIANT->Put(ARRAYREF) form allows assignment to a complete SAFEARRAY
  127.  
  128. This allows automatic conversion from a list of lists to a SAFEARRAY.
  129. You can now write:
  130.  
  131.   my $Array = Variant(VT_ARRAY|VT_R8, [1,2], 2);
  132.   $Array->Put([[1,2], [3,4]]);
  133.  
  134. instead of the tedious:
  135.  
  136.   $Array->Put(1,0,1);
  137.   $Array->Put(1,1,2);
  138.   $Array->Put(2,0,3);
  139.   $Array->Put(2,1,4);
  140.  
  141. =head2 New Variant formatting methods
  142.  
  143. There are four new methods for formatting variant values: Currency(), Date(),
  144. Number() and Time(). For example:
  145.  
  146.   my $v = Variant(VT_DATE, "April 1 99");
  147.   print $v->Date(DATE_LONGDATE), "\n";
  148.   print $v->Date("ddd',' MMM dd yy"), "\n";
  149.  
  150. will print:
  151.  
  152.   Thursday, April 01, 1999
  153.   Thu, Apr 01 99
  154.  
  155. =head2 new Win32::OLE::NLS methods: SendSettingChange() and SetLocaleInfo()
  156.  
  157. SendSettingChange() sends a WM_SETTINGCHANGE message to all top level windows.
  158.  
  159. SetLocaleInfo() allows changing elements in the user override section of the
  160. locale database. Unfortunately these changes are not automatically available
  161. to further Variant formatting; you have to call SendSettingChange() first.
  162.  
  163. =head2 Win32::OLE::Const now correctly treats version numbers as hex
  164.  
  165. The minor and major version numbers of type libraries have been treated as
  166. decimal. This was wrong. They are now correctly decoded as hex.
  167.  
  168. =head2 more robust global destruction of Win32::OLE objects
  169.  
  170. The final destruction of Win32::OLE objects has always been somewhat fragile.
  171. The reason for this is that Perl doesn't honour reference counts during global
  172. destruction but destroys objects in seemingly random order. This can lead
  173. to leaked database connections or unterminated external objects. The only
  174. solution was to make all objects lexical and hope that no object would be
  175. trapped in a closure. Alternatively all objects could be explicitly set to
  176. C<undef>, which doesn't work very well with exception handling.
  177.  
  178. With version 0.1007 of Win32::OLE this problem should be gone: The module
  179. keeps a list of active Win32::OLE objects. It uses an END block to destroy
  180. all objects at program termination I<before> the Perl's global destruction
  181. starts. Objects still existing at program termination are now destroyed in
  182. reverse order of creation. The effect is similar to explicitly calling
  183. Win32::OLE->Uninitialize() just prior to termination.
  184.  
  185. =head1 Version 0.1005 (changes since 0.1003)
  186.  
  187. Win32::OLE 0.1005 has been release with ActivePerl build 509. It is also
  188. included in the I<Perl Resource Kit for Win32> Update.
  189.  
  190. =head2 optional DESTRUCTOR for GetActiveObject() GetObject() class methods
  191.  
  192. The GetActiveObject() and GetObject() class method now also support an
  193. optional DESTRUCTOR parameter just like Win32::OLE->new(). The DESTRUCTOR
  194. is executed when the last reference to this object goes away. It is
  195. generally considered C<impolite> to stop applications that you did not
  196. start yourself.
  197.  
  198. =head2 new Variant object method: $object->Copy()
  199.  
  200. See L<Win32::OLE::Variant/Copy([DIM])>.
  201.  
  202. =head2 new Win32::OLE->Option() class method
  203.  
  204. The Option() class method can be used to inspect and modify
  205. L<Win32::OLE/Module Options>. The single argument form retrieves
  206. the value of an option:
  207.  
  208.   my $CP = Win32::OLE->Option('CP');
  209.  
  210. A single call can be used to set multiple options simultaneously:
  211.  
  212.   Win32::OLE->Option(CP => CP_ACP, Warn => 3);
  213.  
  214. Currently the following options exist: CP, LCID and C<Warn>.
  215.  
  216. =cut
  217.