post MSG_EXIN_END_CHANGES message

This commit is contained in:
Vincent Wei
2019-06-14 11:01:24 +08:00
parent d2e0559bdf
commit 9f60ba7138
4 changed files with 98 additions and 12 deletions

View File

@@ -1700,6 +1700,20 @@ extern DWORD __mg_interval_time;
*/
#define MSG_EXIN_GESTURE_PINCH_END 0x0085
/**
* \def MSG_EXIN_END_CHANGES
* \brief Indicates the end of one or more parameter changes
* of one hardware event.
*
* \code
* MSG_EXIN_END_CHANGES
* int count = (int)wParam;
* \endcode
*
* \param count The count of parameters changed.
*/
#define MSG_EXIN_END_CHANGES 0x008F
#define TABLET_TOOL_X 0
#define TABLET_TOOL_Y 1
#define TABLET_TOOL_PRESSURE 2
@@ -1726,7 +1740,12 @@ extern DWORD __mg_interval_time;
/**
* \def MSG_EXIN_TABLET_TOOL_AXIS
* \brief Indicates an axis has changed state.
* \brief Indicates an axis of the tablet tool has changed state.
*
* For a tablet tool, one or more axes may changed in one hardware event.
* MiniGUI will send one or more MSG_EXIN_TABLET_TOOL_XXX messages followed
* by a MSG_EXIN_END_CHANGES message to the current active window.
* Each MSG_EXIN_TABLET_TOOL_XXX message for a changed axis.
*
* \code
* MSG_EXIN_TABLET_TOOL_AXIS
@@ -1734,7 +1753,37 @@ extern DWORD __mg_interval_time;
* long value = (long)lParam;
* \endcode
*
* \param which The axis identifier, can be one of the following values:
* \param which The axis identifier, can be one of the following identifiers:
* - TABLET_TOOL_X:\n
* The value contains the current absolute x coordinate of
* the tablet tool, transformed to screen coordinates,
* but scaled 10 times.
* - TABLET_TOOL_Y:\n
* The value containsthe current absolute y coordinate of
* the tablet tool, transformed to screen coordinates,
* but scaled 10 times.
* - TABLET_TOOL_PRESSURE:\n
* The value contains the current pressure being applied on
* the tool in use, normalized to the range [0, 1000].
* - TABLET_TOOL_DISTANCE:\n
* The value contains the current distance from the tablet's sensor,
* normalized to the range [0, 1000].
* - TABLET_TOOL_TILT_X:\n
* The value contains the current tilt along the X axis of the
* tablet's current logical orientation, in 1/50 degrees off the
* tablet's z axis.
* - TABLET_TOOL_TILT_Y:\n
* The value contains the current tilt along the Y axis of the
* tablet's current logical orientation, in 1/50 degrees off the
* tablet's z axis.
* - TABLET_TOOL_ROTATION:\n
* The value contains the current z rotation of the tool in
* 1/50 degrees, clockwise from the tool's logical neutral position.
* - TABLET_TOOL_SLIDER:\n
* The value contains the current position of the slider on the tool,
* normalized to the range [-1000, 1000].
* - TABLET_TOOL_WHEEL:\n
* The value contains the delta for the wheel in 1/50 degrees.
* \param value The value of the axis.
*/
#define MSG_EXIN_TABLET_TOOL_AXIS 0x0090
@@ -1743,15 +1792,21 @@ extern DWORD __mg_interval_time;
* \def MSG_EXIN_TABLET_TOOL_PROXIMITY
* \brief Indicates that a tool has come in or out of proximity of the tablet.
*
* For a tablet tool, one or more axes may changed in one hardware event.
* MiniGUI will send one or more MSG_EXIN_TABLET_TOOL_XXX messages followed
* by a MSG_EXIN_END_CHANGES message to the current active window.
* Each MSG_EXIN_TABLET_TOOL_XXX message for a changed axis.
*
* \code
* MSG_EXIN_TABLET_TOOL_PROXIMITY
* int state = (int)LOSWORD(wParam);
* int which = (int)HISWORD(wParam);
* int which = (int)LOSWORD(wParam);
* int state = (int)HISWORD(wParam);
* long value = (long)lParam;
* \endcode
*
* \param state The proximity state, can be
* \param which The axis identifier, can be one of the following values:
* \param which The axis identifier, please see \sa MSG_EXIN_TABLET_TOOL_AXIS.
* \param state The proximity state, can be TABLET_TOOL_PROXIMITY_STATE_OUT
* or TABLET_TOOL_PROXIMITY_STATE_IN.
* \param value The value of the axis.
*/
#define MSG_EXIN_TABLET_TOOL_PROXIMITY 0x0091
@@ -1760,14 +1815,21 @@ extern DWORD __mg_interval_time;
* \def MSG_EXIN_TABLET_TOOL_TIP
* \brief Indicates that a tool has come in contact with the surface of the tablet.
*
* For a tablet tool, one or more axes may changed in one hardware event.
* MiniGUI will send one or more MSG_EXIN_TABLET_TOOL_XXX messages followed
* by a MSG_EXIN_END_CHANGES message to the current active window.
* Each MSG_EXIN_TABLET_TOOL_XXX message for a changed axis.
*
* \code
* MSG_EXIN_TABLET_TOOL_TIP
* int state = (int)LOSWORD(wParam);
* int which = (int)HISWORD(wParam);
* int which = (int)LOSWORD(wParam);
* int state = (int)HISWORD(wParam);
* long value = (long)lParam;
* \endcode
*
* \param which The axis identifier, can be one of the following values:
* \param which The axis identifier, please see \sa MSG_EXIN_TABLET_TOOL_AXIS.
* \param state The tip state, can be TABLET_TOOL_TIP_UP
* or TABLET_TOOL_TIP_DOWN.
* \param value The value of the axis.
*/
#define MSG_EXIN_TABLET_TOOL_TIP 0x0092

