SWindow

Ein Fenster. [Mehr ...]

Vererbung

Basisklassen(n)   abgeleitete Klassen
  SWindow
SFrameWindow
SControl
SPositioningWnd

Attribute

public:

Attribut Typ Beschreibung
className SString
eventCalls SPointerList Liste mit Zeigern auf SvlEventCallEntry. Enthält alle Zuordungen von Ereignissen zu Funktionen.
hwnd HWND Fenster-Handle
margin SRect Innenabstände für eigene Berechnung des Client-Rects.
pToolTip SToolTip* Zeiger auf ein evt. vorhandenes SToolTip.
screen SDevice Das Darstellungs-Device
scroll SScroll
wndExStyle DWORD Extended Style, mit dem das Fenster erzeugt wird.
wndStartMenuItemID HMENU das zur Fenster-Erzeugung zu verwendende MenuHandle oder bei Dialog-Controls der ItemID
wndStartRect SRect Standardposition und Größe des Fensters
wndStartText SString Fenstertitel
wndStyle DWORD Style, mit dem das Fenster erzeugt wird.
wndSvlStyle DWORD Style, mit SVL-internen Styles.

protected:

Attribut Typ Beschreibung
anchor SAnchor Anker zur automatischen Positionierung.
backgroundImage SImage Hintergrundbild
cursorCacheH HCURSOR Eventuelles Handel eines Cursors, da vom Fensetr verwaltet wird.
cursorCacheID int
cursorWaitH HCURSOR
cursorWaits int Anzahl der Wait-Cursors des Fensters
isControlWnd BOOL Zeigt an, dass das Fenster ein Standard-Windows-Control ist.
isCreatedState BOOL das Fenster wurde erstellt
isFirstShown bool Zeigt an, ob dieses Fenster zum ersten mal sichtbar wird.
isMetaFileExport bool Zeigt an, ob ein MetaFile-Export läuft, um in onPaint darauf reagieren zu können
isPositioning BOOL wird vom Layouter positioniert
isPrinting bool wenn true wird gerade gedruckt, zu verwenden in onPaint()
lastMessage Message letzte Message, die das Fenster empfangen hat
minSize SSize Legt die Mindest-Fenstergröße fest.
Wird im Konstruktor mit -1 initialisiert und wenn nicht anders festgelegt bei create() mit der Startgröße belegt.
modalExitCode int Der Rückgabewert, wenn das Fenster modal angezeigt wird.
modalState int Fensterstatus, wenn das Fenster modal geöffnet wurde. Wird intern verwendet.
pParentWnd SWindow* Zeiger zum Parent-Window (Elternfenster; Container in dem sich dieses Fenster befindet)
timerEnabled bool Timer ist aktiv
wincl WNDCLASSEX Klassenname der Fensterklasse der WIN32-API, aus der diese Klasse erstellt wurde

Operationen

public:

Name Parameter Rückgabewert Beschreibung
addToolTip const SString& tiptext,
const SString& titel="",
int icon=TT_NO_ICON,
int maxWidth=200,
BOOL ballonStyle=true
BOOL Fügt dem Fenster ein Tooltipp hinzu.
addToolTipWithTracking const SString& tiptext,
const SString& titel="",
int icon=TT_NO_ICON,
int maxWidth=200,
BOOL ballonStyle=true
BOOL Fügt dem Fenster ein Tooltipp hinzu, dass selbst an/ausgeschalten und positioniert wird.
bringWindowToTop void Fenster wird ganz nach oben (vorn) gebracht.
clientToScreen const SPoint& clientPoint SPoint Wandelt eine relative Koordinate des Fensters in eine absolute Bildschirmkoordinate um.
create SWindow* parent BOOL erstellt das Fenster
createMetaFile SRectc rect,
const SString& filename
HENHMETAFILE Erzeugt ein MetaFile mit dem Fensterinhalt.
destroy void Schließt das Fenster.
disable BOOL disable=true BOOL deaktiviert das Fenster
enable BOOL enable=true BOOL Aktiviert das Fenster.
enableTimer bool enable void Timer aktivieren
getClientRect SRect Liefert ein SRect mit der inneren Größe des Fensters in relativen Koordinaten zurück, also das Rechteck, in dem alle Inhalte des Fensters dargestellt werden.
getClientSize SSize
getEffectiveClientRect SRect
getEffectiveClientSize SSize
getParent SWindow*
getStyle int Gibt den aktuellen Windows-Style zurück.
getTextLength int Gibt die Textlänge des Fenstertextes zurück.
getWindowRect BOOL absolute=false SRect Gibt die Position des Fensters relativ innerhalb des Client-Rect des Vaterfensters zurück.
getWindowText SString
hasFocus BOOL
hide void Versteckt das Fenster, damit wird es nicht dargestellt und ist durch den Nutzer auch nicht erreichbar.
imageLoad char* filename,
int posx,
int posy,
bool visible
int
invalidate SRect rect void Teilt dem Betriebssysem mit, dass ein Bereich des Fensters ungültig ist. Das Betriebssystem wird diesen Bereich mit Hilfe der 'onPaint()'-Funktion neu zeichnen.
invalidate void Teilt dem Betriebssysem mit, dass dieses Fenster ungültig ist. Das Betriebssystem wird das Fenster mit Hilfe der 'onPaint()'-Funktion neu zeichnen.
isControl BOOL Ermittelt, ob dieses Fenster ein Control ist.
isCreated BOOL Ermittelt, ob dieses Fenster bereits mit 'create()' bzw 'createCtrl()' erstellt wurde.
isWindow BOOL Ermittelt ob das Fenster besteht.
isWindowEnabled BOOL Ermittelt ob das Fenster aktiv ist, d.h. ob es Eingaben erhalten kann.
loadBackgroundImage const SString& filename,
BOOL stretch=true
bool Lädt ein Hintergrundbild und zeigt es an.
messageBox const SString& text,
const SString& titel="Info",
UINT style=MB_ICONINFORMATION
int Zeigt eine MessageBox an.
messageHandler HWND hwndMsg,
UINT message,
WPARAM wParam,
LPARAM lParam,
BOOL noDefault=false,
LRESULT ret=0
LRESULT Der Message-Handler des Fensters.
move int left,
int top,
int width,
int height,
BOOL repaint
BOOL Verschiebt das Fenster und ändert seine Größe.
move SRect rect,
BOOL repaint=TRUE
BOOL Verschiebt das Fenster und ändert seine Größe.
print SDevice& device,
SPrintDok* pPrintDok,
int pageNumber=0
void
recalcLayout SSize parentsClientSize void Layout des Fensters neu berechnen
screenToClient SPoint& screenPoint SPoint Wandelt Screen-Koordinaten in Client-Koordinaten um.
sendMessage UINT msg,
WPARAM wparam,
LPARAM lparam
LRESULT Sendet eine Nachricht an dieses Fenster.
sendMessageToClients UINT message,
WPARAM wParam=0,
LPARAM lParam=0
void Sendet eine Message an alle Clients.
setCursor int cursorID=0 void Lädt einen Standard-Cursor. Der letzte Cursor wird gecache und nur wirklich geändert, wenn auch ein neuer Cursor-Wert gesetzt wurde.
setCursor HCURSOR hCursor void Lädt einen Eigenen-Cursor.
setFocus void das Fenster erhält den Focus
setParent SWindow* newParent void Legt das Elternfenster fest. Das Elternfenster und dieses Fenster müssen bereits erzeugt sein und ein hwnd besitzen.
setStyle int newStyle int Setzt den aktuellen Windows-Style.
setWaitCursor BOOL enable=true void Schaltet den Warten-Cursor (Sanduhr) ein/aus.
setWindowText const SString& text void Speichert einen neuen Titeltext.
show int nWindowStyle=SW_RESTORE void Zeigt ein Fenster an, das im Hintergrund liegt oder mit 'hide()' ausgeblendet wurde.
showModal BOOL hideParent=false int Zeigt das Fenster Modal an, d.h. es werden alle Eingaben zum Parent-Window unterbunden und erst nach dem Schließen des Fensters zurückgekehrt.
trackMouseEvent BOOL forLeave,
BOOL forHover=false
void Installiert die Mausüberwachung für das Verlassen des Clientbereiches und/oder Halten der Maus über dem Clientbereich.
translateAccelerator HWND hwndMsg,
UINT message,
WPARAM wParam,
LPARAM lParam
BOOL Verarbeitet KEY-Messages als Accelerator.
winProc HWND hwndMsg,
UINT message,
WPARAM wParam,
LPARAM lParam
LRESULT Leitet ankommende Windows-Messages an den Message-Handler weiter.

