这样写有什么好处啊?我和其它的人都认为直接用虚拟键就可以了.下面全是自定义的,思想就是拿最位
与其他的变量来作与或操作从而判断按键是否被按下#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)
{
  .......
}

解决方案 »

  1.   

    再补一段
    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;