Click here to Skip to main content
Click here to Skip to main content
Add your own
alternative version

CButtonSSL

, 4 Dec 2001 CPOL
An owner-drawn, flat, menu button that correctly handles the default state
buttonssl_demo.zip
SSLButtonExTest.dsp
SSLButtonExTest.dsw
res
bitmap1.bmp
bitmap2.bmp
bitmap3.bmp
bitmap4.bmp
bitmap5.bmp
Hand.cur
icon1.ico
icon2.ico
icon3.ico
icon4.ico
SSLButtonExTest.ico
tick.bmp
vssver.scc
buttonssl_doc.zip
demo.gif
inherit.gif
buttonssl_src.zip
<!--------------------------------------------------------------------------->  
<!--                           INTRODUCTION                                

 The Code Project article submission template (HTML version)

Using this template will help us post your article sooner. To use, just 
follow the 3 easy steps below:
 
     1. Fill in the article description details
     2. Add links to your images and downloads
     3. Include the main article text

That's all there is to it! All formatting will be done by our submission
scripts and style sheets. 

-->  
<!--------------------------------------------------------------------------->  
<!--                        IGNORE THIS SECTION                            -->
<html>
<head>
<title>CButtonSSL</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<Style>
BODY, P, TD { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt }
H2,H3,H4,H5 { color: #ff9900; font-weight: bold; }
H2 { font-size: 13pt; }
H3 { font-size: 12pt; }
H4 { font-size: 10pt; color: black; }
PRE { BACKGROUND-COLOR: #FBEDBB; FONT-FAMILY: "Courier New", Courier, mono; 
      WHITE-SPACE: pre; }
CODE { COLOR: #990000; FONT-FAMILY: "Courier New", Courier, mono; }
</style>
</head>
<body bgcolor="#ffffff" color="#000000"><!---------------------------------------------------------------------------><!-------------------------------     STEP 1      ---------------------------><!--  Fill in the details (CodeProject will reformat this section for you) --><pre>Title:       CButtonSSL
Author:      Derek Lakin 
Email:       derek_lakin@lineone.net
Environment: VC++ 5.0-6.0, NT 4.0, Win95/98/ME/2K
Keywords:    Button, MFC, Flat, Menu, Owner-drawn, Bitmap, Icon, Tooltip, URL
Level:       Intermediate
Description: Owner-drawn, flat, menu button that correctly handles the default state
Section      Controls
SubSection   Button Controls
</PRE>
<hr width="100%" noShade>
<!-------------------------------     STEP 2      ---------------------------><!--  Include download and sample image information.                       --><!-- Article Starts -->
<!-- Article Starts -->


<UL class=download>
  <LI><A 
  href="http://www.codeproject.com/buttonctrl/CButtonSSL/ButtonSSL_demo.zip">Download 
  demo project - 28.9 Kb </A>
  <LI><A 
  href="http://www.codeproject.com/buttonctrl/CButtonSSL/ButtonSSL_src.zip">Download 
  source - 10.0 Kb</A>
  <LI><A 
  href="http://www.codeproject.com/buttonctrl/CButtonSSL/ButtonSSL_doc.zip">Download 
  documentation - 19.4 Kb</A> </LI></UL>
<P><IMG height=236 
src="demo.gif" 
width=534></P>
<h2>Bug Fixes (01-Dec-2001)</h2>
<P><code>CButtonSSL</code> has now been used extensively in a real product and has such has 
been through the mill a fair bit on the testing side. Thankfully this has given 
me time to find and fix these problems, too.</P>
<P>This latest version includes fixes for a GDI resource leak (which I must 
thank Dieter Hammer for finding), several changes to fix button state drawing 
problems (which I must thank Eugene Pustovyt for pointing out some of the more 
obscure ones) and also fixes a major bug with release builds.</P>
<P>The problem was that in a release build that included a <code>CButtonSSL</code> checkbox 
whose state was altered using <code>SetCheck</code> the application would crash. 
After&nbsp;enormous amounts of mostly fruitless debugging I eventually found a 
way of reproducing the problem consistently, with the help of Alvaro Mendez. 
Once I'd got to this stage I beginning to despait , but thankfully Joe Newcomer 
came to my rescue and pointed out the error of my ways. The <code>OnSetCheck</code> handler 
didn't define both of the required parameters for an <code>ON_COMMAND</code> handler. So, two 
parameters pushed on the stack, only one popped off!</P>
<P>I'd like to thank everybody that has helped me out with this round of bug 
fixes, hopefully there won't be (m)any&nbsp;more.</P>
<H2>Update (18-Sep-2001)</H2>
<p><A href="#Overview"></A>It seems 
  that no matter how hard you try, you just can't get enough done in one day! 
  Trying to juggle work, play and family isn't easy! However, at last I have got 
  round to updating this article. So, what's new?</p>
<ul>
  <li><code>CButtonSSL</code> now inherits from <code><a href="http://www.codeproject.com/buttonctrl/oddbutton.asp">COddButton</a></code>, though there are one or two 
  changes I've made to it (see below). 
  <li>The Radio Button problem has been fixed (check out 
  the demo). 
  <li>Several fixes have been implemented for drawing the 
  button. 
  <li>Most of the interface to the menu has been exposed, so there's a whole raft 
    of new <A href="#MenuFunctions">Menu Functions</A>.</li>
</ul>
<p>Because there's so much been added I haven't had chance to test it all extensively, 
  especially with respect to the menu functions. If there any problems, please 
  let me know (prefereably with a fix ;)).</p>
<h3>Inheriting from COddButton</h3>
<p>The change to inherit from <code>COddButton</code> has changed the handling of the standard 
  button styles. The use of <code>COddButton::PreSubclassWindow</code> means that the control 
  type is determined from the initial styles set in the dialog editor. So now 
  <b>you cannot set the Owner Draw style</b>, otherwise it won't work properly.</p>
<p>The handling of the default style is also provided entirely by COddButton now, 
  though as mentioned above, I have made one or two changes to handle radio buttons 
  as well.</p>
<p>The first change was to the constructor to make <code>m_bCanBeDefault TRUE</code> 
  initially. The second change was to the <code>WM_GETDLGCODE</code> handler, <code>COddButton::OnGetDlgCode 
  ()</code>. The function now handles the code for radio buttons as follows:</p>
<pre>UINT COddButton::OnGetDlgCode() 
{
	UINT nCode = CButton::OnGetDlgCode();

	<span class='cpp-comment'>// tell the system if we want default state handling</span>
	<span class='cpp-comment'>// (losing default state always allowed)</span>
    UINT nType = GetControlType ();
	<span class='cpp-keyword'>if</span> (BS_RADIOBUTTON == (BS_RADIOBUTTON &amp; nType) ||
		BS_AUTORADIOBUTTON == (BS_AUTORADIOBUTTON &amp; nType)) {
		nCode |= DLGC_RADIOBUTTON;
	}
	<span class='cpp-keyword'>else</span> {
	    <span class='cpp-keyword'>if</span> (m_bCanBeDefault || m_bDefault)
		    nCode |= (m_bDefault ? DLGC_DEFPUSHBUTTON : DLGC_UNDEFPUSHBUTTON);
    }

	<span class='cpp-keyword'>return</span> nCode;
}
</pre>
<H2>Introduction</H2>
<P>It seems that Buttons are the flavour of the month at the moment and here's 
another. This button class is born out the need for a bitmap button with a menu 
drop-down on it, but as usual ended up being so much more!</P>
<P>I found Norm Almond's "<A 
href="http://www.codeproject.com/buttonctrl/pushmenubutton.asp">Cool Push Menu 
Button</A>" and Davide Calabro's <A 
href="http://www.codeproject.com/buttonctrl/cbuttonst.asp">CButtonST</A> and 
wanted to combine the two. Along the way I came across the 
<CODE>BS_OWNERDRAW</CODE> problem and tried to find my own way around it. 
Fortunately Paolo Messina and Jerzy Kaczorowski solved it for me with their <A 
href="http://www.codeproject.com/buttonctrl/oddbutton.asp">COddButton</A>.</P>
<P>The class I have come up with draws mainly from these sources, but also some 
others and my thanks must go out to all those people who have helped me out in 
the Visual C++ forum. It has taken me so long to complete this and I have been a 
bit too relaxed with the documentation so if there is some code that you lay 
claim to and want it recognised then please let me know and I'll update it.</P>
<P>The full documentation for the class follows. I hope this is sufficient because 
  it took me ages to write ;)</P>
<P><A href="#Overview">Overview</A> 
  | <A href="#ClassMembers">Class 
  Members</A> | <A href="#ButtonStyles">Styles</A> 
  | <A href="#KnownProblems">Known 
  Problems</A></P>
<H2><A name=Overview>CButtonSSL</A></H2>
<P><IMG height=142 
src="inherit.gif" 
width=230></P>
<P>The <CODE>CButtonSSL</CODE> is a feature rich extension to the normal 
<CODE>CButton</CODE>. It adds flat appearance, a menu drop-down, bitmap or icon 
images, text and image alignment, control over the button colour, multiline 
tooltip, correct default button handling, control over the cursor and the 
ability to specifiy a URL to link to.</P>
<P><CODE>CButtonSSL</CODE> provides owner-drawn functionality for check boxes, 
  radio buttons and push buttons. A <CODE>CButtonSSL</CODE> object can be created 
  for any of these.</P>