protected:

Name Parameter Rückgabewert Beschreibung
construct void Teil des Konstruktors
createWindow SWindow* parent BOOL Erstellt das Fenster.
doEventCalls HWND hwndMsg,
UINT message,
WPARAM wParam,
LPARAM lParam
void Verarbeitet die mit '_AddEventCall_...' zugeordneten Ereignisse eines Fensters.
onCapturedMessage HWND msgHwnd,
UINT msg,
WPARAM wParam,
LPARAM lParam,
void* pData
void Diese Funktion wird ausgelöst, wenn eine Nachrichten-Kopie erhalten wurde. Die übergebenen Parameter sind die Daten der Originalnachricht, pData ist der bei addCapturedMessage übergebene Wert.
onClose BOOL Behandlungsroutine für das Schließen-Ereignis.
onCommand WPARAM idItem,
HWND hwndCtrl,
WORD notifyCode
void Behandlungsroutine für das Empfangen einer Nachricht von einem Control.
onContextMenu int xpos, int ypos BOOL Wird durch Shift+F10 oder (sofern programmiert) durch die rechte Maustaste ausgelöst.
onCreate CREATESTRUCT* createInfo void Tritt ein, nach dem Erzeugen, aber bevor es sichtbar wird.
onEraseBackground SDevice& screen BOOL Wird aufgerufen, wenn während des Neuzeichnens der Hintergrund gelöscht wird.
onHelp LPHELPINFO pHelpInfo BOOL Dieses Ereignis wird ausgelöst, wenn F1 gedrückt wurde.
onHide void Dieses Ereignis wird beim horizontalen Scrollen des Fensters ausgelöst.
onInitWindow void Wird vor dem ersten Darstellen (WM_SHOWWINDOW) ausgelöst.
onKeyChar WORD ascii,
char scan,
int vkeyCode,
BOOL first
BOOL Wird beim Drücken oder Wiederholen (wegen langem Halten) einer Taste aufgerufen.
onKeyDown WORD ascii,
char scan,
int vkeyCode,
BOOL first
BOOL Wird beim drücken oder wiederholen (wegen langen halten) einer Taste aufgerufen.
onLButtonDblClick WORD keys,
int xpos,
int ypos
void Behandlungsroutine für den Doppelklick mit der linken Maustaste.
onLButtonDown WORD keys,
int xpos,
int ypos
void Behandlungsroutine für das Drücken der linken Maustaste.
onLButtonUp WORD keys,
int xpos,
int ypos
void Behandlungsroutine für das Loslassen der linken Maustaste.
onMouseHover int keys void Wird ausgelöst, wenn die Maus eine gewisse Zeit über den Clientbereich gehalten wird.
onMouseLeave void Wird ausgelöst, wenn die Maus den Clientbereich verlassen hat.
onMouseMove WORD keys, int x, int y void Wird ausgelöst, wenn die Maus über den Clientbereich bewegt wird.
onMouseWheel int pressedKeys,
int distance,
int screenX,
int screenY
BOOL Tritt ein wenn am Mausrad gedreht wurde.
onNotify int ctrlID,
HWND ctrlHwnd,
int notifyCode,
NMHDR* pNotifyInfo
LRESULT Wird ausgelöst, wenn ein Control das innerhalb dieses Fensters ist (=ein Child) eine Notify-Ereignis sendet.
onNotifyToolTip int notifyCode,
NMHDR * pNMHDR
LRESULT Wird vor dem Anzeigen und beim Schließen des ToolTipps gerufen.
onNotifyToolTip_needText char* Wird vor dem Anzeigen des ToolTipps gerufen um den Text eventuell neu festzulegen.
onPaint SDevice& screen void Behandlungsroutine für das Neuzeichnen des Fensters.
onPaintImages SDevice& screen void Behandlungsroutine für das Neuzeichnen des Hintergrundbildes.
onPreCreateWindow void Hier sollten die letzten Einstellung vor der Erzeugung des Fensters vorgenommen werden, wie z.B. Fenstertitel und Anfangsgröße.
onPrint SDevice& device,
SPrintDok* pPrintDok,
int pageNumber=0
void
onRButtonDblClick WORD keys,
int xpos,
int ypos
void Behandlungsroutine für den Doppelklick mit der rechten Maustaste.
onRButtonDown WORD keys,
int xpos,
int ypos
void Behandlungsroutine für das Drücken der rechten Maustaste.
onRButtonUp WORD keys,
int xpos,
int ypos
void Behandlungsroutine für das Loslassen der rechten Maustaste.
onScrollHor void Dieses Ereignis wird beim horizontalen Scrollen des Fensters ausgelöst.
onScrollVert void Dieses Ereignis wird beim vertikalen Scrollen des Fensters ausgelöst.
onSetFocus HWND oldFocusWindow void Wird ausgelöst, wenn das Fenster den Focus erhält.
onShow void Dieses Ereignis wird beim horizontalen Scrollen des Fensters ausgelöst.
onSize int type,
int clientWidth,
int clientHeight
void Behandlungsroutine für Größenänderungen des Fensters.
onSizing int type, RECT* pRect void Wird ausgelöst während der Größenänderung des Fensters.
onTimer DWORD curTime void Tritt alle 1/100 Sekunden ein.

