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;
};