<P>A <CODE>CButtonSSL</CODE> object can have separate images for the button's 
up, over, down and disabled states. If an image is not specified for the 
disabled state a disabled images is created from the up image, which must always 
be specified. Additionally, the button colour and text colour can be different 
for the button's up, over and down states.</P>
<P>Creation of <CODE>CButtonSSL</CODE> object is the same as for a <CODE>CButton</CODE> 
  object. They may be created from a dialog template or directly in your code. 
  If they are created from a dialog template it is not necessary to call <CODE>SubclassDlgItem</CODE> 
  if the <CODE>DDX_Control</CODE> entry exists for the variable in the <CODE>DoDataExchange</CODE> 
  function of your dialog. However the button is created it <b>must not</b> have 
  the <code>BS_OWNERDRAW</code> style set.</P>
<P>Following construction the button object's appearance should be initialised. 
The button's image(s) and the image alignment can be set using the <A href="#ImageFunctions">Image 
Functions</A>. The button text font and alignment can be altered using the <A href="#TextFunctions">Text 
Functions</A>. The button's colours can be set using one of the <A href="#ColourFunctions">Colour 
Functions</A> and the button cursor, tooltip or URL can be set using one of the 
<A href="#MiscellaneousFunctions">Miscellaneous 
Functions</A>. If the button object is a checkbox then the button's check state 
can be set or retrieved using the <A href="#CheckBoxFunctions">Check 
Box Functions</A>.</P>
<P>Windows notification messages are sent by the button control to the parent 
for <CODE>CButtonSSL</CODE> objects in the same manner as for 
<CODE>CButton</CODE> objects.</P>
<P>If you create a <CODE>CButtonSSL</CODE> object from a dialog resource, the 
<CODE>CButtonSSL</CODE> object is automatically destroyed when the user closes 
the dialog box.</P>
<P><CODE><span class='cpp-preprocessor'>#include "ButtonSSL.h"</span></CODE> </P>
<P></P>
<P><A href="#Overview">Overview</A> 
| <A href="#ClassMembers">Class 
Members</A> | <A href="#ButtonStyles">Styles</A> 
| <A href="#KnownProblems">Known 
Problems</A></P>
<H2><A name=ClassMembers>Class Members</A></H2>
<H4>Construction</H4>
<TABLE border=1 cellPadding=5 cols=2 frame=below rules=rows>
  <TBODY>
  <TR vAlign=top>
    <TD width="29%"><CODE><A href="#CButtonSSL">CButtonSSL</A></CODE></TD>
    <TD width="71%">Constructs a <CODE>CButtonSSL</CODE> 
object.</TD></TR></TBODY></TABLE>
<H4>Initialisation</H4>
<TABLE border=1 cellPadding=5 cols=2 frame=below rules=rows>
  <TBODY>
  <TR vAlign=top>
    <TD width="29%"><CODE><A href="#ButtonStyles">SetSSLButtonStyle</A></CODE></TD>
    <TD width="71%">Changes the style of a buton.</TD></TR>
  <TR vAlign=top>
    <TD width="29%"><CODE><A href="#GetSSLButtonStyle">GetSSLButtonStyle</A></CODE></TD>
    <TD width="71%">Retrieves information about the button control 
  style.</TD></TR></TBODY></TABLE>
<H4><A name=ImageFunctions>Image Functions</A></H4>
<TABLE border=1 cellPadding=5 cols=2 frame=below rules=rows>
  <TBODY>
  <TR vAlign=top>
    <TD width="29%"><CODE><A href="#SetSSLButtonBitmap">SetSSLButtonBitmap</A></CODE></TD>
    <TD width="71%">Specifies a single bitmap as the image for all button 
      states.</TD></TR>
  <TR vAlign=top>
    <TD width="29%"><CODE><A href="#SetSSLButtonBitmaps">SetSSLButtonBitmaps</A></CODE></TD>
    <TD width="71%">Specifies different bitmaps for different button 
  states.</TD></TR>
  <TR vAlign=top>
    <TD width="29%"><CODE><A href="#SetSSLButtonIcon">SetSSLButtonIcon</A></CODE></TD>
    <TD width="71%">Specifies a single icon as the image for all button 
    states.</TD></TR>
  <TR vAlign=top>
    <TD width="29%"><CODE><A href="#SetSSLButtonIcons">SetSSLButtonIcons</A></CODE></TD>
    <TD width="71%">Specifies different icons for different button 
  states.</TD></TR>
  <TR vAlign=top>
    <TD width="29%"><CODE><A href="#SetSSLImageAlign">SetSSLImageAlign</A></CODE></TD>
    <TD width="71%">Sets the alignment of the button image.</TD></TR>
  <TR vAlign=top>
    <TD width="29%"><CODE><A href="#SetSSLImageAlign">GetSSLImageAlign</A></CODE></TD>
    <TD width="71%">Retrieves the image alignment for the button 
  image.</TD></TR></TBODY></TABLE>
<H4><A name=TextFunctions>Text Functions</A></H4>
<TABLE border=1 cellPadding=5 cols=2 frame=below rules=rows>
  <TBODY>
  <TR vAlign=top>
    <TD width="29%"><CODE><A href="#SetSSLTextAlign">SetSSLTextAlign</A></CODE></TD>
    <TD width="71%">Sets the alignment for the button text.</TD></TR>
  <TR vAlign=top>
    <TD width="29%"><CODE><A href="#GetSSLTextAlign">GetSSLTextAlign</A></CODE></TD>
    <TD width="71%">Retrieves the alignment of the button text.</TD></TR>
  <TR vAlign=top>
    <TD width="29%"><CODE><A href="#SetSSLButtonFont">SetSSLButtonFont</A></CODE></TD>
    <TD width="71%">Specifies font characteristics for the button 
  text</TD></TR></TBODY></TABLE>
<H4><A name=ColourFunctions>Colour Functions</A></H4>
<TABLE border=1 cellPadding=5 cols=2 frame=below rules=rows>
  <TBODY>
  <TR vAlign=top>
    <TD width="29%"><CODE><A href="#SetSSLDefaultColors">SetSSLDefaultColors</A></CODE></TD>
    <TD width="71%">Sets the button and text colours to the default system 
      defined colours.</TD></TR>
  <TR vAlign=top>
    <TD height=27 width="29%"><CODE><A href="#SetSSLDefaultColors">SetSSLColor</A></CODE></TD>
    <TD height=27 width="71%">Specifies the colour to use for the button face 
      or text for a particular button state.</TD></TR>
  <TR vAlign=top>
    <TD width="29%"><CODE><A href="#SetSSLColor">GetSSLColor</A></CODE></TD>
    <TD width="71%">Retrieves the colour for the button face or text for a 
      particular button state previously set with 
SetSSLColor.</TD></TR></TBODY></TABLE>
<H4><A name=CheckBoxFunctions>Check Box Functions</A></H4>
<TABLE border=1 cellPadding=5 cols=2 frame=below rules=rows>
  <TBODY>
  <TR vAlign=top>
    <TD width="29%"><CODE><A href="#SetSSLCheck">SetSSLCheck</A></CODE></TD>
    <TD width="71%">Sets the check state of a check box style button.</TD></TR>
  <TR vAlign=top>
    <TD width="29%"><CODE><A href="#SetSSLCheck">GetSSLCheck</A></CODE></TD>
    <TD width="71%">Retrieves the check state of a check box style 
  button.</TD></TR></TBODY></TABLE>
<H4><A name=MenuFunctions>Menu Functions</A></H4>
<table border=1 cellpadding=5 cols=2 frame=below rules=rows>
  <tbody> 
  <tr valign=top> 
    <td width="29%"><code><A href="#SetSSLButtonMenu">SetSSLButtonMenu</A></code></td>
    <td width="71%">Specifies the menu resource to use for a menu button.</td>
  </tr>
  <tr valign=top> 
    <td width="29%"><code><A href="#CheckSSLMenuItem">CheckSSLMenuItem</A></code></td>
    <td width="71%">Places a check mark next to or removes a check mark from a 
      menu item in the pop-up menu.</td>
  </tr>
  <tr valign=top> 
    <td width="29%"><code><A href="#CheckSSLMenuRadioItem">CheckSSLMenuRadioItem</A></code></td>
    <td width="71%">Places a radio button next to a menu item and removes the 
      radio button from all of the other menu items in the group.</td>
  </tr>
  <tr valign=top> 
    <td width="29%"><code><A href="#EnableSSLMenuItem">EnableSSLMenuItem</A></code></td>
    <td width="71%">Enables, disables, or dims (grays) a menu item.</td>
  </tr>
  <tr valign=top> 
    <td width="29%"><code><A href="#GetSSLMenuItemCount">GetSSLMenuItemCount</A></code></td>
    <td width="71%">Determines the number of items in a pop-up or top-level menu.</td>
  </tr>
  <tr valign=top> 
    <td width="29%"><code><A href="#GetSSLMenuItemID">GetSSLMenuItemID</A></code></td>
    <td width="71%">Obtains the menu-item identifier for a menu item located at 
      the specified position.</td>
  </tr>
  <tr valign=top> 
    <td width="29%"><code><A href="#GetSSLMenuState">GetSSLMenuState</A></code></td>
    <td width="71%">Returns the status of the specified menu item or the number 
      of items in a pop-up menu.</td>
  </tr>
  <tr valign=top> 
    <td width="29%"><code><A href="#GetSSLMenuString">GetSSLMenuString</A></code></td>
    <td width="71%">Retrieves the label of the specified menu item.</td>
  </tr>
  <tr valign=top> 
    <td width="29%"><code><A href="#GetSSLMenuItemInfo">GetSSLMenuItemInfo</A></code></td>
    <td width="71%">Retrieves information about a menu item.</td>
  </tr>
  <tr valign=top> 
    <td width="29%"><code><A href="#ModifySSLMenu">ModifySSLMenu</A></code></td>
    <td width="71%">Changes an existing menu item at the specified position.</td>
  </tr>
  <tr valign=top> 
    <td width="29%"><code><A href="#RemoveSSLMenu">RemoveSSLMenu</A></code></td>
    <td width="71%">Deletes a menu item with an associated pop-up menu from the 
      specified menu.</td>
  </tr>
  <tr valign=top>
    <td width="29%"><code><A href="#SetSSLMenuItemBitmaps">SetSSLMenuItemBitmaps</A></code></td>
    <td width="71%">Associates the specified check-mark bitmaps with a menu item.</td>
  </tr>
  </tbody> 