Detailbeschreibung SWindow

Ein Fenster.


Diese Klasse dient als Basisklasse für alle sichtbaren Elemente in der SVL.
Die Erstellung eines Elements dieser Klasse erfolgt immer in zwei Schritten. Zuerst wird das Objekt selbst angelegt, als Member einer anderen Klasse oder bei Bedarf per Deklaration/new-Oberator erzeugt. Das Objektregistriert sich dabei im globalen Application-Objekt theApp. Die erste dort registrierte Instanz einer von SWindow abgeleiteten Klasse wird automatisch als Hauptfenster der Anwendung angesehen und beim Programmstart erstellt. Im zweiten Schritt werden die Anzeigeeigenschaften gesetzt, sofern sie sich von den Standardwerten unterscheiden. Zum Schluß wird das Fenster im Betriebssysten mit den gewählten Eigenschaften registriert, sodass es sichtbar wird.

Beispiel: ein Fenster erzeugen und anzeigen

Üblicherweise werden von SWindow abgeleitete Klassen benutzt. Zur Demonstration hier jedoch ein Beispiel, das SWindow direkt verwendet.

// Instanz erzeugen
SWindow optionen;
//Konfigurieren
optionen.wndStartText = "Optionen";
optionen.wndStartRect = SRect(100,100,300,500);
// Fenster im BS erzeugen
optionen.create(this);
// anzeigen
optionen.showModal();
Bei einer abgeleiteten Klasse sollten die Einstellungen, die das Fenster betreffen hier 'wndStartText' und 'wndStartRect' in der Memberfunktion 'onPreCreateWindow()' vorgenommen werden.

Funktionsbeschreibungen

addToolTip(const SString& tiptext, const SString& titel="", int icon=TT_NO_ICON, int maxWidth=200, BOOL ballonStyle=true) BOOL

Fügt dem Fenster ein Tooltipp hinzu.

Beispiel:

btnEnde.createCtrl(this,"Ende",-100,-30);
_AddEventCall_OnCommand(btnEnde.getID(),destroy)
SString txt = "Hier geht das ganze Fenster zu und ist dann weg. ";
txt *= "Es ist dann wirklich weg und geht auch nicht wieder allein auf.";
btnEnde.addToolTip(txt, "Der Button der das Ende der Anwendung bedeutet",TT_WARN_ICON);
oder:
btnEnde.createCtrl(this,"Ende",-100,-30);
_AddEventCall_OnCommand(btnEnde.getID(),destroy)
btnEnde.addToolTip("schließt die Anwendung");

Parameter:

tiptext darzustellender Text
titel optionaler Titel des Tipps
icon optional darzustellendes Icon
  • TT_NO_ICON = kein Icon
  • TT_INFO_ICON = Info-Icon
  • TT_WARN_ICON = Warn-Icon
  • TT_ERROR_ICON = Fehler-Icon
maxWidth maximale Breite in Pixeln, für Umbruch und Mehrzeiligkeit, wenn 0 wird keine Breite festgelegt und der Tooltip ist einzeilig

addToolTipWithTracking(const SString& tiptext, const SString& titel="", int icon=TT_NO_ICON, int maxWidth=200, BOOL ballonStyle=true) BOOL

Fügt dem Fenster ein Tooltipp hinzu, dass selbst an/ausgeschalten und positioniert wird.

Beispiel: Bsp:

////////////// onMouseMove /////////////////////
pToolTip->trackingShow(1);		// Anzeige einschalten
SPoint p=clientToScreen(SPoint(x,y));	
pToolTip->trackingMove(p);		// bewegen
pToolTip->setText("x="+SString::toString(x)+"\r\ny="+SString::toString(y));	// Text ändern
zum Ausschalten bei Verlassen des Clintbereiches sollte trackMouseEvent() und onMouseLeave() verwendet werden

Parameter:

tiptext darzustellender Text
titel optionaler Titel des Tipps
icon optional darzustellendes Icon
  • TT_NO_ICON = kein Icon
  • TT_INFO_ICON = Info-Icon
  • TT_WARN_ICON = Warn-Icon
  • TT_ERROR_ICON = Fehler-Icon
maxWidth maximale Breite in Pixeln, für Umbruch und Mehrzeiligkeit, wenn 0 wird keine Breite festgelegt und der Tooltip ist einzeilig

bringWindowToTop() void

Fenster wird ganz nach oben (vorn) gebracht.

clientToScreen(const SPoint& clientPoint) SPoint

Wandelt eine relative Koordinate des Fensters in eine absolute Bildschirmkoordinate um.

