bhattaroshan
Member level 1
hi friends....
I have made simple keyboard controlled car.And the car can be controlled using arrow keys.I have used dev c++ to write the code.In The code i have also added four buttons to control the car.
I am able to control the car using both arrows keys and buttons. But once's i click any of the four buttons arrow keys does not work.
Here is my code.
LRESULT CALLBACK WinProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CREATE:
{
LoadUSBCom();
SetPortOutput(PORTC,255);
SetPortOutputState(PORTC,0xff);
CreateWindowExA(0,"button","^",WS_CHILD|WS_VISIBLE,100,100,50,50,hwnd,(HMENU)201,NULL,NULL);
CreateWindowExA(0,"button","<",WS_CHILD|WS_VISIBLE,50,150,50,50,hwnd,(HMENU)202,NULL,NULL);
CreateWindowExA(0,"button",">",WS_CHILD|WS_VISIBLE,150,150,50,50,hwnd,(HMENU)203,NULL,NULL);
CreateWindowExA(0,"button","\\/",WS_CHILD|WS_VISIBLE,100,200,50,50,hwnd,(HMENU)204,NULL,NULL);
CreateWindowExA(0,"button","reset",WS_CHILD|WS_VISIBLE,400,200,50,50,hwnd,(HMENU)205,NULL,NULL);
}
break;
case WM_KEYDOWN:
{
bool has=false;
SetPortOutputState(PORTC,0xff);
switch(wParam)
{
case VK_UP:
has=true;
SetPortOutputState(PORTC,0xfc);
Sleep(150);
break;
case VK_LEFT:
has=true;
SetPortOutputState(PORTC,0xfe);
Sleep(150);
break;
case VK_RIGHT:
has=true;
SetPortOutputState(PORTC,0xfd);
Sleep(150);
break;
case VK_DOWN:
has=true;
SetPortOutputState(PORTC,0xf3);
Sleep(150);
break;
}
if(has)
{
SetPortOutputState(PORTC,0xff);
}
}
break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case 201:
SetPortOutputState(PORTC,0xfc);
Sleep(200);
SetPortOutputState(PORTC,0xff);
break;
case 202:
SetPortOutputState(PORTC,0xfe);
Sleep(200);
SetPortOutputState(PORTC,0xff);
break;
case 203:
SetPortOutputState(PORTC,0xfd);
Sleep(200);
SetPortOutputState(PORTC,0xff);
break;
case 204:
SetPortOutputState(PORTC,0xf3);
Sleep(200);
SetPortOutputState(PORTC,0xff);
break;
case 205:
UnLoadUSBCom();
Sleep(200);
LoadUSBCom();
SetPortOutput(PORTC,255);
SetPortOutputState(PORTC,0xff);
break;
}
break;
case WM_DESTROY:
UnLoadUSBCom();
PostQuitMessage (0); /* send a WM_QUIT to the message queue */
break;
default: /* for messages that we don't deal with */
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
If any one knows please help me.
I have made simple keyboard controlled car.And the car can be controlled using arrow keys.I have used dev c++ to write the code.In The code i have also added four buttons to control the car.
I am able to control the car using both arrows keys and buttons. But once's i click any of the four buttons arrow keys does not work.
Here is my code.
LRESULT CALLBACK WinProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CREATE:
{
LoadUSBCom();
SetPortOutput(PORTC,255);
SetPortOutputState(PORTC,0xff);
CreateWindowExA(0,"button","^",WS_CHILD|WS_VISIBLE,100,100,50,50,hwnd,(HMENU)201,NULL,NULL);
CreateWindowExA(0,"button","<",WS_CHILD|WS_VISIBLE,50,150,50,50,hwnd,(HMENU)202,NULL,NULL);
CreateWindowExA(0,"button",">",WS_CHILD|WS_VISIBLE,150,150,50,50,hwnd,(HMENU)203,NULL,NULL);
CreateWindowExA(0,"button","\\/",WS_CHILD|WS_VISIBLE,100,200,50,50,hwnd,(HMENU)204,NULL,NULL);
CreateWindowExA(0,"button","reset",WS_CHILD|WS_VISIBLE,400,200,50,50,hwnd,(HMENU)205,NULL,NULL);
}
break;
case WM_KEYDOWN:
{
bool has=false;
SetPortOutputState(PORTC,0xff);
switch(wParam)
{
case VK_UP:
has=true;
SetPortOutputState(PORTC,0xfc);
Sleep(150);
break;
case VK_LEFT:
has=true;
SetPortOutputState(PORTC,0xfe);
Sleep(150);
break;
case VK_RIGHT:
has=true;
SetPortOutputState(PORTC,0xfd);
Sleep(150);
break;
case VK_DOWN:
has=true;
SetPortOutputState(PORTC,0xf3);
Sleep(150);
break;
}
if(has)
{
SetPortOutputState(PORTC,0xff);
}
}
break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case 201:
SetPortOutputState(PORTC,0xfc);
Sleep(200);
SetPortOutputState(PORTC,0xff);
break;
case 202:
SetPortOutputState(PORTC,0xfe);
Sleep(200);
SetPortOutputState(PORTC,0xff);
break;
case 203:
SetPortOutputState(PORTC,0xfd);
Sleep(200);
SetPortOutputState(PORTC,0xff);
break;
case 204:
SetPortOutputState(PORTC,0xf3);
Sleep(200);
SetPortOutputState(PORTC,0xff);
break;
case 205:
UnLoadUSBCom();
Sleep(200);
LoadUSBCom();
SetPortOutput(PORTC,255);
SetPortOutputState(PORTC,0xff);
break;
}
break;
case WM_DESTROY:
UnLoadUSBCom();
PostQuitMessage (0); /* send a WM_QUIT to the message queue */
break;
default: /* for messages that we don't deal with */
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
If any one knows please help me.