</table>
<h4><A name=MiscellaneousFunctions>Miscellaneous Functions</A></h4>
<TABLE border=1 cellPadding=5 cols=2 frame=below rules=rows>
  <TBODY> 
  <TR vAlign=top> 
    <TD width="29%"><CODE><A href="#SetSSLButtonCursor">SetSSLButtonCursor</A></CODE></TD>
    <TD width="71%">Specifies the cursor to display when the mouse is over the 
      button.</TD>
  </TR>
  <TR vAlign=top> 
    <TD width="29%"><CODE><A href="#SetSSLButtonTooltip">SetSSLButtonToolTip</A></CODE></TD>
    <TD width="71%">Specifies the tooltip to display when the mouse is hovered 
      over the button.</TD>
  </TR>
  <TR vAlign=top> 
    <TD width="29%"><CODE><A href="#SetSSLButtonURL">SetSSLButtonURL</A></CODE></TD>
    <TD width="71%">Specifies the URL to be launched when the button is clicked.</TD>
  </TR>
  </TBODY>
</TABLE>
<P><A href="#Overview">Overview</A> 
| <A href="#ClassMembers">Class 
Members</A> | <A href="#ButtonStyles">Styles</A> 
| <A href="#KnownProblems">Known 
Problems</A></P>
<H2><A name=CButtonSSL>CButtonSSL::CButtonSSL</A></H2>
<P><CODE>CButtonSSL ();</CODE></P>
<H4>Remarks</H4>
<P>Constructs a <CODE>CButtonSSL</CODE> object. The button style is initially 
set to <CODE>SSL_BS_FLAT</CODE>, the image is initially aligned using 
<CODE>SSL_IMAGE_TOP</CODE> and <CODE>SSL_IMAGE_LEFT</CODE> and the text is 
initially aligned using <CODE>SSL_TEXT_CENTER</CODE> and 
<CODE>SSL_TEXT_VCENTER</CODE>.</P>
<P><A href="#Overview">Overview</A> 
| <A href="#ClassMembers">Class 
Members</A> | <A href="#ButtonStyles">Styles</A> 
| <A href="#KnownProblems">Known 
Problems</A></P>
<H2><A name=SetSSLButtonStyle>CButtonSSL::SetSSLButtonStyle</A></H2>
<P><CODE><span class='cpp-keyword'>void</span> SetSSLButtonStyle (UINT nStyle);</CODE></P>
<H4>Parameters</H4>
<P><CODE>nStyle</CODE><BR>Specifies the <A href="#ButtonStyles">button 
style</A>.</P>
<H4>Remarks</H4>
<P>Changes the style of a button. </P>
<P>Use the <CODE>GetSSLButtonStyle</CODE> member function to retrieve the button 
style.</P>
<P><A href="#Overview">Overview</A> 
| <A href="#ClassMembers">Class 
Members</A> | <A href="#ButtonStyles">Styles</A> 
| <A href="#KnownProblems">Known 
Problems</A></P>
<P><B>See Also </B><A href="#GetSSLButtonStyle">CButtonSSL::GetSSLButtonStyle</A></P>
<H2><A name=GetSSLButtonStyle>CButtonSSL::GetSSLButtonStyle</A></H2>
<P><CODE>UINT GetSSLButtonStyle ();</CODE></P>
<H4>Return Value</H4>
<P>Returns the button styles for this button object.</P>
<H4>Remarks</H4>
<P>Returns only the <A href="#ButtonStyles">SSL_BS_</A> 
style values, not any of the window styles.</P>
<P><A href="#Overview">Overview</A> 
| <A href="#ClassMembers">Class 
Members</A> | <A href="#ButtonStyles">Styles</A> 
| <A href="#KnownProblems">Known 
Problems</A></P>
<P><B>See Also </B><A href="#SetSSLButtonStyle">CButtonSSL::SetSSLButtonStyle</A></P>
<H2><A name=SetSSLButtonBitmap>CButtonSSL::SetSSLButtonBitmap</A></H2>
<P><CODE>BOOL SetSSLButtonBitmap (UINT nResourceID, COLORREF crMask = 
SSL_MASK);</CODE></P>
<H4>Return Value</H4>
<P>Nonzero if successful; otherwise 0.</P>
<H4>Parameters</H4>
<P><CODE>nResourceID</CODE><BR>The resource ID for the bitmap to be added.</P>
<P><CODE>crMask</CODE><BR>The colour to be used in the bitmap as a transparency 
mask. This is <CODE><A href="#SSL_MASK">SSL_MASK</A></CODE> 
by default.</P>
<P></P>
<H4>Remarks</H4>
<P>This function specifies a single bitmap to use for all states. The bitmap is 
copied into an image list and then treated as an icon thereafter. When the 
button is in the disabled state a disabled image is created from the specified 
bitmap.</P>
<P><A href="#Overview">Overview</A> 
| <A href="#ClassMembers">Class 
Members</A> | <A href="#ButtonStyles">Styles</A> 
| <A href="#KnownProblems">Known 
Problems</A></P>
<P><B>See Also </B><A href="#SetSSLButtonBitmaps">CButtonSSL::SetSSLButtonBitmaps</A>, 
<A href="#SetSSLButtonIcon">CButtonSSL::SetSSLButtonIcon</A>, 
<A href="#SetSSLButtonIcons">CButtonSSL::SetSSLButtonIcons</A></P>
<H2><A name=SetSSLButtonBitmaps>CButtonSSL::SetSSLButtonBitmap</A>s</H2>
<P><CODE>BOOL SetSSLButtonBitmaps (UINT nUpID, COLORREF crUpMask, UINT nOverID = 
<span class='cpp-literal'>0</span>, COLORREF crOverMask = SSL_MASK, UINT nDownID =         <span class='cpp-literal'>0</span>, COLORREF crDownMask = 
SSL_MASK, UINT nDisabledID = <span class='cpp-literal'>0</span>, COLORREF crDisabledMask = SSL_MASK);</CODE></P>
<H4>Return Value</H4>
<P>Nonzero if successful; otherwise 0.</P>
<H4>Parameters</H4>
<P><CODE>nUpID</CODE><BR>The resource ID for the bitmap to be used for the up 
state.</P>
<P><CODE>crUpMask</CODE><BR>The colour to be used in the up bitmap as a 
transparency mask. This is <CODE><A href="#SSL_MASK">SSL_MASK</A></CODE> 
by default.</P>
<P></P>
<P><CODE>nOverID</CODE><BR>The resource ID for the bitmap to be used for the 
over state. This is zero by default. </P>
<P><CODE>crOverMask</CODE><BR>The colour to be used in the over bitmap as a 
transparency mask. This is <CODE><A href="#SSL_MASK">SSL_MASK</A></CODE> 
by default.</P>
<P></P>
<H4></H4>
<P><CODE>nDownID</CODE><BR>The resource ID for the bitmap to be used for the 
down state. This is zero by default.</P>
<P><CODE>crDownMask</CODE><BR>The colour to be used in the down bitmap as a 
transparency mask. This is <CODE><A href="#SSL_MASK">SSL_MASK</A></CODE> 
by default.</P>
<P></P>
<H4></H4>
<P><CODE>nDisabledID</CODE><BR>The resource ID for the bitmap to be used for the 
disabled state. This is zero by default.</P>
<P><CODE>crDisabledMask</CODE><BR>The colour to be used in the disabled bitmap 
as a transparency mask. This is <CODE><A href="#SSL_MASK">SSL_MASK</A></CODE> 
by default.</P>
<P></P>
<H4></H4>
<H4>Remarks</H4>
<P>The up bitmap must be defined, however, a resource ID of zero may be defined 
for any state image that is not required. If no bitmap is specified for the over 
state then the up image is used instead. If no bitmap is specified for the down 
state then the over image is used instead (if this was not specified then the up 
image will be used).</P>
<P>If a bitmap is specified for the disabled state then this will be used in 
full colour. If it is not then the up image will be used to create a normal 
disabled image. </P>
<P><A href="#Overview">Overview</A> 
| <A href="#ClassMembers">Class 
Members</A> | <A href="#ButtonStyles">Styles</A> 
| <A href="#KnownProblems">Known 
Problems</A></P>
<P><B>See Also </B><A href="#SetSSLButtonBitmap">CButtonSSL::SetSSLButtonBitmap</A>, 
<A href="#SetSSLButtonIcon">CButtonSSL::SetSSLButtonIcon</A>, 
<A href="#SetSSLButtonIcons">CButtonSSL::SetSSLButtonIcons</A></P>
<H2><A name=SetSSLButtonIcon>CButtonSSL::SetSSLButtonIcon</A></H2>
<P><CODE>BOOL SetSSLButtonIcon (UINT nResourceID);</CODE></P>
<H4>Return Value</H4>
<P>Nonzero if successful; otherwise 0.</P>
<H4>Parameters</H4>
<P><CODE>nResourceID</CODE><BR>The resource ID for the icon to be added.</P>
<H4>Remarks</H4>
<P>This function specifies a single icon to use for all states. The icon is 
copied into an image list. When the button is in the disabled state a disabled 
image is created from the specified icon.</P>
<P>The transparency defined in the source icon is preserved.</P>
<P><A href="#Overview">Overview</A> 
| <A href="#ClassMembers">Class 
Members</A> | <A href="#ButtonStyles">Styles</A> 
| <A href="#KnownProblems">Known 
Problems</A></P>
<P><B>See Also </B><A href="#SetSSLButtonBitmap">CButtonSSL::SetSSLButtonBitmap</A>, 
<A href="#SetSSLButtonBitmaps">CButtonSSL::SetSSLButtonBitmaps</A>, 
<A href="#SetSSLButtonIcons">CButtonSSL::SetSSLButtonIcons</A></P>
<H2><A name=SetSSLButtonIcons>CButtonSSL::SetSSLButtonIcons</A></H2>
<P><CODE>BOOL SetSSLButtonIcons (UINT nUpID, UINT nOverID = <span class='cpp-literal'>0</span>, UINT nDownID = <span class='cpp-literal'>0</span>, 
UINT nDisabledID = <span class='cpp-literal'>0</span>);</CODE></P>
<H4>Return Value</H4>
<P>Nonzero if successful; otherwise 0.</P>
<H4>Parameters</H4>
<P><CODE>nUpID</CODE><BR>The resource ID for the icon to be used for the up 
state.</P>
<P><CODE>nOverID</CODE><BR>The resource ID for the icon to be used for the over 
state. This is zero by default. </P>
<P><CODE>nDownID</CODE><BR>The resource ID for the icon to be used for the down 
state. This is zero by default.</P>
<P><CODE>nDisabledID</CODE><BR>The resource ID for the icon to be used for the 
disabled state. This is zero by default.</P>
<H4>Remarks</H4>
<P>The up icon must be defined, however, a resource ID of zero may be defined 
for any state image that is not required. If no icon is specified for the over 
state then the up image is used instead. If no icon is specified for the down 
state then the over image is used instead (if this was not specified then the up 
image will be used).</P>
<P>If an icon is specified for the disabled state then this will be used in full 
colour. If it is not then the up image will be used to create a normal disabled 
image. </P>
<P>The transparency of the source icon is preserved.</P>
<P><A href="#Overview">Overview</A> 
| <A href="#ClassMembers">Class 
Members</A> | <A href="#ButtonStyles">Styles</A> 
| <A href="#KnownProblems">Known 
Problems</A></P>
<P><B>See Also </B><A href="#SetSSLButtonBitmap">CButtonSSL::SetSSLButtonBitmap</A>, 
<A href="#SetSSLButtonBitmaps">CButtonSSL::SetSSLButtonBitmaps</A>, 
<A href="#SetSSLButtonIcon">CButtonSSL::SetSSLButtonIcon</A></P>
<H2><A name=SetSSLImageAlign>CButtonSSL::SetSSLImageAlign</A></H2>
<P><CODE><span class='cpp-keyword'>void</span> SetSSLImageAlign (UINT nImageAlign);</CODE></P>
<H4>Parameters</H4>
<P><CODE>nImageAlign</CODE><BR>Specifies the image <A href="#AlignmentStyles">alignment 
style</A>.</P>
<H4>Remarks</H4>
<P>A single horizontal and vertical alignment style may be specified, though 
there are no checks within the function to ensure that this is the case.</P>
<P><A href="#Overview">Overview</A> 
| <A href="#ClassMembers">Class 
Members</A> | <A href="#ButtonStyles">Styles</A> 
| <A href="#KnownProblems">Known 
Problems</A></P>
<P><B>See Also </B><A href="#GetSSLImageAlign">CButtonSSL::GetSSLImageAlign</A></P>
<H2><A name=GetSSLImageAlign>CButtonSSL::GetSSLImageAlign</A></H2>
<P><CODE>UINT GetSSLImageAlign ();</CODE></P>
<H4>Return Value</H4>
<P>The button image alignment style.</P>
<H4>Remarks</H4>
<P>This function returns only the <CODE><A href="#AlignmentSTyles">SSL_IMAGE_</A></CODE> 
style values.</P>
<P><A href="#Overview">Overview</A> 
| <A href="#ClassMembers">Class 
Members</A> | <A href="#ButtonStyles">Styles</A> 
| <A href="#KnownProblems">Known 
Problems</A></P>
<P><B>See Also </B><A href="#SetSSLImageAlign">CButtonSSL::SetSSLImageAlign</A></P>
<H2><A name=SetSSLTextAlign>CButtonSSL::SetSSLTextAlign</A></H2>
<P><CODE><span class='cpp-keyword'>void</span> SetSSLTexteAlign (UINT nTextAlign);</CODE></P>
<H4>Parameters</H4>
<P><CODE>nTextAlign</CODE><BR>Specifies the text <A href="#AlignmentStyles">alignment 
style</A>.</P>
<H4>Remarks</H4>
<P>A single horizontal and vertical alignment style may be specified, though 
there are no checks within the function to ensure that this is the case.</P>
<P><A href="#Overview">Overview</A> 
| <A href="#ClassMembers">Class 
Members</A> | <A href="#ButtonStyles">Styles</A> 
| <A href="#KnownProblems">Known 
Problems</A></P>
<P><B>See Also </B><A href="#GetSSLTextAlign">CButtonSSL::GetSSLTextAlign</A></P>
<H2><A name=GetSSLTextAlign>CButtonSSL::GetSSLTextAlign</A></H2>
<P><CODE>UINT GetSSLTextAlign ();</CODE></P>
<H4>Return Value</H4>
<P>The button text alignment style.</P>
<H4>Remarks</H4>
<P>This function returns only the <CODE><A href="#AlignmentSTyles">SSL_TEXT_</A></CODE> 
style values.</P>
<P><A href="#Overview">Overview</A> 
| <A href="#ClassMembers">Class 
Members</A> | <A href="#ButtonStyles">Styles</A> 
| <A href="#KnownProblems">Known 
Problems</A></P>
<P><B>See Also </B><A href="#SetSSLTextAlign">CButtonSSL::SetSSLTextAlign</A></P>
<H2><A name=SetSSLButtonFont>CButtonSSL::SetSSLButtonFont</A></H2>
<P><CODE>BOOL SetSSLButtonFont (LPCTSTR lpszFaceName, <span class='cpp-keyword'>int</span> nSizePoints = <span class='cpp-literal'>8</span>, BOOL 
bUnderline = FALSE, BOOL bBold = FALSE, BOOL bStrikeOut = FALSE, BOOL bItalic = 
FALSE);</CODE></P>
<P><CODE>BOOL SetSSLButtonFont (CFont&amp; font);</CODE></P>
<H4>Return Value</H4>
<P>Nonzero if successful; otherwise 0.</P>
<H4>Parameters</H4>
<P><CODE>lpszFaceName</CODE><BR>The font face name<A href="#AlignmentStyles"></A>.</P>
<P><CODE>nSizePoints</CODE><BR>The font size in points<A href="#AlignmentStyles"></A>. 
The default value is 8.</P>
<P><CODE>bUnderline</CODE><BR>Specifies whether the font is to be underlined. A 
nonzero value sets the font to be underlined. A 0 value sets the font not to be 
underlined. The font is not underlined by default.</P>
<P><CODE>bBold</CODE><BR>Specifies whether the font weight is to be bold or not. 
A nonzero value sets the font to be bold. A 0 value sets the font weight to be 
normal. The font weight is normal by default.</P>
<P><CODE>bStrikeOut</CODE><BR>Specifies whether the font is to be struck out or 
not. A nonzero value sets the font to be struck out. A 0 value sets the font not 
to be struck out. The font is not struck out by default.</P>
<P><CODE>bItalic</CODE><BR>Specifies whether the font style is to be italic or 
not. A nonzero value sets the font style to be italic. A 0 value sets the font 
style to be normal. The font style is normal by default.</P>
<P><CODE>font</CODE><BR>A <CODE>CFont</CODE> object allowing full control over 
the appearance of the font.</P>
<H4><CODE></CODE>Remarks</H4>
<P>The first version of this function provides simple control over the main 
aspects of the button text font. If required the second version can be used to 
provide full control over the appearance of the button text font.</P>
<P><A href="#Overview">Overview</A> 
| <A href="#ClassMembers">Class 
Members</A> | <A href="#ButtonStyles">Styles</A> 
| <A href="#KnownProblems">Known 
Problems</A></P>
<P><B>See Also </B><A href="#SetSSLTextAlign">CButtonSSL::SetSSLTextAlign</A>, 
<A href="#GetSSLTextAlign">CButtonSSL::GetSSLTextAlign</A> 
</P>
<H2><A name=SetSSLDefaultColors>CButtonSSL::SetSSLDefaultColors</A></H2>
<P><CODE><span class='cpp-keyword'>void</span> SetSSLDefaultColors (BOOL bRedraw =         TRUE);</CODE></P>
<H4>Parameters</H4>
<P><CODE>bRedraw</CODE><BR>Specifies whether the button is to be redrawn. A 
nonzero value redraws the button. A 0 value does not redraw the button. The 
button is redrawn by default.</P>
<H4>Remarks</H4>
<P>Use this function to reset the button colours to their default values. The 
default values are the system colours <CODE>COLOR_BTNFACE</CODE> and 
<CODE>COLOR_BTNTEXT</CODE>.</P>
<P><A href="#Overview">Overview</A> 
| <A href="#ClassMembers">Class 
Members</A> | <A href="#ButtonStyles">Styles</A> 
| <A href="#KnownProblems">Known 
Problems</A></P>
<P><B>See Also </B><A href="#SetSSLColor">CButtonSSL::SetSSLColor</A>, 
<A href="#GetSSLColor">CButtonSSL::GetSSLColor</A></P>
<H2><A name=SetSSLColor>CButtonSSL::SetSSLColor</A></H2>
<P><CODE>BOOL SetSSLColor (BYTE byColorIndex, COLORREF crColor, BOOL bRedraw = 
TRUE);</CODE></P>
<H4>Return Value</H4>
<P>Nonzero if successful; otherwise 0.</P>
<H4></H4>
<H4>Parameters</H4>
<P><CODE>byColorIndex</CODE><BR>Specifies the colour to be set. This is one of 
the colour values defined in the <A href="#ColourEnumeration">colour 
enumeration</A>, except <CODE>SSL_MAX_COLORS</CODE>.</P>
<P><CODE>crColor</CODE><BR>A <CODE>COLORREF</CODE> value<CODE></CODE> specifying 
the colour to set.</P>
<P><CODE>bRedraw</CODE><BR>Specifies whether the button is to be redrawn. A 
nonzero value redraws the button. A 0 value does not redraw the button. The 
button is redrawn by default.</P>
<H4></H4>
<H4>Remarks</H4>
<P>Use this function to set the button face or text colour for a particular 
button state.</P>
<P><A href="#Overview">Overview</A> 
| <A href="#ClassMembers">Class 
Members</A> | <A href="#ButtonStyles">Styles</A> 
| <A href="#KnownProblems">Known 
Problems</A></P>
<P><B>See Also </B><A href="#GetSSLColor">CButtonSSL::GetSSLColor</A>, 
<A href="#SetSSLDefaultColors">CButtonSSL::SetSSLDefaultColors</A></P>
<H2><A name=GetSSLColor>CButtonSSL::GetSSLColor</A></H2>
<P><CODE>BOOL GetSSLColor (BYTE byColorIndex, COLORREF* pcrColor);</CODE></P>
<H4>Return Value</H4>
<P>Nonzero if <CODE>byColorIndex</CODE> is less than <CODE><A href="#ColourEnumeration">SSL_MAX_COLORS</A></CODE>; 
otherwise 0.</P>
<H4></H4>
<H4>Parameters</H4>
<P><CODE>byColorIndex</CODE><BR>Specifies the colour to be retrieved. This is 
one of the colour values defined in the <A href="#ColourEnumeration">colour 
enumeration</A>, except <CODE>SSL_MAX_COLORS</CODE>.</P>
<P><CODE>pcrColor</CODE><BR>A pointer to a <CODE>COLORREF</CODE> 
value<CODE></CODE> to be receive the requested colour value.</P>
<H4>Remarks</H4>
<P>Use this function to retrieve the current button face or text colour for a 
particular button state.</P>
<P><A href="#Overview">Overview</A> 
| <A href="#ClassMembers">Class 
Members</A> | <A href="#ButtonStyles">Styles</A> 
| <A href="#KnownProblems">Known 
Problems</A></P>
<P><B>See Also </B><A href="#SetSSLColor">CButtonSSL::SetSSLColor</A>, 
<A href="#SetSSLDefaultColors">CButtonSSL::SetSSLDefaultColors</A></P>
<H2><A name=SetSSLCheck>CButtonSSL::SetSSLCheck</A></H2>
<P><CODE><span class='cpp-keyword'>void</span> SetSSLCheck (<span class='cpp-keyword'>int</span> nCheck, BOOL bRedraw = TRUE);</CODE></P>
<H4>Parameters</H4>
<P><CODE>nCheck</CODE><BR>Specifies the check state<CODE></CODE>. This parameter 
can be either 0 (unchecked) or 1 (checked).</P>
<P><CODE>bRedraw</CODE><BR>Specifies whether the button is to be redrawn. A 
nonzero value redraws the button. A 0 value does not redraw the button. The 
button is redrawn by default.</P>
<H4></H4>
<H4>Remarks</H4>
<P>Sets or resets the check state of a check box. This member function has no 
effect on a push button.</P>
<P><A href="#Overview">Overview</A> 
| <A href="#ClassMembers">Class 
Members</A> | <A href="#ButtonStyles">Styles</A> 
| <A href="#KnownProblems">Known 
Problems</A></P>
<P><B>See Also </B><A href="#GetSSLCheck">CButtonSSL::GetSSLCheck</A></P>
<H2><A name=GetSSLCheck>CButtonSSL::GetSSLCheck</A></H2>
<P><CODE><span class='cpp-keyword'>int</span> GetSSLCheck ();</CODE></P>
<H4>Return Value</H4>
<P>The return value is either 0 (unchecked) or 1 (checked).</P>
<H4>Remarks</H4>
<P>Retrieves the check state of a radio button or check box.</P>
<P></P>
<P><A href="#Overview">Overview</A> 
| <A href="#ClassMembers">Class 
Members</A> | <A href="#ButtonStyles">Styles</A> 
| <A href="#KnownProblems">Known 
Problems</A></P>
<P><B>See Also </B><A href="#SetSSLCheck">CButtonSSL::SetSSLCheck</A></P>
<H2><A name=SetSSLButtonMenu>CButtonSSL::SetSSLButtonMenu</A></H2>
<P><CODE>BOOL SetSSLButtonMenu (UINT nResourceID);</CODE></P>
<P><CODE>BOOL SetSSLButtonMenu (LPCTSTR lpszResourceName);</CODE></P>
<H4>Return Value</H4>
<P>Nonzero if successful; otherwise 0.</P>
<H4>Parameters</H4>
<P><CODE>nResourceID</CODE><BR>Specifies the menu ID of the menu resource to 
load.</P>
<P><CODE>lpszResourceName</CODE><BR>Points to a null-terminated string that 
contains the name of the menu resource to load.</P>
<H4>Remarks</H4>
<P>Both of these functions use the first submenu in the supplied menu, assuming 
that it is a popup menu. For example, create a menu resource in the resource 
editor. Set the first menu item to be pop-up. Add subitems below this to be 
shown on the menu button.</P>
<P>The Windows message handling for the menu item selections must be handled by 
the parent, there is no mechanism for <CODE>CButtonSSL</CODE> to handle 
them.</P>
<P><A href="#Overview">Overview</A> 
| <A href="#ClassMembers">Class 
Members</A> | <A href="#ButtonStyles">Styles</A> 
| <A href="#KnownProblems">Known 
Problems</A></P>
<H2><a name=CheckSSLMenuItem>CButtonSSL::CheckSSLMenuItem</a></H2>
<p><code>UINT CheckSSLMenuItem (UINT nIDCheckItem, UINT nCheck = MF_CHECKED);</code></p>
<h4>Return Value</h4>
<p>The previous state of the item: <b>MF_CHECKED</b> or <b>MF_UNCHECKED</b>, or 
  0xFFFFFFFF (<b>MF_DOES_NOT_EXIST</b>) if the menu item did not exist.</p>