Parameter:

clientPoint relatve Koordinate

construct() void

Teil des Konstruktors

create(SWindow* parent) BOOL

erstellt das Fenster

Parameter:

parent Elternfenster; Container in dem sich das Fenster befindet

createMetaFile(SRectc rect, const SString& filename) HENHMETAFILE

Erzeugt ein MetaFile mit dem Fensterinhalt.

hmf muss mit DeleteEnhMetaFile(hmf) freigegeben werden.

Beispiel: bsp:

HENHMETAFILE hmf=createMetaFile(SRect(),"");		// in RAM
if ( hmf!=NULL && OpenClipboard(hwnd) )
{
  EmptyClipboard();
  SetClipboardData(CF_ENHMETAFILE,hmf);    //place it on the clipboard
  CloseClipboard();
}
DeleteEnhMetaFile(hmf);

Parameter:

rect Ausschnitt der exportiert werden soll, oder rect.height=0 bzw. rect.width=0 für alles
filename Dateiname (*.emf), wenn Leer wird es im RAM erzeugt

Rückgabe:

HENHMETAFILE NULL wenn Fehler
HENHMETAFILE oder bei Dateiname 0xFFFFFFFF
HENHMETAFILE oder Handle auf MetaFile (muss mit DeleteEnhMetaFile(hmf) freigegeben werden)

createWindow(SWindow* parent) BOOL

Erstellt das Fenster.

Kann überschrieben werden um eine eigene Erstellungsroutine zu verwenden.

Parameter:

parent Elternfenster; Container in dem sich das Fenster befindet

destroy() void

Schließt das Fenster.

Wenn onClose() false zurückliefert, wird das Schhließen verhindert.

disable(BOOL disable=true) BOOL

deaktiviert das Fenster

Parameter:

disable deaktivieren (wenn false -> fenster wird aktiviert)

Rückgabe:

BOOL Fenster war vorher deaktiviert

doEventCalls(HWND hwndMsg, UINT message, WPARAM wParam, LPARAM lParam) void

Verarbeitet die mit '_AddEventCall_...' zugeordneten Ereignisse eines Fensters.

Parameter:

hwndMsg Fenster-Handle des Fensters, das die Message erhalten soll.
message die Message(-nummer)
wParam 1. Messageparameter
lParam 2. Messageparameter

enable(BOOL enable=true) BOOL

Aktiviert das Fenster.

Parameter:

enable aktivieren (wenn false -> Fenster deaktivieren)

Rückgabe:

BOOL Fenster war vorher aktiviert

enableTimer(bool enable) void

Timer aktivieren

Parameter:

enable Timer soll aktiviert werden.

getClientRect() SRect

Liefert ein SRect mit der inneren Größe des Fensters in relativen Koordinaten zurück, also das Rechteck, in dem alle Inhalte des Fensters dargestellt werden.

Rückgabe:

SRect inneres Rechteck des Fensters

getClientSize() SSize

Rückgabe:

SSize Größe des Client-Bereichs des Fensters

getEffectiveClientRect() SRect

getEffectiveClientSize() SSize

getParent() SWindow*

Rückgabe:

SWindow* Zeiger auf das Elternfenster

getStyle() int

Gibt den aktuellen Windows-Style zurück.

getTextLength() int

Gibt die Textlänge des Fenstertextes zurück.

getWindowRect(BOOL absolute=false) SRect

Gibt die Position des Fensters relativ innerhalb des Client-Rect des Vaterfensters zurück.

Wenn kein Vaterfenster existiert wird die absolute Fensterposion zurückgegeben.

Parameter:

absolute true, gibt immer absolute Koordinaten zurück

getWindowText() SString

Rückgabe:

SString Titeltext des Fensters

hasFocus() BOOL

hide() void

Versteckt das Fenster, damit wird es nicht dargestellt und ist durch den Nutzer auch nicht erreichbar.

imageLoad(char* filename, int posx, int posy, bool visible) int

Rückgabe:

0 nicht geladen
>0 id des Images

invalidate(SRect rect) void

Teilt dem Betriebssysem mit, dass ein Bereich des Fensters ungültig ist. Das Betriebssystem wird diesen Bereich mit Hilfe der 'onPaint()'-Funktion neu zeichnen.

Parameter:

rect ungültiger, nue zu zeichnender Bereich in Screen-Koordinaten

invalidate() void

Teilt dem Betriebssysem mit, dass dieses Fenster ungültig ist. Das Betriebssystem wird das Fenster mit Hilfe der 'onPaint()'-Funktion neu zeichnen.

isControl() BOOL

Ermittelt, ob dieses Fenster ein Control ist.

isCreated() BOOL

Ermittelt, ob dieses Fenster bereits mit 'create()' bzw 'createCtrl()' erstellt wurde.

isWindow() BOOL

Ermittelt ob das Fenster besteht.

Das heißt es muss erfolgreich erzeugt und nicht geschlossen worden sein.

Rückgabe:

BOOL Fenster ist vorhanden

isWindowEnabled() BOOL

Ermittelt ob das Fenster aktiv ist, d.h. ob es Eingaben erhalten kann.

Rückgabe:

BOOL Fenster ist aktiv

loadBackgroundImage(const SString& filename, BOOL stretch=true) bool

Lädt ein Hintergrundbild und zeigt es an.

Parameter:

filename Dateiname des Bildes
stretch Soll das Bild an die Fenstergröße angepasst werden.

Rückgabe:

bool Laden erfolgreich.

messageBox(const SString& text, const SString& titel="Info", UINT style=MB_ICONINFORMATION) int

Zeigt eine MessageBox an.

Parameter:

text Inhalt der MessageBox
titel Text der Titelzeile
style gewünscht Schaltflächen und Icons
  • MB_ABORTRETRYIGNORE -> Abbrechen, Wiederholen, Ignorieren
  • MB_OK -> OK (Standard)
  • MB_OKCANCEL -> OK, Abbrechen
  • MB_RETRYCANCEL -> Wiederholen, Abbrechen
  • MB_YESNO -> Ja, Nein
  • MB_YESNOCANCEL -> Ja, Nein, Abbrechen
  • MB_ICONEXCLAMATION -> Achtung-Icon (Ausrufezeichen)
  • MB_ICONINFORMATION -> Informations-Icon ('i')
  • MB_ICONQUESTION -> Frage-Icon (Fragezeichen)
  • MB_ICONSTOP -> Stop-Icon (roter Kreis mit weißem 'x')

