All pastes #108333 Raw Edit

Someone

public text v1 · immutable
#108333 ·published 2006-07-31 13:00 UTC
rendered paste body
ULONG
WinProc(POBJECT hObject,
			ULONG uMsg,
			ULONG wParam,
			ULONG lParam)
{
ULONG Status = FALSE; // if msg is not handled by our winproc the let default handler do it
PUCHAR CommandBuffer, LogBuffer;

	switch(uMsg)
	{
	case MSG_KEYDOWN :
		if(lParam == CTRL)
			CTRLStatus = TRUE; // Set CtrlStatus as pressed
		else if(lParam == 'd')
			if(CTRLStatus) // if ctrl+d
			{
				Fired = !Fired; 
				HandleKbEvent = Fired; // keyboard event is handled only if gui is fired

				if(Fired)
					RefreshDisplay();

				Status = TRUE; // We don't want this event to be handled by object manager
			}
		if(Fired)// if gui is fired
		{
			switch(lParam) // let's go handle keycode
			{
			case ENTER :
				// log command
				LogBuffer = (PUCHAR)SendMessage(hLogEdit, MSG_GETTEXT, 0, 0);
				CommandBuffer = (PUCHAR)SendMessage(hCommandEdit, MSG_GETTEXT, 0, 0);
				
				strcat(LogBuffer, "\r\n");
				strcat(LogBuffer, CommandBuffer);
				
				SendMessage(hLogEdit, MSG_SCROLL_DOWN, 0, 10); // auto scroll

				SendMessage(hCommandEdit, MSG_SET_TEXT, 0, (ULONG)": ");

				// then process command...

				Status = TRUE;
				break;

			case F5 :
				// refresh
				RefreshDisplay();
				Status = TRUE;
				break;
			}
		}
		break;

	case MSG_KEYUP :	
		if(lParam == CTRL)
			CTRLStatus = FALSE; // Set CtrlStatus as released
		Status = TRUE;
	}

	if(!Fired)
		return TRUE; // If gui is not fired, no need to let object manager handle this message

	return Status; 
};