<h4>Parameters</h4>
<p><code>nIDCheckItem</code><br>
  Specifies the menu item to be checked, as determined by nCheck.</p>
<p></p>
<p><code>nCheck</code><br>
  Specifies how to check the menu item and how to determine the item�s position 
  in the menu. The nCheck parameter can be a combination of <b>MF_CHECKED</b> 
  or <b>MF_UNCHECKED</b> with <b>MF_BYPOSITION</b> or <b>MF_BYCOMMAND</b> flags. 
  These flags can be combined by using the bitwise OR operator. They have the 
  following meanings: </p>
<ul>
  <li><b>MF_BYCOMMAND</b> Specifies 
  that the parameter gives the command ID of the existing menu item. This is the 
  default. 
  <li><b>MF_BYPOSITION</b> Specifies 
  that the parameter gives the position of the existing menu item. The first 
  item is at position 0. 
  <li><b>MF_CHECKED</b> Acts as a toggle with <b>MF_UNCHECKED</b> to place the default 
  check mark next to the item. 
  <li><b>MF_UNCHECKED</b> Acts as a toggle with <b>MF_CHECKED</b> to remove a 
    check mark next to the item. </li>
</ul>
<h4>Remarks</h4>
<p>Adds check marks to or removes check marks from menu items in the pop-up menu. 
  The nIDCheckItem parameter specifies the item to be modified. </p>