Rückgabe:

int der gedrückte Button
  • IDOK -> OK gedrückt
  • IDYES -> Ja gedrückt
  • IDNO -> Nein gedrückt
  • IDABORT -> Abbrechen gedrückt (bei MB_ABORTRETRYIGNORE)
  • IDCANCEL -> Abbrechen gedrückt (sonst)
  • IDIGNORE -> Ignorieren gedrückt
  • IDRETRY -> Wiederholen gedrückt

messageHandler(HWND hwndMsg, UINT message, WPARAM wParam, LPARAM lParam, BOOL noDefault=false, LRESULT ret=0) LRESULT

Der Message-Handler des Fensters.

Diese Funktion wird immer aufgerufen, wenn das Fenster eine Message vom Betriebssystem erhält. Hier wird entschieden auf welche Nachricht das Fenster wie reagieren soll.

Parameter:

hwndMsg Fenster-Handle des Fensters, das die Nachricht erhalten soll
message Nachrichtennummer
wParam Parameter der Nachricht
lParam Parameter der Nachricht
noDefault Windows-Standard-Nachrichtenbehandlung deaktivieren.

Rückgabe:

LRESULT abhänig von der übermittelten Nachricht

move(int left, int top, int width, int height,BOOL repaint) BOOL

Verschiebt das Fenster und ändert seine Größe.

Die Angaben beziehen sich relativ zum Elternfenster. Wenn es kein WS_CHILD ist, so sind die Angaben auf den Bildschirm bezogen.

Parameter:

left Abstand von Links
top Abstand von oben
width Breite
height Höhe
repaint Nach Verschieben neu zeichnen

move(SRect rect, BOOL repaint=TRUE) BOOL

Verschiebt das Fenster und ändert seine Größe.

Die Angaben beziehen sich relativ zum Elternfenster. Wenn es kein WS_CHILD ist, so sind die Angaben auf den Bildschirm bezogen.

Parameter:

rect Größe und Position
repaint Nach Verschieben neu zeichnen

onCapturedMessage(HWND msgHwnd, UINT msg, WPARAM wParam, LPARAM lParam, void* pData) void

Diese Funktion wird ausgelöst, wenn eine Nachrichten-Kopie erhalten wurde. Die übergebenen Parameter sind die Daten der Originalnachricht, pData ist der bei addCapturedMessage übergebene Wert.

onClose() BOOL

Behandlungsroutine für das Schließen-Ereignis.

Rückgabe:

BOOL true wenn das Fenster gschlossen werden darf, false wenn das Schließen nicht gestattet ist

onCommand(WPARAM idItem, HWND hwndCtrl, WORD notifyCode) void

Behandlungsroutine für das Empfangen einer Nachricht von einem Control.

Parameter:

idItem ID des sendende Controls
hwndCtrl Fenster-Handle des Controls
notifyCode Nachrichtennummer

onContextMenu(int xpos, int ypos) BOOL

Wird durch Shift+F10 oder (sofern programmiert) durch die rechte Maustaste ausgelöst.

Bei Shift+F10 sind die Koordianten -1.

Parameter:

xpos x-Position des Ereignisses in Bildschirm-Koordianten
ypos y-Position des Ereignisses in Bildschirm-Koordianten

Rückgabe:

BOOL true wenn behandelt

onCreate(CREATESTRUCT* createInfo) void

Tritt ein, nach dem Erzeugen, aber bevor es sichtbar wird.

onEraseBackground(SDevice& screen) BOOL

Wird aufgerufen, wenn während des Neuzeichnens der Hintergrund gelöscht wird.

Diese Funktion gibt normalerweise FALSE zurück. In diesem Fall verwaltet Windows selbstständig welcher Bereich des Hintergrundes gelöscht und neugezeichnet werden muss. Da die GDI-Funktionen nicht besonders leistungsfähig sind, kann dieses Vorgehen zu einem starken Flackern führen. Um dies zu vermeiden ist es möglich die Verwaltung des Hintergrundes zu übernehmen. Dabei sind optimierungen möglich, die das Flackern reduzieren. In diesem Fall muss die Funktion TRUE zurückgeben.
Wenn screen.noFlicker=true wird diese Funktion nicht aufgerufen.

Parameter:

screen aktuelles Bildschirm-Device des Fensters.

Rückgabe:

BOOL Der Hintergrund wird vom Programm selbst verwaltet.

onHelp(LPHELPINFO pHelpInfo) BOOL

Dieses Ereignis wird ausgelöst, wenn F1 gedrückt wurde.

Parameter:

pHelpInfo Zeiger auf Struktur mit weiteren Informationen

Rückgabe:

BOOL true wenn behandelt

onHide() void

Dieses Ereignis wird beim horizontalen Scrollen des Fensters ausgelöst.

onInitWindow() void

Wird vor dem ersten Darstellen (WM_SHOWWINDOW) ausgelöst.

onKeyChar(WORD ascii, char scan, int vkeyCode, BOOL first) BOOL

Wird beim Drücken oder Wiederholen (wegen langem Halten) einer Taste aufgerufen.

Parameter:

ascii ASCII-Code der Taste, wenn verfügbar
scan SCAN-Code der Taste, wenn verfügbar
vkeyCode virtual KeyCode, z.B. VK_ESC, VK_TAB, VK_1
first true, wenn die Taste erstmals gedrückt wird

Rückgabe:

BOOL true wenn bearbeitet, false wenn nicht bearbeitet

onKeyDown(WORD ascii, char scan, int vkeyCode, BOOL first) BOOL

Wird beim drücken oder wiederholen (wegen langen halten) einer Taste aufgerufen.

So können mehrfach onKeyDown(..) folgen bis ein onKeyUp(..) erfolgt.

Beispiel: Bsp:

