How to Read Flag Property of VB Common Dialog Custom Controls

Last reviewed: June 21, 1995
Article ID: Q84068
The information in this article applies to:

- Professional Edition of Microsoft Visual Basic for Windows,

  versions 2.0 and 3.0
- Microsoft Professional Toolkit for Microsoft Visual Basic programming
  system for Windows, version 1.0

SUMMARY

The Flags property of a Common Dialog control can be read by examining individual bit values of the Flag property and comparing them with the predefined constant values in CONSTANT.TXT (or CONST2.TXT for Visual Basic version 1.0 for Windows). This applies to the following Visual Basic for Windows Common Dialogs:

  • File Open Dialog
  • File Save Dialog
  • Color Dialog
  • Choose Font Dialog
  • Print Dialog

MORE INFORMATION

The Flags property can be set at design time or run time.

To set the value of the Flags property, assign it a value. This is most commonly done using a predefined constant (found in CONSTANT.TXT or CONST2.TXT). For example, to set the PRINTTOFILE flag on the Print Dialog box, use the following code:

   CMDialog1.Flags = PD_PRINTTOFILE

To set more than one flag, OR the two flags (the pipe [|] character acts the same as the OR statement):

   CMDialog1.Flags = PD_PRINTTOFILE | PD_SHOWHELP

The settings of the Flags property can also be changed at run time by the user making various selections in the dialog box. When a selection is made, or the status of a check box or option button is changed, the Flags property reflects this change. You can then read the value of the Flags property and determine if a specific flag has been set.

For example, in the above sample code, two flags are set in the Flags property. The value of PD_PRINTTOFILE = &H00000020& and the value of PD_SHOWHELP = &H00000800&.

The binary equivalent of the two is the following:

   PD_PRINTTOFILE = 00000000000000000000000000100000
   PD_SHOWHELP    = 00000000000000000000100000000000

Thus the value:

   Flags          = 00000000000000000000100000100000

NOTE: Each flag setting has its own bit setting within the Flags property.

To determine if a specific flag is set, you only need to AND the flag with the Flags property. If the result is 0, then the flag is not set; if the result is the same as the flag value, then the flag is set.

For example:

   Form1.Print (CMDialog1.Flags AND PD_PRINTTOFILE)

The output is decimal 32. Thus, broken down:

   Flags          = 00000000000000000000100000100000
                             AND
   PD_PRINTTOFILE = 00000000000000000000000000100000
                    ----------------------------------
   Result         = 00000000000000000000000000100000

Thus, the flag for PRINTTOFILE is one of the flags that are set in the Flags property:

If (CMDialog1.Flags AND PD_PRINTTOFILE) Then

   ' Code for printing to file goes here.
Else
   ' Code for printing to printer goes here.
End If


Additional reference words: 1.00 2.00 3.00
KBCategory: kbprg
KBSubcategory: PrgCtrlsCus


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: June 21, 1995
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.