<p>The nIDCheckItem parameter may identify a pop-up menu item as well as a menu 
  item. No special steps are required to check a pop-up menu item. Top-level menu 
  items cannot be checked. A pop-up menu item must be checked by position since 
  it does not have a menu-item identifier associated with it.</p>
<p></p>
<p><A href="#Overview">Overview</A> | <A href="#ClassMembers">Class Members</A> 
  | <A href="#ButtonStyles">Styles</A> | <A href="#KnownProblems">Known Problems</A></p>
<H2><a name=CheckSSLMenuRadioItem>CButtonSSL::CheckSSLMenuRadioItem</a></H2>
<p><code>BOOL CheckSSLMenuRadioItem (UINT nIDFirst, UINT nIDLast, UINT nIDItem, 
  UINT nFlags);</code></p>
<p>Return Value</p>
<p>Nonzero if successful; otherwise 0.</p>
<p>Parameters</p>
<p><code>nIDFirst</code><br>
  Specifies (as an ID or offset, depending on the value of nFlags) the first menu 
  item in the radio button group.</p>
<p><code>nIDLast</code><br>
  Specifies (as an ID or offset, depending on the value of nFlags) the last menu 
  item in the radio button group.</p>
<p><code>nIDItem</code><br>
  Specifies (as an ID or offset, depending on the value of nFlags) the item in 
  the group which will be checked with a radio button.</p>
<p></p>
<p></p>
<p><code>nFlags</code><br>
  Specifies interpretation of <code>nIDFirst</code>, <code>nIDLast</code>, and <code>nIDItem</code> in the following 
  way:</p>