BOOL isControl=GetKeyState(VK_CONTROL) & 0x80;
BOOL isShift=GetKeyState(VK_SHIFT) & 0x80;
//////// Taste Strg+F9 ////////
if(vkeyCode==VK_F9 && isControl)
{
  ......
}

Parameter:

ascii ASCII-Code der Taste, wenn verfügbar
scan SCAN-Code der Taste, wenn verfügbar
vkeyCode virtual KeyCode, z.B. VK_ESC, VK_TAB, VK_1
first true, wenn die Taste erstmals gedrückt wird

Rückgabe:

BOOL true wenn bearbeitet, false wenn nicht bearbeitet

onLButtonDblClick(WORD keys, int xpos, int ypos) void

Behandlungsroutine für den Doppelklick mit der linken Maustaste.

Parameter:

xpos Client-X-Koordinate des Ereignisses
ypos Client-Y-Koordinate des Ereignisses
keys Tastenstatus
  • MK_CONTROL Die Steuerungstaste ist gedrückt
  • MK_LBUTTON Die linke Maustaste ist gedrückt
  • MK_MBUTTON Die mittlere Maustaste ist gedrückt
  • MK_RBUTTON Die rechte Maustaste ist gedrückt
  • MK_SHIFT Die Umschalttaste ist gedrückt
  • MK_XBUTTON1 Windows 2000: Der erste Zusatz-Knopf ist gedrückt.
  • MK_XBUTTON2 Windows 2000: Der zweite Zusatz-Knopf ist gedrückt.

onLButtonDown(WORD keys, int xpos, int ypos) void

Behandlungsroutine für das Drücken der linken Maustaste.

Parameter:

xpos Client-X-Koordinate des Ereignisses
ypos Client-Y-Koordinate des Ereignisses
keys Tastenstatus
  • MK_CONTROL Die Steuerungstaste ist gedrückt
  • MK_LBUTTON Die linke Maustaste ist gedrückt
  • MK_MBUTTON Die mittlere Maustaste ist gedrückt
  • MK_RBUTTON Die rechte Maustaste ist gedrückt
  • MK_SHIFT Die Umschalttaste ist gedrückt
  • MK_XBUTTON1 Windows 2000: Der erste Zusatz-Knopf ist gedrückt.
  • MK_XBUTTON2 Windows 2000: Der zweite Zusatz-Knopf ist gedrückt.

onLButtonUp(WORD keys, int xpos, int ypos) void

Behandlungsroutine für das Loslassen der linken Maustaste.

Parameter:

xpos Client-X-Koordinate des Ereignisses
ypos Client-Y-Koordinate des Ereignisses
keys Tastenstatus
  • MK_CONTROL Die Steuerungstaste ist gedrückt
  • MK_LBUTTON Die linke Maustaste ist gedrückt
  • MK_MBUTTON Die mittlere Maustaste ist gedrückt
  • MK_RBUTTON Die rechte Maustaste ist gedrückt
  • MK_SHIFT Die Umschalttaste ist gedrückt
  • MK_XBUTTON1 Windows 2000: Der erste Zusatz-Knopf ist gedrückt.
  • MK_XBUTTON2 Windows 2000: Der zweite Zusatz-Knopf ist gedrückt.

onMouseHover(int keys) void

Wird ausgelöst, wenn die Maus eine gewisse Zeit über den Clientbereich gehalten wird.

siehe: trackMouseEvent(..)

Parameter:

keys eine Kombination von:
  • MK_CONTROL Die Steuerungstaste ist gedrückt
  • MK_LBUTTON Die linke Maustaste ist gedrückt
  • MK_MBUTTON Die mittlere Maustaste ist gedrückt
  • MK_RBUTTON Die rechte Maustaste ist gedrückt
  • MK_SHIFT Die Umschalttaste ist gedrückt
  • MK_XBUTTON1 Windows 2000: Der erste Zusatz-Knopf ist gedrückt.
  • MK_XBUTTON2 Windows 2000: Der zweite Zusatz-Knopf ist gedrückt.

onMouseLeave() void

Wird ausgelöst, wenn die Maus den Clientbereich verlassen hat.

siehe: trackMouseEvent(..)

onMouseMove(WORD keys, int x, int y) void

Wird ausgelöst, wenn die Maus über den Clientbereich bewegt wird.

Parameter:

x Client-X-Koordinate des Ereignisses
y Client-Y-Koordinate des Ereignisses
keys Tastenstatus
  • MK_CONTROL Die Steuerungstaste ist gedrückt
  • MK_LBUTTON Die linke Maustaste ist gedrückt
  • MK_MBUTTON Die mittlere Maustaste ist gedrückt
  • MK_RBUTTON Die rechte Maustaste ist gedrückt
  • MK_SHIFT Die Umschalttaste ist gedrückt
  • MK_XBUTTON1 Windows 2000: Der erste Zusatz-Knopf ist gedrückt.
  • MK_XBUTTON2 Windows 2000: Der zweite Zusatz-Knopf ist gedrückt.

onMouseWheel(int pressedKeys, int distance, int screenX, int screenY) BOOL

Tritt ein wenn am Mausrad gedreht wurde.

Parameter:

pressedKeys gedrückte Tasten, eine Kombination von
  • MK_CONTROL
  • MK_SHIFT
  • MK_LBUTTON
  • MK_MBUTTON
  • MK_RBUTTON
  • MK_XBUTTON1
  • MK_XBUTTON2
distance Richtung und Entfernung, positiv ist nach oben (weg vom Nutzer) und negativ nach unten (hin zum Nutzer), der Betrag ist die Entfernung
screenX X-Position auf dem Bildschirm, wo das Ereignis eintrat
screenY Y-Position auf dem Bildschirm, wo das Ereignis eintrat

Rückgabe:

BOOL true wenn behandelt

onNotify(int ctrlID, HWND ctrlHwnd, int notifyCode, NMHDR* pNotifyInfo) LRESULT

Wird ausgelöst, wenn ein Control das innerhalb dieses Fensters ist (=ein Child) eine Notify-Ereignis sendet.

Parameter:

ctrlID ID des Controls
ctrlHWND Fenster-Handle des Controls
notifyCode Nachrichtennummer
pNotifyInfo Zeiger auf den Notification Message Header der Nachricht

