#include "wx/utils.h"
#endif
-#if wxUSE_GAUGE
+#if wxUSE_GAUGE
#include "wx/msw/gaugemsw.h"
#include "wx/msw/private.h"
}
SetName(name);
+#if wxUSE_VALIDATORS
SetValidator(validator);
+#endif // wxUSE_VALIDATORS
if (parent) parent->AddChild(this);
m_rangeMax = range;
int height = size.y;
long msFlags = WS_CHILD | WS_VISIBLE | WS_TABSTOP;
- msFlags |= ZYZGS_3D;
+ bool want3D;
+ WXDWORD exStyle = Determine3DEffects(WS_EX_CLIENTEDGE, &want3D);
+ if (want3D)
+ msFlags |= ZYZGS_3D;
+
+ if ( m_windowStyle & wxCLIP_SIBLINGS )
+ msFlags |= WS_CLIPSIBLINGS;
HWND wx_button =
CreateWindowEx(MakeExtendedStyle(m_windowStyle), wxT("zYzGauge"), NULL, msFlags,
wOrient = ZYZG_ORIENT_LEFTTORIGHT;
else
wOrient = ZYZG_ORIENT_BOTTOMTOTOP;
-
+
SendMessage(wx_button, ZYZG_SETORIENTATION, wOrient, 0);
SendMessage(wx_button, ZYZG_SETRANGE, range, 0);
- SendMessage(GetHwnd(), ZYZG_SETFGCOLOR, 0, RGB(GetForegroundColour().Red(), GetForegroundColour().Green(), GetForegroundColour().Blue()));
- SendMessage(GetHwnd(), ZYZG_SETBKCOLOR, 0, RGB(GetBackgroundColour().Red(), GetBackgroundColour().Green(), GetBackgroundColour().Blue()));
+ SendMessage(GetHwnd(), ZYZG_SETFGCOLOR, 0, PALETTERGB(GetForegroundColour().Red(), GetForegroundColour().Green(), GetForegroundColour().Blue()));
+ SendMessage(GetHwnd(), ZYZG_SETBKCOLOR, 0, PALETTERGB(GetBackgroundColour().Red(), GetBackgroundColour().Green(), GetBackgroundColour().Blue()));
+
+ //SetBezelFace(1);
+ //SetShadowWidth(1);
SetFont(parent->GetFont());
if ( !wxControl::SetForegroundColour(col) )
return FALSE;
- SendMessage(GetHwnd(), ZYZG_SETFGCOLOR, 0, RGB(col.Red(), col.Green(), col.Blue()));
+ SendMessage(GetHwnd(), ZYZG_SETFGCOLOR, 0, PALETTERGB(col.Red(), col.Green(), col.Blue()));
return TRUE;
}
if ( !wxControl::SetBackgroundColour(col) )
return FALSE;
- SendMessage(GetHwnd(), ZYZG_SETBKCOLOR, 0, RGB(col.Red(), col.Green(), col.Blue()));
+ SendMessage(GetHwnd(), ZYZG_SETBKCOLOR, 0, PALETTERGB(col.Red(), col.Green(), col.Blue()));
return TRUE;
}
/** zyz3d.c
*
- * DESCRIPTION:
+ * DESCRIPTION:
* This module contains functions for creating nifty 3D borders
* around controls like zYzGauge.
*
/** void FAR PASCAL Draw3DFaceFrame(HDC hdc, LPRECT rc, WORD wWidth)
*
- * DESCRIPTION:
+ * DESCRIPTION:
* This function draws a flat frame with the current button-face
* color.
*
/** void FAR PASCAL Draw3DRect(HDC, LPRECT, WORD, WORD)
*
- * DESCRIPTION:
+ * DESCRIPTION:
* Draws a 3D rectangle that is shaded. wFlags can be used to
* control how the rectangle looks.
*
/** void FAR PASCAL Draw3DLine(HDC hdc, WORD x, WORD y, WORD nLen,
*
- * DESCRIPTION:
+ * DESCRIPTION:
* Draws a 3D line that can be used to make a 3D box.
*
* ARGUMENTS:
** cjp */
void FAR PASCAL Draw3DLine(HDC hdc, WORD x, WORD y, WORD nLen,
- WORD wShadowWidth, WORD wFlags)
+ WORD wShadowWidth, WORD wFlags)
{
HBRUSH hOldBrush;
HPEN hOldPen;
Point[0].x = x;
Point[0].y = y;
- /* To do this we'll simply draw a polygon with four sides, using
+ /* To do this we'll simply draw a polygon with four sides, using
* the appropriate brush. I dare you to ask me why this isn't a
* switch/case!
*/
/* select 'dark' brush if 'in'--'light' for 'out' */
fDark = (wFlags & DRAW3D_IN) ? TRUE : FALSE;
}
-
+
/* well maybe it's for the right side? */
else if (wFlags & DRAW3D_RIGHTLINE)
{
/** zyzgauge.c
*
- * DESCRIPTION:
+ * DESCRIPTION:
* Yet another 'Gas Gauge Custom Control.' This control gives you
* a 'progress bar' class (named zYzGauge) for use in your applications.
* You can set the range, position, font, color, orientation, and 3d
/* static global variables */
static wxChar gszzYzGaugeClass[] = wxT("zYzGauge");
-
+
/* window word position definitions */
#define ZYZG_WW_PZYZGAUGE 0
#if !defined(APIENTRY) // NT defines APIENTRY, 3.x not
#define APIENTRY FAR PASCAL
#endif
-
+
#ifdef __WIN32__
#define _EXPORT /**/
#else
/** BOOL FAR PASCAL gaugeInit(HINSTANCE hInstance)
*
- * DESCRIPTION:
+ * DESCRIPTION:
* Registers the window class for the zYzGauge control. Performs
* other initialization for the zYzGauge text control. This must
* be done before the zYzGauge control is used--or it will fail
static BOOL fRegistered = FALSE;
WNDCLASS wc;
HDC hdc;
-
+
/* assume already registered if not first instance */
if (fRegistered)
return (TRUE);
}
/* good! we have color: blue foreground, white background */
- else
+ else
{
rgbDefTextColor = RGB(0, 0, 255);
rgbDefBkColor = RGB(255, 255, 255);
/** static void PASCAL gaugePaint(HWND hwnd, HDC hdc)
*
- * DESCRIPTION:
+ * DESCRIPTION:
* This function is responsible for painting the zYzGauge control.
*
* ARGUMENTS:
/* add all the other pixels into the border width */
Offset += (2 * pgauge->wWidth3D) + pgauge->wWidthBezelFace + 1;
}
-
+
/* dup--one rc for 'how much filled', one rc for 'how much empty' */
rc2 = rc1;
dwExtent = size.cx;
#else
dwExtent = GetTextExtent(hdc, ach, wGomerX = lstrlen(ach));
-#endif
+#endif
/* Draw the finished (ie the percent done) side of box. If
/* unselect the font */
SelectObject(hdc, hFont);
} /* gaugePaint() */
-
+
/** LRESULT FAR PASCAL gaugeWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
*
- * DESCRIPTION:
+ * DESCRIPTION:
* This is the control's window procedure. Its purpose is to handle
* special messages for this custom control.
*
* ZYZG_SETORIENTATION : Sets the orientation of the gauge. This
* can be one of the ZYZG_ORIENT_?? msgs.
*
- * ZYZG_GETORIENTATION : Gets the current orientation of the
+ * ZYZG_GETORIENTATION : Gets the current orientation of the
* gauge.
*
* ZYZG_SETPOSITION : Sets the current position of the gauge.