- Visual C++源码
- Visual Basic源码
- C++ Builder源码
- Java源码
- Delphi源码
- C/C++源码
- PHP源码
- Perl源码
- Python源码
- Asm源码
- Pascal源码
- Borland C++源码
- Others源码
- SQL源码
- VBScript源码
- JavaScript源码
- ASP/ASPX源码
- C#源码
- Flash/ActionScript源码
- matlab源码
- PowerBuilder源码
- LabView源码
- Flex源码
- MathCAD源码
- VBA源码
- IDL源码
- Lisp/Scheme源码
- VHDL源码
- Objective-C源码
- Fortran源码
- tcl/tk源码
- QT源码
XSTATUSBAR.CPP
资源名称:x_status_demo [点击查看]
上传用户:bjaaa555
上传日期:2013-01-31
资源大小:40k
文件大小:28k
源码类别:
状态条
开发平台:
Visual C++
- /*****************************************************************************
- *
- * Autor: Joachim Raidl
- * Adresse: Joachim.Raidl@iname.com
- * Klasse: XPaneInfo, XStatusBar
- * Files: XStatusBar.Cpp, XStatusBar.H
- * Beschreibung: Mit dieser Klasse k鰊nen komplexe Status-Zeilen verwaltet
- * werden. So k鰊nen in jedem Pane Texte, Bitmaps oder
- * Progress-Bars dargestellt, horizontal, vertikal oder
- * diagonal gescrollt und links, rechts oder zentriert
- * ausgerichtet werden. Auch kann jeder Zeit zwischen den
- * einzelnen Modi hin- und hergeschaltet werden. F黵 jede
- * Pane kann sowohl ein Einschalt- als auch ein Ausschalt-
- * text, -hintergrund oder -bitmap definiert werden.
- * Funktionen: operator=(), SetDefault(), SetFont(), SetMode(),
- * (XPaneInfo) SetFgColor(), SetBkColor(), SetBitmap(), SetText(),
- * SetNumber(), HScroll(), VScroll(),
- * Funktionen: CreateStatusBar(), SetIndicators(), OnPaint(),
- * (XStatusBar) DrawSizing(), DrawTextPane(), DrawBitmapPane(),
- * DrawProgressPane(), GetXPaneInfo(), OnTimer(),
- * SetStyle(), SetWidth(), GetStyle(), GetWidth(), GetID(),
- * OnDestroy(), SavePane(), RestorePane(),
- * GetPaneAtPosition(), OnMouseMove(),
- * OnLButtonUp(), OnMButtonUp(), OnRButtonUp(),
- * OnLButtonDown(), OnMButtonDown(), OnRButtonDown(),
- * OnLButtonDblClk(), OnMButtonDblClk(), OnRButtonDblClk(),
- *
- ****************************************************************************/
- #include "StdAfx.h"
- #include "XStatusBar.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- volatile static char jrrcid[] = "%J%";
- #define IDC_JRLIB_STATUSBAR_TIMER 20000
- /*****************************************************************************
- * Klasse: XPaneInfo
- * Funktion: XPaneInfo, ~XPaneInfo
- * Parameter: -
- * Return:
- *
- * Der Konstruktor initialisiert ein Pane. Im Desturktor wird eine eventuell
- * vorhandene Progress-Kontrolle wieder gel鰏cht.
- ****************************************************************************/
- XPaneInfo::XPaneInfo()
- {
- progress = NULL;
- hScrollPos = 0;
- vScrollPos = 0;
- SetDefault();
- }
- XPaneInfo::XPaneInfo(const XPaneInfo& paneInfo)
- {
- for (int i = 0; i < 2; i++)
- {
- fgColor[i] = paneInfo.fgColor[i];
- bkColor[i] = paneInfo.bkColor[i];
- string[i] = paneInfo.string[i];
- }
- font = paneInfo.font;
- mode = paneInfo.mode;
- progress = NULL;
- hScrollPos = paneInfo.hScrollPos;
- vScrollPos = paneInfo.vScrollPos;
- }
- XPaneInfo::~XPaneInfo()
- {
- if (progress) delete progress;
- progress = NULL;
- }
- /*****************************************************************************
- * Klasse: XPaneInfo
- * Funktion: operator=
- * Parameter: paneInfo Zweites XPaneInfo-Element, dessen Informationen
- * kopiert werden.
- * Return: Kopie des XPaneInfo-Elements
- *
- * Zuweisungsoperator.
- * !!! ACHTUNG !!! 'progress' wird nicht kopiert! Ein eventuell vorhandener
- * Progress-Bar wird gel鰏cht.
- ****************************************************************************/
- XPaneInfo XPaneInfo::operator=(const XPaneInfo& paneInfo)
- {
- for (int i = 0; i < 2; i++)
- {
- fgColor[i] = paneInfo.fgColor[i];
- bkColor[i] = paneInfo.bkColor[i];
- string[i] = paneInfo.string[i];
- }
- font = paneInfo.font;
- mode = paneInfo.mode;
- hScrollPos = paneInfo.hScrollPos;
- vScrollPos = paneInfo.vScrollPos;
- if (progress) delete progress;
- progress = NULL;
- return *this;
- }
- /*****************************************************************************
- * Klasse: XPaneInfo
- * Funktion: SetDefault
- * Parameter: -
- * Return: -
- *
- * Hier werden die Members initialisiert.
- ****************************************************************************/
- void XPaneInfo::SetDefault()
- {
- bkColor[1] = COLORREF(GetSysColor(COLOR_MENU));
- bkColor[0] = bkColor[1];
- fgColor[1] = GetSysColor(COLOR_MENUTEXT);
- fgColor[0] = RGB(GetRValue(bkColor[1])/2, GetGValue(bkColor[1])/2, GetBValue(bkColor[1])/2);
- mode = XSB_TEXT | DT_LEFT;
- SetFont(CFont::FromHandle((HFONT) GetStockObject(ANSI_VAR_FONT)));
- if (progress) delete progress;
- progress = NULL;
- }
- /*****************************************************************************
- * Klasse: XPaneInfo
- * Funktion: SetFont
- * Parameter: name Name der Schriftart (Bsp.: Arial)
- * size Gr鲞e der Schriftart in 1/10 Pt (Bsp.: 120)
- * Return: -
- *
- * Setzt den Font f黵 ein Pane anhand des Fontsnamens und der Punktgr鲞e
- * (10 * Point).
- ****************************************************************************/
- void XPaneInfo::SetFont(LPCSTR name, int size)
- {
- CFont pointFont;
- pointFont.CreatePointFont(size, name);
- pointFont.GetLogFont(&font);
- }
- /*****************************************************************************
- * Klasse: XPaneInfo
- * Funktion: SetMode
- * Parameter: newMode Neuer Anzeigemodus
- * Return: -
- *
- * Setzt den Modus f黵 das aktuelle Pane. Falls dieses Pane zuvor mit einer
- * ProgressCtrl besetzt war, wird diese zuvor gel鰏cht.
- ****************************************************************************/
- void XPaneInfo::SetMode(int newMode)
- {
- if ((mode = newMode) & XSB_PROGRESS)
- {
- if (!progress)
- {
- UINT style = WS_VISIBLE | WS_CHILD;
- if (mode & XSB_SMOOTH) style |= PBS_SMOOTH;
- progress = new CProgressCtrl();
- progress->Create(style, CRect(0,0,0,0), XStatusBar::aktBar, 1);
- }
- }
- else if (progress)
- {
- delete progress;
- progress = NULL;
- }
- }
- /*****************************************************************************
- * Klasse: XPaneInfo
- * Funktion: SetFgColor
- * Parameter: on Text-Farbe im aktiven Zustand
- * off Text-Farbe im inaktiven Zustand
- * Return: -
- *
- * Definiert die Farben f黵 einen angezeigten Text. Hierbei k鰊nen zwei
- * Farben f黵 den aktiven und den inaktiven Zustand definiert werden. Wird
- * die zweite Farbe vergessen, wird sie mit der halben Intensit鋞 der Hinter-
- * grundfarbe vordefiniert.
- ****************************************************************************/
- void XPaneInfo::SetFgColor(COLORREF on, COLORREF off)
- {
- fgColor[1] = on;
- if (off != -1)
- fgColor[0] = off;
- else
- {
- COLORREF bk = GetSysColor(COLOR_MENU);
- fgColor[0] = RGB(GetRValue(bk)/2, GetGValue(bk)/2, GetBValue(bk)/2);
- }
- }
- /*****************************************************************************
- * Klasse: XPaneInfo
- * Funktion: SetBkColor
- * Parameter: on Hintergrundfarbe im aktiven Zustand
- * off Hintergrundfarbe im inaktiven Zustand
- * Return: -
- *
- * Definiert die Hintergrundfarben f黵 einen angezeigten Text. Hierbei k鰊nen
- * zwei Farben f黵 den aktiven und den inaktiven Zustand definiert werden.
- * Wird die zweite Farbe vergessen, wird sie mit der Hintergrundfarbe vor-
- * definiert.
- ****************************************************************************/
- void XPaneInfo::SetBkColor(COLORREF on, COLORREF off)
- {
- bkColor[1] = on;
- if (off != -1) bkColor[0] = off;
- else bkColor[0] = GetSysColor(COLOR_MENU);
- }
- /*****************************************************************************
- * Klasse: XPaneInfo
- * Funktion: SetBitmap, SetText, SetNumber
- * Parameter: newBitmap Name des im Pane anzuzeigenden Bitmaps
- * newText Im Pane anzuzeigender Text
- * newNumber Im Pane anzuzeigende Nummer
- * Return: -
- *
- * Mit diesen Funktionen werden die Bitmaps, Texte oder Nummern f黵 die
- * Anzeige in dem aktuellen Pane gesetzt.
- ****************************************************************************/
- void XPaneInfo::SetBitmap(LPCSTR newOnBitmap, LPCSTR newOffBitmap)
- {
- string[1] = newOnBitmap;
- string[0] = newOffBitmap;
- }
- void XPaneInfo::SetText(LPCSTR newOnText, LPCSTR newOffText)
- {
- string[1] = newOnText;
- string[0] = newOffText;
- }
- void XPaneInfo::SetNumber(int newOnNumber, int newOffNumber)
- {
- string[1].Format("%d", newOnNumber);
- string[0].Format("%d", newOffNumber);
- }
- /*****************************************************************************
- * Klasse: XPaneInfo
- * Funktion: HScroll, VScroll
- * Parameter: rect Ausgaberechteck des aktuellen Panes
- * maxWidth Maximale Breite, bzw. H鰄e beim Scrollen
- * maxHeight (z. B. Textl鋘ge oder Bitmapbreite)
- * nullValue Wert f黵 Turnaround
- * Return: -
- *
- * Inkrementiert die jeweilige Scrollvariable, soda