onNotifyToolTip(int notifyCode, NMHDR * pNMHDR) LRESULT

Wird vor dem Anzeigen und beim Schließen des ToolTipps gerufen.

Bei TTN_NEEDTEXT kann hier die Position festgelegt werden.

Parameter:

notifyCode wenn TTN_SHOW wird gleich der ToolTipp angezeigt, wenn TTN_POP wird der ToolTip geschlossen

Rückgabe:

LRESULT true bei TTN_SHOW bedeutet dass die Positionierung selbst mittels SetWindowPos(..) erfolgte.

onNotifyToolTip_needText() char*

Wird vor dem Anzeigen des ToolTipps gerufen um den Text eventuell neu festzulegen.

Mittels pToolTip->hide() kann eine Anzeige verhindert werden.

Beispiel: Bsp:

..onNotifyToolTip_needText()
{
  static SString tiptext;
  char* pTipText=NULL;
  // wenn kein Tip angezeigt werden soll
  if (noTip)
    pToolTip->hide();
  // wenn ein abweichender Text angezeigt werden soll
  else if ( !specialtext.isEmpty() )
  {
    tiptext=specialtext;
    pTipText=tiptext.getBuffer();
  }
  return pTipText;
}

Rückgabe:

char* NULL wenn kein Text geändert werden soll, sonst die Adresse der Textes.

onPaint(SDevice& screen) void

Behandlungsroutine für das Neuzeichnen des Fensters.

Parameter:

screen Device auf dem gezeichnet werden soll

onPaintImages(SDevice& screen) void

Behandlungsroutine für das Neuzeichnen des Hintergrundbildes.

Parameter:

screen Device auf dem gezeichnet werden soll

onPreCreateWindow() void

Hier sollten die letzten Einstellung vor der Erzeugung des Fensters vorgenommen werden, wie z.B. Fenstertitel und Anfangsgröße.

Wird in create(..) vor der Erzeugung des Fensters aufgerufen.

Beispiel:

wndStartText="Mein Programm mit SVL";
wndStartRect.width=500;
wndStartRect.height=500;
wndStartRect.left=10;
wndStartRect.top=10;

onPrint(SDevice& device, SPrintDok* pPrintDok, int pageNumber=0) void

onRButtonDblClick(WORD keys, int xpos, int ypos) void

Behandlungsroutine für den Doppelklick mit der rechten Maustaste.

Parameter:

xpos Client-X-Koordinate des Ereignisses
ypos Client-Y-Koordinate des Ereignisses
keys Tastenstatus
  • MK_CONTROL Die Steuerungstaste ist gedrückt
  • MK_LBUTTON Die linke Maustaste ist gedrückt
  • MK_MBUTTON Die mittlere Maustaste ist gedrückt
  • MK_RBUTTON Die rechte Maustaste ist gedrückt
  • MK_SHIFT Die Umschalttaste ist gedrückt
  • MK_XBUTTON1 Windows 2000: Der erste Zusatz-Knopf ist gedrückt.
  • MK_XBUTTON2 Windows 2000: Der zweite Zusatz-Knopf ist gedrückt.

onRButtonDown(WORD keys, int xpos, int ypos) void

Behandlungsroutine für das Drücken der rechten Maustaste.

Parameter:

xpos Client-X-Koordinate des Ereignisses
ypos Client-Y-Koordinate des Ereignisses
keys Tastenstatus
  • MK_CONTROL Die Steuerungstaste ist gedrückt
  • MK_LBUTTON Die linke Maustaste ist gedrückt
  • MK_MBUTTON Die mittlere Maustaste ist gedrückt
  • MK_RBUTTON Die rechte Maustaste ist gedrückt
  • MK_SHIFT Die Umschalttaste ist gedrückt
  • MK_XBUTTON1 Windows 2000: Der erste Zusatz-Knopf ist gedrückt.
  • MK_XBUTTON2 Windows 2000: Der zweite Zusatz-Knopf ist gedrückt.

onRButtonUp(WORD keys, int xpos, int ypos) void

Behandlungsroutine für das Loslassen der rechten Maustaste.

Parameter:

xpos Client-X-Koordinate des Ereignisses
ypos Client-Y-Koordinate des Ereignisses
keys Tastenstatus
  • MK_CONTROL Die Steuerungstaste ist gedrückt
  • MK_LBUTTON Die linke Maustaste ist gedrückt
  • MK_MBUTTON Die mittlere Maustaste ist gedrückt
  • MK_RBUTTON Die rechte Maustaste ist gedrückt
  • MK_SHIFT Die Umschalttaste ist gedrückt
  • MK_XBUTTON1 Windows 2000: Der erste Zusatz-Knopf ist gedrückt.
  • MK_XBUTTON2 Windows 2000: Der zweite Zusatz-Knopf ist gedrückt.

onScrollHor() void

Dieses Ereignis wird beim horizontalen Scrollen des Fensters ausgelöst.

onScrollVert() void

Dieses Ereignis wird beim vertikalen Scrollen des Fensters ausgelöst.

onSetFocus(HWND oldFocusWindow) void

Wird ausgelöst, wenn das Fenster den Focus erhält.

Parameter:

oldFocusWindow Fenster dass den Focus verloren hat, kann NULL sein

onShow() void

Dieses Ereignis wird beim horizontalen Scrollen des Fensters ausgelöst.

onSize(int type, int clientWidth, int clientHeight) void

Behandlungsroutine für Größenänderungen des Fensters.

Parameter:

type kann eines von folgenden sein:
  • SIZE_MAXHIDE ein anderes Fenster wurde minimiert.
  • SIZE_MAXIMIZED Das Fenster wurde maximiert.
  • SIZE_MAXSHOW ein anderes Fenster wurde wiederhergestellt.
  • SIZE_MINIMIZED Das Fenster wurde minimiert.
  • SIZE_RESTORED Größe des Fensters wurde verändert aber es wurde nicht maximiert oder minimiert.
clientWidth neue Client-Breite
clientHeight neuen Client-Höhe

onSizing(int type, RECT* pRect) void

Wird ausgelöst während der Größenänderung des Fensters.

