这样写有什么好处啊?我和其它的人都认为直接用虚拟键就可以了.下面全是自定义的,思想就是拿最位
与其他的变量来作与或操作从而判断按键是否被按下#define KEY_POWER_MASK 0x01//'P'
#define KEY_HOLD_MASK 0x02//'H'
#define KEY_VOLUP_MASK 0x04//'M'
#define KEY_VOLDOWN_MASK 0x08//'N'
#define KEY_TOOL_MASK 0x10//'T'
#define KEY_LEFT_MASK 0x20//'<'left
#define KEY_RIGHT_MASK 0x40//'>'right
#define KEY_UP_MASK 0x80//'^'up
unsigned int g_key_mask;//整个程序全局变量static void keyProc( int key_code, BOOL pressed )
{
int mask = 0;
//键盘按键设定
switch ( key_code )
{
case VK_LEFT:
mask = KEY_LEFT_MASK;
break;
case VK_RIGHT:
mask = KEY_RIGHT_MASK;
break;
case VK_UP:
mask = KEY_UP_MASK;
break;
case VK_DOWN:
mask = KEY_DOWN_MASK;
break;
case 'P':
mask=KEY_POWER_MASK;
break;
case 'H':
mask=KEY_HOLD_MASK;
break;
case 'T': mask=KEY_TOOL_MASK;
break;
case 'E':
mask=KEY_ENTER_MASK;
break;
case 'R':
mask=KEY_RETUEN_MASK;
break;
case 'M':
mask=KEY_VOLUP_MASK;
break;
case 'N':
mask=KEY_VOLDOWN_MASK;
break;
case VK_SPACE:
// mask=TEST_SPACE_MASK;
break;
} if ( mask != 0 ) {
if ( pressed )
g_key_mask |= mask;
else
g_key_mask &= ~mask;
} return;
}//触发Left按键
if(g_key_mask&KEY_LEFT_MASK)
{
.......
}
与其他的变量来作与或操作从而判断按键是否被按下#define KEY_POWER_MASK 0x01//'P'
#define KEY_HOLD_MASK 0x02//'H'
#define KEY_VOLUP_MASK 0x04//'M'
#define KEY_VOLDOWN_MASK 0x08//'N'
#define KEY_TOOL_MASK 0x10//'T'
#define KEY_LEFT_MASK 0x20//'<'left
#define KEY_RIGHT_MASK 0x40//'>'right
#define KEY_UP_MASK 0x80//'^'up
unsigned int g_key_mask;//整个程序全局变量static void keyProc( int key_code, BOOL pressed )
{
int mask = 0;
//键盘按键设定
switch ( key_code )
{
case VK_LEFT:
mask = KEY_LEFT_MASK;
break;
case VK_RIGHT:
mask = KEY_RIGHT_MASK;
break;
case VK_UP:
mask = KEY_UP_MASK;
break;
case VK_DOWN:
mask = KEY_DOWN_MASK;
break;
case 'P':
mask=KEY_POWER_MASK;
break;
case 'H':
mask=KEY_HOLD_MASK;
break;
case 'T': mask=KEY_TOOL_MASK;
break;
case 'E':
mask=KEY_ENTER_MASK;
break;
case 'R':
mask=KEY_RETUEN_MASK;
break;
case 'M':
mask=KEY_VOLUP_MASK;
break;
case 'N':
mask=KEY_VOLDOWN_MASK;
break;
case VK_SPACE:
// mask=TEST_SPACE_MASK;
break;
} if ( mask != 0 ) {
if ( pressed )
g_key_mask |= mask;
else
g_key_mask &= ~mask;
} return;
}//触发Left按键
if(g_key_mask&KEY_LEFT_MASK)
{
.......
}
switch (message)
{
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: Add any drawing code here...
BitBlt(hdc,0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN),CStateMachine::GetInstance()->GetDC(),0,0,SRCCOPY);
/* RECT rt;
GetClientRect(hWnd, &rt);
DrawText(hdc, szHello, _tcslen(szHello), &rt, DT_CENTER);*/
EndPaint(hWnd, &ps);
break;
case WM_KEYDOWN:
keyProc( wParam, TRUE );
break;
case WM_KEYUP:
keyProc( wParam, FALSE );
break;
case WM_LBUTTONDOWN:
DestroyWindow(hWnd);
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;