<ul>
  <li><b>MF_BYCOMMAND</b> Specifies that the parameter gives the command ID of 
    the existing menu item. This is the default if neither <b>MF_BYCOMMAND</b> 
    nor <b>MF_BYPOSITION</b> is set. 
  <li><b>MF_BYPOSITION</b> Specifies that the parameter gives the position of 
    the existing menu item. The first item is at position 0.</li>
</ul>
<h4>Remarks</h4>
<p>Adds check marks to or removes check marks from menu items in the pop-up menu. 
  The nIDCheckItem parameter specifies the item to be modified. </p>
<p>The nIDCheckItem parameter may identify a pop-up menu item as well as a menu 
  item. No special steps are required to check a pop-up menu item. Top-level menu 
  items cannot be checked. A pop-up menu item must be checked by position since 
  it does not have a menu-item identifier associated with it.</p>
<p></p>
<p><A href="#Overview">Overview</A> | <A href="#ClassMembers">Class Members</A> 
  | <A href="#ButtonStyles">Styles</A> | <A href="#KnownProblems">Known Problems</A></p>
<H2><a name=EnableSSLMenuItem>CButtonSSL::EnableSSLMenuItem</a></H2>
<p><code>UINT EnableSSLMenuItem (UINT nIDEnableItem, UINT nEnable);</code></p>
<h4>Return Value</h4>
<p>Previous state (<b>MF_DISABLED</b>, <b>MF_ENABLED</b>, or <b>MF_GRAYED</b>), 
  �1 if not valid or <b>MF_DOES_NOT_EXIST</b> if menu not initialised.</p>
<h4>Parameters</h4>
<p><code>nIDEnableItem</code><br>
  Specifies the menu item to be enabled, as determined by nEnable. This parameter 
  can specify pop-up menu items as well as standard menu items.</p>
<p></p>
<p></p>
<p><code>nEnable</code><br>
  Specifies the action to take. It can be a combination of <b>MF_DISABLED</b>, 
  <b>MF_ENABLED</b>, or <b>MF_GRAYED</b>, with <b>MF_BYCOMMAND</b> or <b>MF_BYPOSITION</b>. 
  These values can be combined by using the bitwise OR operator. These values 
  have the following meanings: </p>
<ul>
  <li><b>MF_BYCOMMAND</b> Specifies 
  that the parameter gives the command ID of the existing menu item. This is the 
  default. 
  <li><b>MF_BYPOSITION</b> Specifies 
  that the parameter gives the position of the existing menu item. The first 
  item is at position 0. 
  <li><b>MF_DISABLED</b> Disables the 
  menu item so that it cannot be selected but does not dim it. 
  <li><b>MF_ENABLED</b> Enables the 
  menu item so that it can be selected and restores it from its dimmed state. 
  <li><b>MF_GRAYED</b> Disables the menu item so that it cannot be selected and 
    dims it. <br>
  </li>
</ul>
<h4>Remarks</h4>
<p>Enables, disables, or dims a menu item.</p>
<p>Using the <b>MF_BYPOSITION</b> value requires an application to use the correct 
  CMenu. If the CMenu of the menu bar is used, a top-level menu item (an item 
  in the menu bar) is affected. To set the state of an item in a pop-up or nested 
  pop-up menu by position, an application must specify the CMenu of the pop-up 
  menu. </p>
<p>When an application specifies the <b>MF_BYCOMMAND </b>flag, Windows checks 
  all pop-up menu items that are subordinate to the CMenu; therefore, unless duplicate 
  menu items are present, using the CMenu of the menu bar is sufficient.</p>
<p></p>
<p><A href="#Overview">Overview</A> | <A href="#ClassMembers">Class Members</A> 
  | <A href="#ButtonStyles">Styles</A> | <A href="#KnownProblems">Known Problems</A></p>
<H2><a name=GetSSLMenuItemCount>CButtonSSL::GetSSLMenuItemCount</a></H2>
<p><code>UINT GetSSLMenuItemCount () <span class='cpp-keyword'>const</span>;</code></p>
<h4>Return Value</h4>
<p>The number of items in the menu if the function is successful; otherwise �1. 
  <b>MF_DOES_NOT_EXIST</b> will be returned if the menu is not initialised.</p>
<h4>Remarks</h4>
<p>Determines the number of items in a pop-up or top-level menu.</p>
<p></p>
<p><A href="#Overview">Overview</A> | <A href="#ClassMembers">Class Members</A> 
  | <A href="#ButtonStyles">Styles</A> | <A href="#KnownProblems">Known Problems</A></p>
<h2><a name=GetSSLMenuItemID>CButtonSSL::GetSSLMenuItemID</a></h2>
<p><code>UINT GetSSLMenuItemID (<span class='cpp-keyword'>int</span> nPos) <span class='cpp-keyword'>const</span>;</code></p>
<h4>Return Value</h4>
<p>The item ID for the specified item in a pop-up menu if the function is successful. 
  If the specified item is a pop-up menu (as opposed to an item within the pop-up 
  menu), the return value is �1. If nPos corresponds to a <b>SEPARATOR</b> 
  menu item, the return value is 0. If the menu is not yet initialised the value 
  <b>MF_DOES_NOT_EXIST</b> will be returned.</p>
<p></p>
<h4>Parameters</h4>
<p><code>nPos</code><br>
  Specifies the position (zero-based) of the menu item whose ID is being retrieved.</p>
<p></p>
<p></p>
<p></p>
<h4>Remarks</h4>
<p>Obtains the menu-item identifier for a menu item located at the position defined 
  by <code>nPos</code>.</p>
<p></p>
<p><A href="#Overview">Overview</A> | <A href="#ClassMembers">Class Members</A> 
  | <A href="#ButtonStyles">Styles</A> | <A href="#KnownProblems">Known Problems</A></p>
<h2><a name=GetSSLMenuState>CButtonSSL::GetSSLMenuState</a></h2>
<p><code>UINT GetSSLMenuState (UINT nID, UINT nFlags);</code></p>
<h4>Return Value</h4>
<p>The value <b>MF_DOES_NOT_EXIST</b> if the specified item does not exist or 
  the menu is uninitialised. If <code>nId</code> identifies a pop-up menu, the high-order byte 
  contains the number of items in the pop-up menu and the low-order byte contains 
  the menu flags associated with the pop-up menu. Otherwise the return value is 
  a mask (Boolean OR) of the values from the following list (this mask describes 
  the status of the menu item that <code>nId</code> identifies): </p>
<ul>
  <li><b>MF_CHECKED</b> Acts as a toggle with <b>MF_UNCHECKED</b> to place the default 
  check mark next to the item. When the application supplies check-mark bitmaps 
  (see the SetMenuItemBitmaps member function), the �check mark on� bitmap is 
  displayed. 
  <li><b>MF_DISABLED</b> Disables the 
  menu item so that it cannot be selected but does not dim it. 
  <li><b>MF_ENABLED</b> Enables the 
  menu item so that it can be selected and restores it from its dimmed state. 
  Note that the value of this constant is 0; an application should not test 
  against 0 for failure when using this value. 
  <li><b>MF_GRAYED</b> Disables the 
  menu item so that it cannot be selected and dims it. 
  <li><b>MF_MENUBARBREAK</b> Places 
  the item on a new line in static menus or in a new column in pop-up menus. The 
  new pop-up menu column will be separated from the old column by a vertical 
  dividing line. 
  <li><b>MF_MENUBREAK</b> Places the 
  item on a new line in static menus or in a new column in pop-up menus. No 
  dividing line is placed between the columns. 
  <li><b>MF_SEPARATOR</b> Draws a 
  horizontal dividing line. Can only be used in a pop-up menu. This line cannot 
  be dimmed, disabled, or highlighted. Other parameters are ignored. 
  <li><b>MF_UNCHECKED</b> Acts as a toggle with <b>MF_CHECKED</b> to remove a 
    check mark next to the item. When the application supplies check-mark bitmaps 
    (see the SetMenuItemBitmaps member function), the �check mark off� 
    bitmap is displayed. Note that the value of this constant is 0; an application 
    should not test against 0 for failure when using this value. </li>
</ul>
<h4>Parameters</h4>
<p><code>nID</code><br>
  Specifies the menu item ID, as determined by nFlags.</p>
<p><code>nID</code><br>
  Specifies the nature of nID. It can be one of the following values: </p>
<ul>
  <li><b>MF_BYCOMMAND</b> Specifies 
  that the parameter gives the command ID of the existing menu item. This is the 
  default. 
  <li><b>MF_BYPOSITION</b> Specifies that the parameter gives the position of 
    the existing menu item. The first item is at position 0. </li>
</ul>
<p></p>
<p></p>
<p></p>
<h4>Remarks</h4>
<p>Returns the status of the specified menu item or the number of items in a pop-up 
  menu.</p>
<p></p>
<p><A href="#Overview">Overview</A> | <A href="#ClassMembers">Class Members</A> 
  | <A href="#ButtonStyles">Styles</A> | <A href="#KnownProblems">Known Problems</A></p>
<h2><a name=GetSSLMenuString>CButtonSSL::</a>GetSSLMenuString</h2>
<p><code><span class='cpp-keyword'>int</span> GetSSLMenuString (UINT nIDItem, LPTSTR lpString, <span class='cpp-keyword'>int</span> nMaxCount, UINT nFlags);</code></p>
<p><code><span class='cpp-keyword'>int</span> GetSSLMenuString (UINT nIDItem, CString&amp; rString, UINT nFlags);</code></p>
<h4>Return Value</h4>
<p>Specifies the actual number of bytes copied to the buffer, not including the 
  null terminator.</p>
