📄 statusoverlay.h
字号:
/************************************************************************/
/* Bluetooth Test The.Berlin.Factor April 2003 */
/************************************************************************/
#ifndef __CStatusOverlay_H__
#define __CStatusOverlay_H__
#include <GDI.h>
#include <W32Std.h>
#include "util/TImeOutNotifier.h"
class CCoeControl;
class CFbsBitmap;
class CFbsBitmapDevice;
class CFbsBitGc;
class CTimeOutTimer;
// Stellt ein Overlay-GUI-Element bereit, welches insbesondere dazu
// verwendet werden kann, einen Statusmeldung ueber dem eigentlichen
// Display der Komponente anzuzeigen. Da es sich um ein Overlay, und
// keine vollstaendige Komponente, handelt, muss von der eigentlichen
// Komponente in der #Draw Funktion explizit #DrawInto des Overlays
// aufgerufen werden!
class CStatusOverlay : public CBase, public MTimeOutNotifier {
public:
// Initialisiert das Status-Overlay fuer die angegebene Komponente.
// Aendert sich das Status-Overlay, wird #DrawDeferred der Komponente
// aufgerufen. Dabei wird der Status in das angegebene Rechteck
// gezeichnet.
static CStatusOverlay * NewL( CCoeControl * aOwningControl, const TRect aStatusRect );
~CStatusOverlay( );
public:
// Legt eine neue Statusmeldung fest.
void SetStatus( const TDesC16 & aMessage, TBool aFadeOut = EFalse );
// Legt eine neue Statusmeldung fest.
void SetStatus( const TDesC8 & aMessage, TBool aFadeOut = EFalse );
// Legt eine neue Statusmeldung fest, indem eine Text-Ressource
// ausgelesen wird.
void SetStatusL( TInt aTextResourceId, TBool aFadeOut = EFalse );
// Zeichnet das Overlay in den angegebenen Kontext.
void DrawInto( CWindowGc & aGc );
public:
// From MTimeOutNotifier
void TimerExpired( );
protected:
// Initialisiert das Status-Overlay fuer die angegebene Komponente.
// Aendert sich das Status-Overlay, wird #DrawDeferred der Komponente
// aufgerufen.
CStatusOverlay( CCoeControl * aOwningControl, const TRect aStatusRect );
void ConstructL( );
protected:
// Aktualisiert die OffScreen Bitmap mit der aktuellen Statusmeldung.
void UpdateOffScreenBitmap( );
// Zeichnet den aktuellen Text aus #iStatusText in die OffScreen
// Bitmap. Liefert die Anzahl benoetigter Zeilen zurueck. Der Text
// wird nur dann wirklich gezeichnet wenn #aReallyDrawFlag auf #ETrue
// gesetzt ist.
TInt DrawText( const CFont * aFont, const TRect & aRect, TBool aReallyDrawFlag = ETrue );
private:
enum TDisplayState {
EDoNotDisplay,
EShowStatus
};
private:
// Enthaelt die bei Aenderungen zu benachrichtigende Komponente.
CCoeControl * iOwner;
// Timer fuer das Ausblenden der Statusmeldung.
CTimeOutTimer * iTimer;
// Enthaelt den tatsaechlich genutzten Teil der OffScreen Bitmap.
TRect iOffScreenRect;
CFbsBitmap * iOffScreenBitmap;
CFbsBitmapDevice * iOffScreenDevice;
CFbsBitGc * iOffScreenGc;
RCriticalSection iMutex;
private:
// Zu verwendender Innenrand.
TPoint iInsets;
// Der fuer das Status-Overlay zu verwendende Bildschirmbereich.
TRect iStatusRect;
// Enthaelt den aktuellen Status.
HBufC * iStatusText;
// Enthaelt den aktuellen Zustand der Statusanzeige.
TDisplayState iDisplayState;
private:
TRgb iBackgroundColor;
TRgb iBorderColor;
TRgb iTextColor;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -