public abstract class Widget
extends java.lang.Object
IMPORTANT: This class is intended to be subclassed only within the SWT implementation. However, it has not been marked final to allow those outside of the SWT development team to implement patched versions of the class in order to get around specific limitations in advance of when those limitations can be addressed by the team. Any class built using subclassing to access the internals of this class will likely fail to compile or run between releases and may be strongly platform specific. Subclassing should not be attempted without an intimate and detailed understanding of the workings of the hierarchy. No support is provided for user-written classes which are implemented as subclasses of this class.
Modifier and Type | Field and Description |
---|---|
(package private) static int |
CANVAS |
(package private) java.lang.Object |
data |
(package private) static int |
DEFAULT_HEIGHT |
(package private) static int |
DEFAULT_WIDTH |
(package private) static int |
DISABLED |
(package private) Display |
display |
(package private) static int |
DISPOSE_SENT |
(package private) static int |
DISPOSED |
(package private) static int |
DRAG_DETECT |
(package private) static int |
DRAW_BACKGROUND |
(package private) EventTable |
eventTable |
(package private) static int |
FOREIGN_HANDLE |
(package private) static int |
HIDDEN |
(package private) static int |
IGNORE_WM_CHANGEUISTATE |
(package private) static int |
KEYED_DATA |
(package private) static int |
LAYOUT_CHANGED |
(package private) static int |
LAYOUT_CHILD |
(package private) static int |
LAYOUT_NEEDED |
(package private) static int |
MAJOR |
(package private) static int |
MINOR |
(package private) static int |
MOVE_DEFERRED |
(package private) static int |
MOVE_OCCURRED |
(package private) static int |
PARENT_BACKGROUND |
(package private) static int |
RELEASED |
(package private) static int |
RESIZE_DEFERRED |
(package private) static int |
RESIZE_OCCURRED |
(package private) static int |
SKIN_NEEDED |
(package private) int |
state |
(package private) int |
style |
(package private) static int |
THEME_BACKGROUND |
(package private) static int |
TRACK_MOUSE |
Constructor and Description |
---|
Widget()
Prevents uninitialized instances from being created outside the package.
|
Widget(Widget parent,
int style)
Constructs a new instance of this class given its parent
and a style value describing its behavior and appearance.
|
Modifier and Type | Method and Description |
---|---|
(package private) void |
_addListener(int eventType,
Listener listener) |
void |
addDisposeListener(DisposeListener listener)
Adds the listener to the collection of listeners who will
be notified when the widget is disposed.
|
void |
addListener(int eventType,
Listener listener)
Adds the listener to the collection of listeners who will
be notified when an event of the given type occurs.
|
(package private) int |
callWindowProc(int hwnd,
int msg,
int wParam,
int lParam) |
(package private) static int |
checkBits(int style,
int int0,
int int1,
int int2,
int int3,
int int4,
int int5)
Returns a style with exactly one style bit set out of
the specified set of exclusive style bits.
|
(package private) void |
checkOpened() |
(package private) void |
checkOrientation(Widget parent) |
(package private) void |
checkParent(Widget parent)
Throws an exception if the specified widget can not be
used as a parent for the receiver.
|
protected void |
checkSubclass()
Checks that this class can be subclassed.
|
protected void |
checkWidget()
Throws an
SWTException if the receiver can not
be accessed by the caller. |
(package private) int |
DeferWindowPos(int hWinPosInfo,
int hWnd,
int hWndInsertAfter,
int X,
int Y,
int cx,
int cy,
int uFlags) |
(package private) void |
destroyWidget()
Destroys the widget in the operating system and releases
the widget's handle.
|
void |
dispose()
Disposes of the operating system resources associated with
the receiver and all its descendants.
|
(package private) boolean |
dragDetect(int hwnd,
int x,
int y,
boolean filter,
boolean[] detect,
boolean[] consume) |
(package private) void |
error(int code)
Does whatever widget specific cleanup is required, and then
uses the code in
SWTError.error to handle the error. |
(package private) boolean |
filters(int eventType) |
(package private) Widget |
findItem(int id) |
(package private) char[] |
fixMnemonic(java.lang.String string) |
(package private) char[] |
fixMnemonic(java.lang.String string,
boolean spaces) |
java.lang.Object |
getData()
Returns the application defined widget data associated
with the receiver, or null if it has not been set.
|
java.lang.Object |
getData(java.lang.String key)
Returns the application defined property of the receiver
with the specified name, or null if it has not been set.
|
Display |
getDisplay()
Returns the
Display that is associated with
the receiver. |
Listener[] |
getListeners(int eventType)
Returns an array of listeners who will be notified when an event
of the given type occurs.
|
(package private) Menu |
getMenu() |
(package private) java.lang.String |
getName()
Returns the name of the widget.
|
(package private) java.lang.String |
getNameText() |
int |
getStyle()
Returns the receiver's style information.
|
(package private) boolean |
hooks(int eventType) |
boolean |
isDisposed()
Returns
true if the widget has been disposed,
and false otherwise. |
boolean |
isListening(int eventType)
Returns
true if there are any listeners
for the specified event type associated with the receiver,
and false otherwise. |
(package private) boolean |
isValidSubclass() |
(package private) boolean |
isValidThread() |
(package private) void |
mapEvent(int hwnd,
Event event) |
(package private) GC |
new_GC(GCData data) |
void |
notifyListeners(int eventType,
Event event)
Notifies all of the receiver's listeners for events
of the given type that one such event has occurred by
invoking their
handleEvent() method. |
(package private) void |
postEvent(int eventType) |
(package private) void |
postEvent(int eventType,
Event event) |
(package private) void |
release(boolean destroy) |
(package private) void |
releaseChildren(boolean destroy) |
(package private) void |
releaseHandle() |
(package private) void |
releaseParent() |
(package private) void |
releaseWidget() |
void |
removeDisposeListener(DisposeListener listener)
Removes the listener from the collection of listeners who will
be notified when the widget is disposed.
|
void |
removeListener(int eventType,
Listener listener)
Removes the listener from the collection of listeners who will
be notified when an event of the given type occurs.
|
protected void |
removeListener(int eventType,
SWTEventListener listener)
Removes the listener from the collection of listeners who will
be notified when an event of the given type occurs.
|
void |
reskin(int flags)
Marks the widget to be skinned.
|
(package private) void |
reskinChildren(int flags) |
(package private) void |
reskinWidget() |
(package private) boolean |
sendDragEvent(int button,
int x,
int y) |
(package private) boolean |
sendDragEvent(int button,
int stateMask,
int x,
int y) |
(package private) void |
sendEvent(Event event) |
(package private) void |
sendEvent(int eventType) |
(package private) void |
sendEvent(int eventType,
Event event) |
(package private) void |
sendEvent(int eventType,
Event event,
boolean send) |
(package private) boolean |
sendFocusEvent(int type) |
(package private) boolean |
sendKeyEvent(int type,
int msg,
int wParam,
int lParam) |
(package private) boolean |
sendKeyEvent(int type,
int msg,
int wParam,
int lParam,
Event event) |
(package private) boolean |
sendMouseEvent(int type,
int button,
int count,
int detail,
boolean send,
int hwnd,
int msg,
int wParam,
int lParam) |
(package private) boolean |
sendMouseEvent(int type,
int button,
int hwnd,
int msg,
int wParam,
int lParam) |
(package private) boolean |
sendMouseWheelEvent(int type,
int hwnd,
int wParam,
int lParam) |
(package private) void |
sendSelectionEvent(int type) |
(package private) void |
sendSelectionEvent(int type,
Event event,
boolean send) |
void |
setData(java.lang.Object data)
Sets the application defined widget data associated
with the receiver to be the argument.
|
void |
setData(java.lang.String key,
java.lang.Object value)
Sets the application defined property of the receiver
with the specified name to the given value.
|
(package private) boolean |
setInputState(Event event,
int type) |
(package private) boolean |
setKeyState(Event event,
int type,
int wParam,
int lParam) |
(package private) int |
setLocationMask(Event event,
int type,
int wParam,
int lParam) |
(package private) boolean |
setTabGroupFocus() |
(package private) boolean |
setTabItemFocus() |
(package private) boolean |
SetWindowPos(int hWnd,
int hWndInsertAfter,
int X,
int Y,
int cx,
int cy,
int uFlags) |
(package private) boolean |
showMenu(int x,
int y) |
(package private) boolean |
showMenu(int x,
int y,
int detail) |
java.lang.String |
toString()
Returns a string containing a concise, human-readable
description of the receiver.
|
(package private) void |
updateMenuLocation(Event event) |
(package private) LRESULT |
wmCaptureChanged(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmChar(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmContextMenu(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmIMEChar(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmKeyDown(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmKeyUp(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmKillFocus(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmLButtonDblClk(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmLButtonDown(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmLButtonUp(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmMButtonDblClk(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmMButtonDown(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmMButtonUp(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmMouseHover(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmMouseHWheel(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmMouseLeave(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmMouseMove(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmMouseWheel(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmNCPaint(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmPaint(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmPrint(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmRButtonDblClk(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmRButtonDown(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmRButtonUp(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmSetFocus(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmSysChar(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmSysKeyDown(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmSysKeyUp(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmXButtonDblClk(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmXButtonDown(int hwnd,
int wParam,
int lParam) |
(package private) LRESULT |
wmXButtonUp(int hwnd,
int wParam,
int lParam) |
int style
int state
Display display
EventTable eventTable
java.lang.Object data
static final int DISPOSED
static final int CANVAS
static final int KEYED_DATA
static final int DISABLED
static final int HIDDEN
static final int LAYOUT_NEEDED
static final int LAYOUT_CHANGED
static final int LAYOUT_CHILD
static final int THEME_BACKGROUND
static final int DRAW_BACKGROUND
static final int PARENT_BACKGROUND
static final int RELEASED
static final int DISPOSE_SENT
static final int TRACK_MOUSE
static final int FOREIGN_HANDLE
static final int DRAG_DETECT
static final int MOVE_OCCURRED
static final int MOVE_DEFERRED
static final int RESIZE_OCCURRED
static final int RESIZE_DEFERRED
static final int IGNORE_WM_CHANGEUISTATE
static final int SKIN_NEEDED
static final int DEFAULT_WIDTH
static final int DEFAULT_HEIGHT
static final int MAJOR
static final int MINOR
Widget()
public Widget(Widget parent, int style)
The style value is either one of the style constants defined in
class SWT
which is applicable to instances of this
class, or must be built by bitwise OR'ing together
(that is, using the int
"|" operator) two or more
of those SWT
style constants. The class description
lists the style constants that are applicable to the class.
Style bits are also inherited from superclasses.
parent
- a widget which will be the parent of the new instance (cannot be null)style
- the style of widget to constructjava.lang.IllegalArgumentException
- SWTException
- SWT
,
checkSubclass()
,
getStyle()
void _addListener(int eventType, Listener listener)
public void addListener(int eventType, Listener listener)
handleEvent()
message. The event
type is one of the event constants defined in class SWT
.eventType
- the type of event to listen forlistener
- the listener which should be notified when the event occursjava.lang.IllegalArgumentException
- SWTException
- Listener
,
SWT
,
getListeners(int)
,
removeListener(int, Listener)
,
notifyListeners(int, org.eclipse.swt.widgets.Event)
public void addDisposeListener(DisposeListener listener)
widgetDisposed()
message.listener
- the listener which should be notified when the receiver is disposedjava.lang.IllegalArgumentException
- SWTException
- DisposeListener
,
removeDisposeListener(org.eclipse.swt.events.DisposeListener)
int callWindowProc(int hwnd, int msg, int wParam, int lParam)
static int checkBits(int style, int int0, int int1, int int2, int int3, int int4, int int5)
style
- the original style bitsint0
- the 0th possible style bitint1
- the 1st possible style bitint2
- the 2nd possible style bitint3
- the 3rd possible style bitint4
- the 4th possible style bitint5
- the 5th possible style bitvoid checkOrientation(Widget parent)
void checkOpened()
void checkParent(Widget parent)
java.lang.IllegalArgumentException
- SWTException
- protected void checkSubclass()
The SWT class library is intended to be subclassed
only at specific, controlled points (most notably,
Composite
and Canvas
when
implementing new widgets). This method enforces this
rule unless it is overridden.
IMPORTANT: By providing an implementation of this method that allows a subclass of a class which does not normally allow subclassing to be created, the implementer agrees to be fully responsible for the fact that any such subclass will likely fail between SWT releases and will be strongly platform specific. No support is provided for user-written classes which are implemented in this fashion.
The ability to subclass outside of the allowed SWT classes is intended purely to enable those not on the SWT development team to implement patches in order to get around specific limitations in advance of when those limitations can be addressed by the team. Subclassing should not be attempted without an intimate and detailed understanding of the hierarchy.
SWTException
- protected void checkWidget()
SWTException
if the receiver can not
be accessed by the caller. This may include both checks on
the state of the receiver and more generally on the entire
execution context. This method should be called by
widget implementors to enforce the standard SWT invariants.
Currently, it is an error to invoke any method (other than
isDisposed()
) on a widget that has had its
dispose()
method called. It is also an error
to call widget methods from any thread that is different
from the thread that created the widget.
In future releases of SWT, there may be more or fewer error checks and exceptions may be thrown for different reasons.
SWTException
- void destroyWidget()
When a widget is destroyed in the operating system, its
descendants are also destroyed by the operating system.
This means that it is only necessary to call destroyWidget
on the root of the widget tree.
This method is called after releaseWidget()
.
See also releaseChild()
, releaseWidget()
and releaseHandle()
.
dispose()
int DeferWindowPos(int hWinPosInfo, int hWnd, int hWndInsertAfter, int X, int Y, int cx, int cy, int uFlags)
public void dispose()
true
when sent the message isDisposed()
.
Any internal connections between the widgets in the tree will
have been removed to facilitate garbage collection.
This method does nothing if the widget is already disposed.
NOTE: This method is not called recursively on the descendants
of the receiver. This means that, widget implementers can not
detect when a widget is being disposed of by re-implementing
this method, but should instead listen for the Dispose
event.
SWTException
- addDisposeListener(org.eclipse.swt.events.DisposeListener)
,
removeDisposeListener(org.eclipse.swt.events.DisposeListener)
,
checkWidget()
boolean dragDetect(int hwnd, int x, int y, boolean filter, boolean[] detect, boolean[] consume)
void error(int code)
SWTError.error
to handle the error.code
- the descriptive error codeSWT.error(int)
boolean filters(int eventType)
Widget findItem(int id)
char[] fixMnemonic(java.lang.String string)
char[] fixMnemonic(java.lang.String string, boolean spaces)
public java.lang.Object getData()
Applications may put arbitrary objects in this field. If the object stored in the widget data needs to be notified when the widget is disposed of, it is the application's responsibility to hook the Dispose event on the widget and do so.
SWTException
- setData(Object)
public java.lang.Object getData(java.lang.String key)
Applications may have associated arbitrary objects with the receiver in this fashion. If the objects stored in the properties need to be notified when the widget is disposed of, it is the application's responsibility to hook the Dispose event on the widget and do so.
key
- the name of the propertyjava.lang.IllegalArgumentException
- SWTException
- setData(String, Object)
public Display getDisplay()
Display
that is associated with
the receiver.
A widget's display is either provided when it is created
(for example, top level Shell
s) or is the
same as its parent's display.
SWTException
- public Listener[] getListeners(int eventType)
SWT
.eventType
- the type of event to listen forSWTException
- Listener
,
SWT
,
addListener(int, Listener)
,
removeListener(int, Listener)
,
notifyListeners(int, org.eclipse.swt.widgets.Event)
Menu getMenu()
java.lang.String getName()
java.lang.String getNameText()
public int getStyle()
Note that the value which is returned by this method may
not match the value which was provided to the constructor
when the receiver was created. This can occur when the underlying
operating system does not support a particular combination of
requested styles. For example, if the platform widget used to
implement a particular SWT widget always has scroll bars, the
result of calling this method would always have the
SWT.H_SCROLL
and SWT.V_SCROLL
bits set.
SWTException
- boolean hooks(int eventType)
public boolean isDisposed()
true
if the widget has been disposed,
and false
otherwise.
This method gets the dispose state for the widget.
When a widget has been disposed, it is an error to
invoke any other method (except dispose()
) using the widget.
true
when the widget is disposed and false
otherwisepublic boolean isListening(int eventType)
true
if there are any listeners
for the specified event type associated with the receiver,
and false
otherwise. The event type is one of
the event constants defined in class SWT
.eventType
- the type of eventSWTException
- SWT
boolean isValidSubclass()
boolean isValidThread()
void mapEvent(int hwnd, Event event)
public void notifyListeners(int eventType, Event event)
handleEvent()
method. The
event type is one of the event constants defined in class
SWT
.eventType
- the type of event which has occurredevent
- the event dataSWTException
- SWT
,
addListener(int, org.eclipse.swt.widgets.Listener)
,
getListeners(int)
,
removeListener(int, Listener)
void postEvent(int eventType)
void postEvent(int eventType, Event event)
void release(boolean destroy)
void releaseChildren(boolean destroy)
void releaseHandle()
void releaseParent()
void releaseWidget()
public void removeListener(int eventType, Listener listener)
SWT
.eventType
- the type of event to listen forlistener
- the listener which should no longer be notifiedjava.lang.IllegalArgumentException
- SWTException
- Listener
,
SWT
,
addListener(int, org.eclipse.swt.widgets.Listener)
,
getListeners(int)
,
notifyListeners(int, org.eclipse.swt.widgets.Event)
protected void removeListener(int eventType, SWTEventListener listener)
IMPORTANT: This method is not part of the SWT public API. It is marked public only so that it can be shared within the packages provided by SWT. It should never be referenced from application code.
eventType
- the type of event to listen forlistener
- the listener which should no longer be notifiedjava.lang.IllegalArgumentException
- SWTException
- Listener
,
addListener(int, org.eclipse.swt.widgets.Listener)
public void removeDisposeListener(DisposeListener listener)
listener
- the listener which should no longer be notifiedjava.lang.IllegalArgumentException
- SWTException
- DisposeListener
,
addDisposeListener(org.eclipse.swt.events.DisposeListener)
public void reskin(int flags)
The skin event is sent to the receiver's display when appropriate (usually before the next event
is handled). Widgets are automatically marked for skinning upon creation as well as when its skin
id or class changes. The skin id and/or class can be changed by calling Display.setData(String, Object)
with the keys SWT.SKIN_ID and/or SWT.SKIN_CLASS. Once the skin event is sent to a widget, it
will not be sent again unless reskin(int)
is called on the widget or on an ancestor
while specifying the SWT.ALL
flag.
The parameter flags
may be either:
flags
- the flags specifying how to reskinSWTException
- void reskinChildren(int flags)
void reskinWidget()
boolean sendDragEvent(int button, int x, int y)
boolean sendDragEvent(int button, int stateMask, int x, int y)
void sendEvent(Event event)
void sendEvent(int eventType)
void sendEvent(int eventType, Event event)
void sendEvent(int eventType, Event event, boolean send)
void sendSelectionEvent(int type)
void sendSelectionEvent(int type, Event event, boolean send)
boolean sendKeyEvent(int type, int msg, int wParam, int lParam)
boolean sendKeyEvent(int type, int msg, int wParam, int lParam, Event event)
boolean sendMouseEvent(int type, int button, int hwnd, int msg, int wParam, int lParam)
boolean sendMouseEvent(int type, int button, int count, int detail, boolean send, int hwnd, int msg, int wParam, int lParam)
boolean sendMouseWheelEvent(int type, int hwnd, int wParam, int lParam)
public void setData(java.lang.Object data)
Applications may put arbitrary objects in this field. If the object stored in the widget data needs to be notified when the widget is disposed of, it is the application's responsibility to hook the Dispose event on the widget and do so.
data
- the widget dataSWTException
- getData()
public void setData(java.lang.String key, java.lang.Object value)
Applications may associate arbitrary objects with the receiver in this fashion. If the objects stored in the properties need to be notified when the widget is disposed of, it is the application's responsibility to hook the Dispose event on the widget and do so.
key
- the name of the propertyvalue
- the new value for the propertyjava.lang.IllegalArgumentException
- SWTException
- getData(String)
boolean sendFocusEvent(int type)
boolean setInputState(Event event, int type)
boolean setKeyState(Event event, int type, int wParam, int lParam)
int setLocationMask(Event event, int type, int wParam, int lParam)
boolean setTabGroupFocus()
boolean setTabItemFocus()
boolean SetWindowPos(int hWnd, int hWndInsertAfter, int X, int Y, int cx, int cy, int uFlags)
boolean showMenu(int x, int y)
boolean showMenu(int x, int y, int detail)
public java.lang.String toString()
toString
in class java.lang.Object
void updateMenuLocation(Event event)
LRESULT wmCaptureChanged(int hwnd, int wParam, int lParam)
LRESULT wmChar(int hwnd, int wParam, int lParam)
LRESULT wmContextMenu(int hwnd, int wParam, int lParam)
LRESULT wmIMEChar(int hwnd, int wParam, int lParam)
LRESULT wmKeyDown(int hwnd, int wParam, int lParam)
LRESULT wmKeyUp(int hwnd, int wParam, int lParam)
LRESULT wmKillFocus(int hwnd, int wParam, int lParam)
LRESULT wmLButtonDblClk(int hwnd, int wParam, int lParam)
LRESULT wmLButtonDown(int hwnd, int wParam, int lParam)
LRESULT wmLButtonUp(int hwnd, int wParam, int lParam)
LRESULT wmMButtonDblClk(int hwnd, int wParam, int lParam)
LRESULT wmMButtonDown(int hwnd, int wParam, int lParam)
LRESULT wmMButtonUp(int hwnd, int wParam, int lParam)
LRESULT wmMouseHover(int hwnd, int wParam, int lParam)
LRESULT wmMouseLeave(int hwnd, int wParam, int lParam)
LRESULT wmMouseMove(int hwnd, int wParam, int lParam)
LRESULT wmMouseWheel(int hwnd, int wParam, int lParam)
LRESULT wmMouseHWheel(int hwnd, int wParam, int lParam)
LRESULT wmNCPaint(int hwnd, int wParam, int lParam)
LRESULT wmPaint(int hwnd, int wParam, int lParam)
LRESULT wmPrint(int hwnd, int wParam, int lParam)
LRESULT wmRButtonDblClk(int hwnd, int wParam, int lParam)
LRESULT wmRButtonDown(int hwnd, int wParam, int lParam)
LRESULT wmRButtonUp(int hwnd, int wParam, int lParam)
LRESULT wmSetFocus(int hwnd, int wParam, int lParam)
LRESULT wmSysChar(int hwnd, int wParam, int lParam)
LRESULT wmSysKeyDown(int hwnd, int wParam, int lParam)
LRESULT wmSysKeyUp(int hwnd, int wParam, int lParam)
LRESULT wmXButtonDblClk(int hwnd, int wParam, int lParam)
LRESULT wmXButtonDown(int hwnd, int wParam, int lParam)
LRESULT wmXButtonUp(int hwnd, int wParam, int lParam)