Es kann in das RECT zurückgeschrieben werden.

Parameter:

type welcher Rand wird verändert, eins von:
  • WMSZ_BOTTOM unterer Rand
  • WMSZ_BOTTOMLEFT untere, linke Ecke
  • WMSZ_BOTTOMRIGHT untere, rechte Ecke
  • WMSZ_LEFT linker Rand
  • WMSZ_RIGHT rechter Rand
  • WMSZ_TOP oberer Rand
  • WMSZ_TOPLEFT obere, linke Ecke
  • WMSZ_TOPRIGHT obere, rechte Ecke
pRect Zeiger auf das aktuelle Rechteck mit den Screen-Koordinaten.

onTimer(DWORD curTime) void

Tritt alle 1/100 Sekunden ein.

Parameter:

curTime Anzahl der Millisekunden seit Start des Systems.

print(SDevice& device, SPrintDok* pPrintDok, int pageNumber=0) void

recalcLayout(SSize parentsClientSize) void

Layout des Fensters neu berechnen

Parameter:

parentsClientSize Größe des Elternfensters

screenToClient(SPoint& screenPoint) SPoint

Wandelt Screen-Koordinaten in Client-Koordinaten um.

Parameter:

screenPoint umzuwandelnder Punkt mit absoluten Koordinaten

Rückgabe:

SPoint Punkt in relativen Koordinaten, bei Fehler wird der übergebene Wert wieder zurückgeben.

sendMessage(UINT msg, WPARAM wparam, LPARAM lparam) LRESULT

Sendet eine Nachricht an dieses Fenster.

Parameter:

msg Nachrichtennummer
wparam Nachrichtenparameter
lparam Nachrichtenparameter

sendMessageToClients(UINT message, WPARAM wParam=0, LPARAM lParam=0) void

Sendet eine Message an alle Clients.

Parameter:

message Nachrichtennummer
wparam Nachrichtenparameter
lparam Nachrichtenparameter

setCursor(int cursorID=0) void

Lädt einen Standard-Cursor. Der letzte Cursor wird gecache und nur wirklich geändert, wenn auch ein neuer Cursor-Wert gesetzt wurde.

Parameter:

cursorID Null für setzen des letzten Cursors aus dem Cache, oder eine Konstante von:
  • OCR_APPSTARTING - Standard-Pfeil + Sanduhr
  • OCR_NORMAL - Standard-Pfeil
  • OCR_CROSS Fadenkreuz
  • OCR_HAND (ab Windows 2000) Hand
  • OCR_HELP Pfeil und Fragezeichen
  • OCR_IBEAM (I-beam )
  • OCR_NO Durchgestrichener Kreis
  • OCR_SIZEALL Pfeile: Nord, Süd, Ost, West
  • OCR_SIZENESW Pfeile: Nordost, Südwest
  • OCR_SIZENS Pfeile: Nord, Süd
  • OCR_SIZENWSE Pfeile: Nordwest, Südost
  • OCR_SIZEWE Pfeile: West, Ost
  • OCR_UPARROW senkrechter Pfeil
  • OCR_WAIT Sanduhr

setCursor(HCURSOR hCursor) void

Lädt einen Eigenen-Cursor.

Parameter:

hCursor Handle für einen Cursor, z.B. von LoadCursorFromFile(..)

setFocus() void

das Fenster erhält den Focus

setParent(SWindow* newParent) void

Legt das Elternfenster fest. Das Elternfenster und dieses Fenster müssen bereits erzeugt sein und ein hwnd besitzen.

Parameter:

newParent Zeiger auf das neue Elternfenster oder NULL wenn es das Desktop-Fenster sein soll.

setStyle(int newStyle) int

Setzt den aktuellen Windows-Style.

Parameter:

newStyle neuer Style

Rückgabe:

int bisheriger Style

setWaitCursor(BOOL enable=true) void

Schaltet den Warten-Cursor (Sanduhr) ein/aus.

Parameter:

enable wenn true wird der OCR_WAIT-Cursor gesetzt, sonst OCR_NORMAL

setWindowText(const SString& text) void

Speichert einen neuen Titeltext.

Parameter:

text neuer Text

show(int nWindowStyle=SW_RESTORE) void

Zeigt ein Fenster an, das im Hintergrund liegt oder mit 'hide()' ausgeblendet wurde.

Falls noch nicht erzeugt, wird der WS_VISIBLE in wndStyle für die Erzeugung des Fensters geschalten.

Parameter:

nWindowStyle wie soll das Fenster angezeigt werden,z.B.:
  • SW_SHOW -> wie zuletzt sichtbar
  • SW_RESTORE -> in seiner Standard-Größe
  • SW_MAXIMIZE -> maximiert
  • SW_MINIMIZE -> minimiert

showModal(BOOL hideParent=false) int

Zeigt das Fenster Modal an, d.h. es werden alle Eingaben zum Parent-Window unterbunden und erst nach dem Schließen des Fensters zurückgekehrt.

Parameter:

hideParent Elternfenster ausblenden

Rückgabe:

int Inhalt der Member 'modalExitCode', bei SDialog z.B. IDOK oder IDCANCEL

trackMouseEvent(BOOL forLeave, BOOL forHover=false) void

Installiert die Mausüberwachung für das Verlassen des Clientbereiches und/oder Halten der Maus über dem Clientbereich.

Diese Überwachung gilt nur bis zum Eintreten des Ergebnisses, danach muss es neu installiert werden.
Es wird onMouseLeave() bzw onMouseHover() ausgelöst.
Es ist auch möglich nur eines der beiden Ereignisse zu überwachen.

Parameter:

forLeave soll das Verlassen des Clientbereichs überwacht werden
forHover soll das Halten der Maus über dem Clientbereich überwacht werden

translateAccelerator(HWND hwndMsg, UINT message, WPARAM wParam, LPARAM lParam) BOOL

Verarbeitet KEY-Messages als Accelerator.

Rückgabe:

BOOL Taste wurde verarbeitet.

winProc(HWND hwndMsg, UINT message, WPARAM wParam, LPARAM lParam) LRESULT

Leitet ankommende Windows-Messages an den Message-Handler weiter.