mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 09:25:10 +00:00
- Implement ReplyMessage and kernel support for InSendMessage and GetMessageTime.
svn path=/trunk/; revision=40820
This commit is contained in:
parent
b107dc759a
commit
9a36bd47a2
5 changed files with 33 additions and 10 deletions
|
@ -1071,6 +1071,7 @@ GetMessageTime(VOID)
|
|||
{
|
||||
PUSER32_THREAD_DATA ThreadData = User32GetThreadData();
|
||||
return(ThreadData->LastMessage.time);
|
||||
// return NtUserGetThreadState(THREADSTATE_GETMESSAGETIME);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1090,8 +1091,7 @@ InSendMessage(VOID)
|
|||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
/* return(NtUserGetThreadState(THREADSTATE_INSENDMESSAGE) != ISMEX_NOSEND);*/
|
||||
return(NtUserGetThreadState(THREADSTATE_INSENDMESSAGE) != ISMEX_NOSEND);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1105,23 +1105,22 @@ InSendMessageEx(
|
|||
{
|
||||
PCLIENTTHREADINFO pcti = GetWin32ClientInfo()->pClientThreadInfo;
|
||||
// FIXME("ISMEX %x\n",pcti);
|
||||
if (pcti && !(pcti->CTI_flags & CTI_INSENDMESSAGE)) return ISMEX_NOSEND;
|
||||
if (pcti && !(pcti->CTI_flags & CTI_INSENDMESSAGE))
|
||||
return ISMEX_NOSEND;
|
||||
else
|
||||
/* return NtUserGetThreadState(THREADSTATE_INSENDMESSAGE); */
|
||||
return 0;
|
||||
return NtUserGetThreadState(THREADSTATE_INSENDMESSAGE);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
ReplyMessage(
|
||||
LRESULT lResult)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
return NtUserCallOneParam(lResult, ONEPARAM_ROUTINE_REPLYMESSAGE);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1721,7 +1721,8 @@ enum ThreadStateRoutines
|
|||
THREADSTATE_ACTIVEWINDOW,
|
||||
THREADSTATE_CAPTUREWINDOW,
|
||||
THREADSTATE_PROGMANWINDOW,
|
||||
THREADSTATE_TASKMANWINDOW
|
||||
THREADSTATE_TASKMANWINDOW,
|
||||
THREADSTATE_GETMESSAGETIME
|
||||
};
|
||||
|
||||
DWORD
|
||||
|
|
|
@ -38,6 +38,7 @@ typedef struct _THREADINFO
|
|||
PDESKTOPINFO pDeskInfo;
|
||||
PCLIENTINFO pClientInfo;
|
||||
FLONG TIF_flags;
|
||||
LONG timeLast;
|
||||
HANDLE hDesktop;
|
||||
UINT cPaintsReady; /* Count of paints pending. */
|
||||
UINT cTimersReady; /* Count of timers pending. */
|
||||
|
|
|
@ -1359,7 +1359,7 @@ UserPostMessage(HWND Wnd,
|
|||
IntGetCursorLocation(pti->Desktop->WindowStation,
|
||||
&KernelModeMsg.pt);
|
||||
KeQueryTickCount(&LargeTickCount);
|
||||
KernelModeMsg.time = MsqCalculateMessageTime(&LargeTickCount);
|
||||
pti->timeLast = KernelModeMsg.time = MsqCalculateMessageTime(&LargeTickCount);
|
||||
MsqPostMessage(Window->MessageQueue, &KernelModeMsg,
|
||||
NULL != MsgMemoryEntry && 0 != KernelModeMsg.lParam,
|
||||
QS_POSTMESSAGE);
|
||||
|
|
|
@ -96,6 +96,28 @@ NtUserGetThreadState(
|
|||
RETURN( (DWORD)GetW32ThreadInfo()->pDeskInfo->hTaskManWindow);
|
||||
case THREADSTATE_ACTIVEWINDOW:
|
||||
RETURN ( (DWORD)UserGetActiveWindow());
|
||||
case THREADSTATE_INSENDMESSAGE:
|
||||
{
|
||||
DWORD Ret = ISMEX_NOSEND;
|
||||
PUSER_MESSAGE_QUEUE MessageQueue =
|
||||
((PTHREADINFO)PsGetCurrentThreadWin32Thread())->MessageQueue;
|
||||
DPRINT1("THREADSTATE_INSENDMESSAGE\n");
|
||||
|
||||
if (!IsListEmpty(&MessageQueue->SentMessagesListHead))
|
||||
{
|
||||
Ret = ISMEX_SEND;
|
||||
}
|
||||
else if (!IsListEmpty(&MessageQueue->NotifyMessagesListHead))
|
||||
{
|
||||
/* FIXME Need to set message flag when in callback mode with notify */
|
||||
Ret = ISMEX_NOTIFY;
|
||||
}
|
||||
/* FIXME Need to set message flag if replied to or ReplyMessage */
|
||||
RETURN( Ret);
|
||||
}
|
||||
case THREADSTATE_GETMESSAGETIME:
|
||||
/* FIXME Needs more work! */
|
||||
RETURN( ((PTHREADINFO)PsGetCurrentThreadWin32Thread())->timeLast);
|
||||
}
|
||||
RETURN( 0);
|
||||
|
||||
|
|
Loading…
Reference in a new issue