<p></p>
<p></p>
<h4>Parameters</h4>
<p><code>nIDItem</code><br>
  Specifies the integer identifier of the menu item or the offset of the menu 
  item in the menu, depending on the value of <code>nFlags</code>.</p>
<p><code>lpString</code><br>
  Points to the buffer that is to receive the label.</p>
<p><code>rString</code><br>
  A reference to a <code>CString</code> object that is to receive the copied menu string.</p>
<p><code>nMaxCount</code><br>
  Specifies the maximum length (in bytes) of the label to be copied. If the label 
  is longer than the maximum specified in nMaxCount, the extra characters are 
  truncated.</p>
<p></p>
<p><code>nFlags</code><br>
  Specifies the interpretation of the <code>nIDItem</code> parameter. It can be one of the 
  following values:</p>
<ul>
  <li><b>MF_BYCOMMAND</b> Specifies that the parameter gives the command ID of 
    the existing menu item. This is the default if neither <b>MF_BYCOMMAND</b> 
    nor <b>MF_BYPOSITION</b> is set. 
  <li><b>MF_BYPOSITION</b> Specifies that the parameter gives the position of 
    the existing menu item. The first item is at position 0. <br>
  </li>
</ul>
<p></p>
<p></p>
<p></p>
<p></p>
<h4>Remarks</h4>
<p>Copies the label of the specified menu item to the specified buffer. </p>
<p>The <code>nMaxCount</code> parameter should be one larger than the number of characters 
  in the label to accommodate the null character that terminates a string.<br>
</p>
<p></p>
<p><A href="#Overview">Overview</A> | <A href="#ClassMembers">Class Members</A> 
  | <A href="#ButtonStyles">Styles</A> | <A href="#KnownProblems">Known Problems</A></p>
<h2><a name=GetSSLMenuItemInfo>CButtonSSL::</a>GetSSLMenuItemInfo</h2>
<p><code>BOOL GetSSLMenuItemInfo (UINT nIDItem, LPMENUITEMINFO lpMenuItemInfo, BOOL ByPos = FALSE);</code></p>
<h4>Return Value</h4>
<p>If the function succeeds, the return value is nonzero. If the function fails, 
  the return value is zero. To get extended error information, use the Win32 function 
  <code>GetLastError</code>, as described in the Platform SDK.</p>
<p></p>
<p></p>
<h4>Parameters</h4>
<p><code>nIDItem</code><br>
  Identifier or position of the menu item to get information about. The meaning 
  of this parameter depends on the value of <code>ByPos</code>.</p>
<p><code>lpMenuItemInfo</code><br>
  A pointer to a <code>MENUITEMINFO</code>, as described in the Platform SDK, that contains 
  information about the menu.</p>
<p><code>rString</code><br>
  A reference to a <code>CString</code> object that is to receive the copied menu 
  string.</p>
<p><code>ByPos</code><br>
  Value specifying the meaning of <code>nIDItem</code>. By default, <code>ByPos</code> is <code>FALSE</code>, which indicates 
  that <code>nIDItem</code> is a menu item identifier. If <code>ByPos</code> is not set to <code>FALSE</code>, it indicates 
  a menu item position.</p>
<p></p>
<p></p>
<p></p>
<p></p>
<h4>Remarks</h4>
<p>This member function implements the behavior of the of the Win32 function <code>GetMenuItemInfo</code>, 
  as described in the Platform SDK.</p>
<p>Note that in the MFC implementation of <code>GetMenuItemInfo</code>, you do not use a handle 
  to a menu.</p>
<p></p>
<p></p>
<p><A href="#Overview">Overview</A> | <A href="#ClassMembers">Class Members</A> 
  | <A href="#ButtonStyles">Styles</A> | <A href="#KnownProblems">Known Problems</A></p>
<h2><a name=ModifySSLMenu>CButtonSSL::</a>ModifySSLMenu</h2>
<p><code>BOOL ModifySSLMenu (UINT nPosition, UINT nFlags, UINT nIDNewItem = <span class='cpp-literal'>0</span>, LPCTSTR lpszNewItem = NULL);</code></p>
<p><code>BOOL ModifySSLMenu (UINT nPosition, UINT nFlags, UINT nIDNewItem, <span class='cpp-keyword'>const</span> CBitmap* pBmp);</code></p>
<h4>Return Value</h4>
<p>Nonzero if the function is successful; otherwise 0.</p>
<p></p>
<h4>Parameters</h4>
<p><code>nPosition</code><br>
Specifies the menu item to be changed. The <code>nFlags</code> parameter can be used to 
  interpret <code>nPosition</code> in the following ways:</p>  
<ul>
  <li><b>MF_BYCOMMAND</b> Specifies that the parameter gives the command ID of 
    the existing menu item. This is the default if neither <b>MF_BYCOMMAND</b> 
    nor <b>MF_BYPOSITION</b> is set. 
  <li><b>MF_BYPOSITION</b> Specifies that the parameter gives the position of 
    the existing menu item. The first item is at position 0. </li>
</ul>
<p><code>nFlags</code><br>
  Specifies how <code>nPosition</code> is interpreted and gives information about 
  the changes to be made to the menu item.</p>
<p><code>nIDNewItem</code><br>
  Specifies either the command ID of the modified menu item or, if <code>nFlags</code> 
  is set to <b>MF_POPUP</b>, the menu handle (<code>HMENU</code>) of a pop-up 
  menu. The <code>nIDNewItem</code> parameter is ignored (not needed) if <code>nFlags</code> 
  is set to <b>MF_SEPARATOR</b>.</p>
<p><code>lpszNewItem</code><br>
  Specifies the content of the new menu item. The <code>nFlags</code> parameter can be used 
  to interpret <code>lpszNewItem</code> in the following ways:</p>
<ul>
  <li><b>MF_OWNERDRAW</b> Contains an application-supplied 32-bit value that the 
    application can use to maintain additional data associated with the menu item. 
    This 32-bit value is available to the application when it processes <b>MF_MEASUREITEM</b> 
    and <b>MF_DRAWITEM</b>. 
  <li><b>MF_STRING</b> Contains a long pointer to a null-terminated string or 
    to a <code>CString</code>. 
  <li><b>MF_SEPARATOR</b> The <code>lpszNewItem</code> parameter is ignored (not needed). </li>
</ul>
<p><code>pBmp</code><br>
  Points to a <code>CBitmap</code> object that will be used as the menu item.</p>
<p></p>
<h4>Remarks</h4>
<p>Changes an existing menu item at the position specified by <code>nPosition</code>. The application 
  specifies the new state of the menu item by setting values in <code>nFlags</code>. If this 
  function replaces a pop-up menu associated with the menu item, it destroys the 
  old pop-up menu and frees the memory used by the pop-up menu. </p>
<p>When <code>nIDNewItem</code> specifies a pop-up menu, it becomes part of the menu in which 
  it is inserted. If that menu is destroyed, the inserted menu will also be destroyed. 
  An inserted menu should be detached from a <code>CMenu</code> object to avoid conflict.</p>
<p><A href="#Overview">Overview</A> | <A href="#ClassMembers">Class Members</A> 
  | <A href="#ButtonStyles">Styles</A> | <A href="#KnownProblems">Known Problems</A></p>
<h2></h2>
<h2><a name=RemoveSSLMenu>CButtonSSL::</a>RemoveSSLMenu</h2>
<p><code>BOOL RemoveSSLMenu (UINT nPosition, UINT nFlags);</code></p>
<h4>Return Value</h4>
<p>Nonzero if the function is successful; otherwise 0.</p>
<p></p>
<p></p>
<h4>Parameters</h4>
<p><code>nPosition</code><br>
  Specifies the menu item to be changed. The <code>nFlags</code> parameter can 
  be used to interpret <code>nPosition</code> in the following ways:</p>
<ul>
  <li><b>MF_BYCOMMAND</b> Specifies that the parameter gives the command ID of 
    the existing menu item. This is the default if neither <b>MF_BYCOMMAND</b> 
    nor <b>MF_BYPOSITION</b> is set. 
  <li><b>MF_BYPOSITION</b> Specifies that the parameter gives the position of 
    the existing menu item. The first item is at position 0. </li>
</ul>
<p><code>nFlags</code><br>
  Specifies how <code>nPosition</code> is interpreted.</p>
<h4>Remarks</h4>
<p>Deletes a menu item with an associated pop-up menu from the menu. It does not 
  destroy the handle for a pop-up menu, so the menu can be reused.</p>
<p><A href="#Overview">Overview</A> | <A href="#ClassMembers">Class Members</A> 
  | <A href="#ButtonStyles">Styles</A> | <A href="#KnownProblems">Known Problems</A></p>
<h2><a name=SetSSLMenuItemBitmaps>CButtonSSL::</a>SetSSLMenuItemBitmaps</h2>
<p><code>BOOL SetSSLMenuItemBitmaps (UINT nPosition, UINT nFlags, <span class='cpp-keyword'>const</span> CBitmap* pBmpUnchecked,
                                <span class='cpp-keyword'>const</span> CBitmap* pBmpChecked);</code></p>
<h4>Return Value</h4>
<p>Nonzero if the function is successful; otherwise 0.</p>
<p></p>
<p></p>
<h4>Parameters</h4>
<p><code>nPosition</code><br>
  Specifies the menu item to be changed. The <code>nFlags</code> parameter can 
  be used to interpret <code>nPosition</code> in the following ways:</p>
<ul>
  <li><b>MF_BYCOMMAND</b> Specifies that the parameter gives the command ID of 
    the existing menu item. This is the default if neither <b>MF_BYCOMMAND</b> 
    nor <b>MF_BYPOSITION</b> is set. 
  <li><b>MF_BYPOSITION</b> Specifies that the parameter gives the position of 
    the existing menu item. The first item is at position 0. </li>
