home *** CD-ROM | disk | FTP | other *** search
/ Programming Tool Box / SIMS_2.iso / code / design / 3ddemo / readme.txt < prev   
Text File  |  1995-02-26  |  8KB  |  181 lines

  1. CTL3D Demo
  2.  
  3. This demo shows how one can create 3D Dialogs in Visual Basic 
  4. using CTL3D.DLL.  It shows a method for subclassing controls 
  5. for 3D effects.  It also has a routine that if the version of 
  6. CTL3D.DLL is not at least 2.63, then it will use a Visual Basic 
  7. routine called FormIn3D that paints the controls as 3D.  Here 
  8. are a list of the procedures that are included in this demo:
  9.  
  10.  
  11. App3DRegister -   the only function.  It returns whether or not 
  12.                   the application could be registered with 
  13.                   CTL3D.  If it is, it extracts the Version of 
  14.                   CTL3D for determining if the controls can be                   
  15.                   subclassed for 3D effects.  Call this procedure
  16.                   from anywhere once you start your application to 
  17.                   use CTL3D.
  18.            Returns True is successful otherwise 0
  19.  
  20. App3DUnregister   Call this procedure to unregister your 
  21.                   application from CTL3D before you end.
  22.  
  23. ComboBoxIn3D -    This procedure is called by the FormIn3D 
  24.                   procedure to paint a Combo Box in 3D that 
  25.                   can't be subclassed.
  26.  
  27. ControlIn3D -     This procedure is called by the FormIn3D
  28.                   procedure to paint a control in 3D that is 
  29.                   not a special case and cannot be subclassed.
  30.  
  31. DlgSysMenu -      Sets the Form's system menu to display only 
  32.                   the Move and Close options.  Make sure that 
  33.                   if you set the ControlBox property to True, 
  34.                   that you set the MinButton and MaxButton 
  35.                   properties to false.
  36.  
  37. FormIn3D -        This procedure is called by the Form_Paint 
  38.                   event and is activated by the setting of the 
  39.                   gSubClassCtls variable.  Add this line to 
  40.                   the Form_Paint Event:
  41.  
  42.                   If Not gSubClassCtls Then FormIn3D Me, 1
  43.  
  44.                   It will make sure that your forms controls 
  45.                   get a 3D appearance.
  46.  
  47. FormToDialog -    This sets the forms attributes to a dialog 
  48.                   box that CTL3D looks at to see if it needs to 
  49.                   paint the form as 3D.
  50.  
  51. LineIn3D -        This procedure is the same as ComboIn3D for 
  52.                   lines drawn on the form in the VB design mode.
  53.  
  54. Make3DDlg -       This procedure is called in the Form_Load 
  55.                   event of the form you want to have look like 
  56.                   a 3D Dialog.
  57.  
  58. MakeDlgCtrls3D -  SubClasses all the controls on the form so 
  59.                   that they will appear 3D.
  60.  
  61. Reg3DCtrl-        Called by MakeDlgCtrls3D for each control.  
  62.                   You can use it too for individual controls 
  63.                   not on dialog forms to give your application's
  64.                   other controls 3D Appearance.
  65.  
  66. Undo3DCtrls -     Unsubclasses the 3D controls on the form.  
  67.                   Called from the Form_Unload event.
  68.  
  69. UnReg3DCtrl -     UnSubclasses the control specficied.
  70.  
  71.  
  72. How to use this in you application:
  73. All you have to do is add the CTL3D.BAS file into your project 
  74. and call the appropriate procedures in a specified procedure, if 
  75. mentioned (i.e. Form_Load procedure).  Then go to it!
  76.  
  77. ***  Problems, quirks, and unusual things... ***
  78.  
  79. 1) I would recommend highly that when you create an 
  80. application using CTL3D.DLL that you include this file as you 
  81. get close to the end of debugging your product.  If you get a 
  82. crash or an error during debugging and do not properly 
  83. unregister from CTL3D.DLL, you will get a GPF that may 
  84. take down your computer.  I know.. I have gotten QUITE A FEW, 
  85. making this work.  It works really well for me.  If you do want 
  86. to include it in the start, then just add the appropriate lines 
  87. and then comment them out until the very end.  The logic in 
  88. this code works well but can't guarantee it.
  89.  
  90. 2) I would highly recommend that if you want 3D controls in your 
  91. dialog boxes and forms to appear correctly, then use whatever 
  92. you can from THREED.VBX control.  It is easier and more 
  93. reliable than using CTL3D.DLL for some controls.  The 
  94. OptionButton control does not subclass very well and has a 
  95. problem visually in that the control does not appear as it 
  96. should.
  97.  
  98. 3) There is a DLL called CTL3DV2.DLL which works with this just 
  99. as well.  I tested this with several CTL3D.DLL's I have found 
  100. from various installation disks and this seems to work well.  
  101. The CTL3DV2.DLL also works.  The version checking algorithm 
  102. that I use in this algorithm for some reason seems to report 
  103. funny numbers.  Not sure why but it works!  And is able to 
  104. distinguish which versions have the correct call for 
  105. subclassing controls.
  106.  
  107. 4)  You may get an error if you use attempt to register a 
  108. control that does not have an .hWnd property.  If you have a 
  109. form that you want controls to be in 3D, use the MakeDlgCtls3D 
  110. procedure in the Form_Load event, even if the form is not 
  111. supposed to be a dialog.  If the controls can't be subclassed, 
  112. then use the FormIn3D procedure and modify the controls to 
  113. appear 3D.  
  114.  
  115. 5)  If you cannot subclass controls and the form is
  116. sizeable, then you will have a problem using the FormIn3D 
  117. because when a paint event happens, the form does not erase the 
  118. previously drawn lines.  You can use a Cls method in the 
  119. FormIn3D but the form appears a little jittery, especially on 
  120. slower machines, when it tries to make the controls look 3D.
  121. I believe this procedure was written originally for dialog 
  122. boxes but works well with any form.
  123.  
  124. 6) I did not include a Common Dialog example, but it does work 
  125. and works very well.  This is just incase someone doesn't have 
  126. the CMDIALOG.VBX.  I suppose I could have used an API call but 
  127. I am lazy!  That's why I use VBX's!
  128.  
  129.  
  130. ** OTHER STUFF **
  131.  
  132. I developed this as a means to write my setup programs with 
  133. snazzy appearance.  The 3D dialogs in setup programs look very 
  134. professional.  This should help you all in making good looking 
  135. SETUP programs!
  136.  
  137. This product is the result of research into several areas 
  138. consisting of DPM Solutions VB Tips and Tricks, MSDN 
  139. Development Libraries, CompuServe's MS Basic Forum and other 
  140. places.  After numerous GPF Faults and other problems, I 
  141. finally think this is it.  There are lots of code I 
  142. borrowed and some of my own.  If a particular person wrote the 
  143. procedure, their name is in the commented portions of the 
  144. procedure.  I think they deserve as much credit.
  145.  
  146. *****************************************************************
  147. A message about ShareWare and Third Party Products:
  148.  
  149. There are a number of WONDERFUL controls that you can use to 
  150. essentially create 3D effects on forms and controls that are a 
  151. HECK of a lot easier to use than this.  My primary reason for 
  152. developing this was to use it for my colorfully creative SETUP 
  153. programs so I didn't have to use controls for it.  I have a few 
  154. controls that I purchased from shareware vendors and I use them 
  155. religiously for my apps.  They are much safer than these 
  156. procedures and have some capabilities that can't be added by 
  157. this file.  If you have some of their controls now, USE THEM 
  158. instead of this.  It's easier and more effective.  I would 
  159. rather not use VBX's at all if I could help it but in this 
  160. world where professional products means money for the developer 
  161. and better name recognition, the members of the ASP and those 
  162. who aren't but produce quality products have made a commitment 
  163. and have a reputation for delivery EXCELLENT products with 
  164. OUTSTANDING support for GREAT prices!  I highly encourage 
  165. people to use their products.  Please support the members of 
  166. the ASP and anyone else who delivers products in this way. 
  167. *****************************************************************
  168.  
  169. If you have any suggestions or fixes, please let me know.  Feel free to 
  170. distribute this at your leisure.
  171.  
  172. Its FREE!
  173.  
  174. Have Fun and Enjoy!
  175.  
  176. M. John Rodriguez  CIS ID: 100321,602
  177.                  Internet: jrodrigu@cpd.hqusareur.army.mil
  178.                            100321.620@compuserve.com
  179.  
  180.  
  181.