View File

@@ -207,14 +207,22 @@ static void* EventLoop (void* data)
msg.time = __mg_timer_counter;
if (extra.params_mask) {
// packed multiple sub events
int i;
int i, n = 0;
for (i = 0; i < NR_PACKED_SUB_EVENTS; i++) {
if (extra.params_mask & (1 << i)) {
msg.wParam = extra.wparams[i];
msg.lParam = extra.lparams[i];
QueueDeskMessage (&msg);
n++;
}
}
if (n > 0) {
msg.message = MSG_EXIN_END_CHANGES;
msg.wParam = n;
msg.lParam = 0;
QueueDeskMessage (&msg);
}
}
else {
QueueDeskMessage (&msg);

View File

@@ -419,14 +419,22 @@ BOOL server_IdleHandler4Server (PMSGQUEUE msg_queue)
msg.time = __mg_timer_counter;
if (extra.params_mask) {
// packed multiple sub events
int i;
int i, n = 0;
for (i = 0; i < NR_PACKED_SUB_EVENTS; i++) {
if (extra.params_mask & (1 << i)) {
msg.wParam = extra.wparams[i];
msg.lParam = extra.lparams[i];
kernel_QueueMessage (msg_queue, &msg);
n++;
}
}
if (n > 0) {
msg.message = MSG_EXIN_END_CHANGES;
msg.wParam = n;
msg.lParam = 0;
kernel_QueueMessage (msg_queue, &msg);
}
}
else {
kernel_QueueMessage (msg_queue, &msg);

View File

@@ -265,14 +265,22 @@ BOOL salone_IdleHandler4StandAlone (PMSGQUEUE msg_queue)
msg.time = __mg_timer_counter;
if (extra.params_mask) {
// packed multiple sub events
int i;
int i, n = 0;
for (i = 0; i < NR_PACKED_SUB_EVENTS; i++) {
if (extra.params_mask & (1 << i)) {
msg.wParam = extra.wparams[i];
msg.lParam = extra.lparams[i];
kernel_QueueMessage (msg_queue, &msg);
n++;
}
}
if (n > 0) {
msg.message = MSG_EXIN_END_CHANGES;
msg.wParam = n;
msg.lParam = 0;
kernel_QueueMessage (msg_queue, &msg);
}
}
else {
kernel_QueueMessage (msg_queue, &msg);