</ul>
<p><code>nFlags</code><br>
  Specifies how <code>nPosition</code> is interpreted.</p>
<p><code>pBmpUnchecked</code><br>
  Specifies the bitmap to use for menu items that are not checked.</p>
<h4></h4>
<p><code>pBmpChecked</code><br>
  Specifies the bitmap to use for menu items that are checked.</p>
<h4></h4>
<h4>Remarks</h4>
<p>Associates the specified bitmaps with a menu item. Whether the menu item is 
  checked or unchecked, Windows displays the appropriate bitmap next to the menu 
  item. </p>
<p>If either <code>pBmpUnchecked</code> or <code>pBmpChecked</code> is <code>NULL</code>, then Windows displays nothing 
  next to the menu item for the corresponding attribute. If both parameters are 
  <code>NULL</code>, Windows uses the default check mark when the item is checked and removes 
  the check mark when the item is unchecked. </p>
<p>When the menu is destroyed, these bitmaps are not destroyed; the application 
  must destroy them.</p>
<p>The Windows <code>GetMenuCheckMarkDimensions</code> function retrieves the dimensions of 
  the default check mark used for menu items. The application uses these values 
  to determine the appropriate size for the bitmaps supplied with this function. 
  Get the size, create your bitmaps, then set them.</p>
<p><A href="#Overview">Overview</A> | <A href="#ClassMembers">Class Members</A> 
  | <A href="#ButtonStyles">Styles</A> | <A href="#KnownProblems">Known Problems</A></p>
<h2><a name=SetSSLButtonCursor>CButtonSSL::SetSSLButtonCursor</a></h2>
<h2></h2>
<P><CODE>BOOL SetSSLButtonCursor (UINT nResourceID);</CODE></P>
<H4>Return Value</H4>
<P>Nonzero if successful; otherwise 0.</P>
<H4>Parameters</H4>
<P><CODE>nResourceID</CODE><BR>Specifies the cursor ID of the cursor resource to 
load.</P>
<H4>Remarks</H4>
<P>The cursor specified will be shown when the mouse is over any part of the 
button, including the drop-down arrow. The cursor will revert to it's previous 
state when the drop-arrow is clicked for navigation of the menu.</P>
<P><A href="#Overview">Overview</A> 
| <A href="#ClassMembers">Class 
Members</A> | <A href="#ButtonStyles">Styles</A> 
| <A href="#KnownProblems">Known 
Problems</A></P>
<P></P>
<H2><A name=SetSSLButtonTooltip>CButtonSSL::SetSSLButtonTooltip</A></H2>
<P><CODE><span class='cpp-keyword'>void</span> SetSSLButtonToolTip (LPCTSTR lpszTipText, BOOL bActivate = 
TRUE);</CODE></P>
<P><CODE><span class='cpp-keyword'>void</span> SetSSLButtonToolTip (UINT nResourceID, BOOL bActivate = 
TRUE);</CODE></P>
<H4>Parameters</H4>
<P><CODE>lpszTipText</CODE><BR>Points to a null-terminated string containing the 
text to be displayed on the tooltip.</P>
<P><CODE>nResourceID</CODE><BR>Specifies the resource ID of a string in the 
string table to be dispalyed on the tooltip.</P>
<P><CODE>bActivate</CODE><BR>Specifies whether the tool tip is to be activated 
or deactivated. The tool tip is activated by default.</P>
<H4></H4>
<H4></H4>
<H4>Remarks</H4>
<P>When the tool tip is active (<CODE>bActivate</CODE> = <CODE>TRUE</CODE>), the 
tool tip information appears when the cursor hovered over the button; when it is 
inactive (<CODE>bActivate</CODE> = <CODE>FALSE</CODE>), the tool tip information 
does not appear, even when the cursor is hovered over the button.</P>
<P><A href="#Overview">Overview</A> 
| <A href="#ClassMembers">Class 
Members</A> | <A href="#ButtonStyles">Styles</A> 
| <A href="#KnownProblems">Known 
Problems</A></P>
<H2><A name=SetSSLButtonURL>CButtonSSL::SetSSLButtonURL</A></H2>
<P><CODE><span class='cpp-keyword'>void</span> SetSSLButtonURL (LPCTSTR lpszURL);</CODE></P>
<H4>Parameters</H4>
<P><CODE>lpszURL</CODE><BR>Points to a null-terminated string containing the URL 
to be opened when the button is clicked.</P>
<H4>Remarks</H4>
<P>Call this function to define a URL to be opened when the 
button is clicked. If a cursor has not already been defined for the button using 
<A href="#SetSSLButtonCursor" >SetSSLButtonCursor</A> then this function attempts to load 
the hand cursor from WinHlp32.exe. This approach was detailed in Paul DiLascia's 
Jan 1998 MSJ article. If the runtime environment does not have WinHlp32.exe in 
the Windows directory then one can be defined and set using <A href="#SetSSLButtonCursor" >SetSSLButtonCursor</A>.</P>
<P><A href="#Overview" >Overview</A> | <A href="#ClassMembers" >Class Members</A> | <A href="#ButtonStyles" >Styles</A> | <A href="#KnownProblems" >Known Problems</A></P>
<P><B>See Also </B><A href="#SetSSLButtonCursor" >CButtonSSL::SetSSLButtonCursor</A></P>
<H2><A name=ButtonStyles>Button 
Styles</A></H2>
<UL>
  <LI><CODE>SSL_BS_FLAT</CODE> Creates 
  a button with a flat appearance. When the mouse is over the button it will be 
  raised, but not to the extent of a normal 3D control. The default style. 
  <LI><CODE>SSL_BS_MENU_BTN</CODE> 
  Creates a button with a drop-arrow at the right side of the button. A menu may 
  be assigned to the object to be displayed when the drop part is clicked. 
  <LI><CODE>SSL_BS_AUTOSIZE</CODE> 
  Creates a button that automatically sizes to fit it's contents. This style 
  will not prevent the button image and the button text from overlapping. 
</LI></UL>
<H2><A name=AlignmentStyles>Alignment 
Styles</A></H2>
<UL>
  <LI><CODE>SSL_TEXT_TOP</CODE> Aligns 
  the text vertically to the top of the button. 
  <LI><CODE>SSL_TEXT_LEFT</CODE> 
  Aligns the text horizontally to the left of the button. 
  <LI><CODE>SSL_TEXT_CENTER</CODE> 
  Aligns the text horizontally to the centre of the button. The default style. 
  <LI><CODE>SSL_TEXT_RIGHT</CODE> 
  Aligns the text horizontally to the right of the button. 
  <LI><CODE>SSL_TEXT_VCENTER</CODE> 
  Aligns the text vertically to the centre of the button. The default style. 
  <LI><CODE>SSL_TEXT_BOTTOM</CODE> 
  Aligns the text vertically to the bottom of the button. </LI></UL>
<P>Only one horizontal and one vertical style should be set 
for the text alignment.</P>
<UL>
  <LI><CODE>SSL_IMAGE_TOP</CODE> 
  Aligns the button image vertically to the top of the button. The default 
  style. 
  <LI><CODE>SSL_IMAGE_LEFT</CODE> 
  Aligns the button image horizontally to the left of the button. The default 
  style. 
  <LI><CODE>SSL_IMAGE_CENTER</CODE> 
  Aligns the button image horizontally to the centre of the button. 
  <LI><CODE>SSL_IMAGE_RIGHT</CODE> 
  Aligns the button image horizontally to the right of the button. 
  <LI><CODE>SSL_IMAGE_VCENTER</CODE> 
  Aligns the button image vertically to the centre of the button. 
  <LI><CODE>SSL_IMAGE_BOTTOM</CODE> 
  Aligns the button image vertically to the bottom of the button. </LI></UL>
<P>Only one horizontal and one vertical style should be set 
for the button image alignment.</P>
<H2><A name=ColourEnumeration>Colour 
Enumeration</A></H2>
<UL>
  <LI><CODE>SSL_UP_BK_COLOR</CODE> The 
  button colour to use when the button is in the up state. 
  <LI><CODE>SSL_UP_TEXT_COLOR</CODE> 
  The text colour to use when the button is in the up state. 
  <LI><CODE>SSL_OVER_BK_COLOR</CODE> 
  The button colour to use when the button is in the over state. 
  <LI><CODE>SSL_OVER_TEXT_COLOR</CODE> 
  The text colour to use when the button is in the overstate. 
  <LI><CODE>SSL_DOWN_BK_COLOR</CODE> 
  The button colour to use when the button is in the down state. 
  <LI><CODE>SSL_DOWN_TEXT_COLOR</CODE> 
  The text colour to use when the button is in the down state. 
  <LI><CODE>SSL_MAX_COLORS</CODE> 
  Defines the maximum number of colours that can be defined. </LI></UL>
<H2><A name=Constants>Constants</A></H2>
<UL>
  <LI><A name=SSL_MASK><CODE 
  >SSL_MASK</CODE></A> Defined as <CODE 
  >RGB (<span class=cpp-literal 
  >255</span>, <span class=cpp-literal 
  >0</span>, <span class=cpp-literal 
  >255</span>)</CODE> </LI></UL>
<H2><A name=KnownProblems>Known 
Problems</A></H2>
<P>As far as I know there aren't any. If you find any let 
me know.</P><!-- Article Ends -->

</body>
</html>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Derek Lakin
Software Developer (Senior)
United Kingdom United Kingdom
No Biography provided

| Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.141220.1 | Last Updated 5 Dec 2001
Article Copyright 2001 by Derek Lakin
Everything else Copyright © CodeProject, 1999-2014
Layout: fixed | fluid