#include<windows.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
char out[10]="";
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hprevinst,LPSTR lpszcmdline,int ncmdshow){
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
char lpszclassname[]="6_3";
char lpsztitle[]="6_3";
wndclass.style=0;
wndclass.lpfnWndProc=WndProc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hinstance;
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszClassName=lpszclassname;
wndclass.lpszMenuName=NULL;
if(!RegisterClass(&wndclass)){
MessageBeep(0);
return FALSE;
}
hwnd=CreateWindow(lpszclassname,lpsztitle,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hinstance,NULL);
ShowWindow(hwnd,ncmdshow);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam){
HDC hdc;
PAINTSTRUCT ps;
char c;
char cc[10];
switch(message){
case WM_CHAR:
switch(wparam){
}
InvalidateRect(hwnd,NULL,1);
break;
case WM_KEYDOWN:
switch(wparam){
case VK_UP:
strcpy(out,"UP");
break;
case VK_CONTROL:
strcpy(out,"CTRL");
break;
case VK_SHIFT:
strcpy(out,"SHIFT");
}
InvalidateRect(hwnd,NULL,1);
break;
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
TextOut(hdc,10,10,out,strlen(out));
EndPaint(hwnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,message,wparam,lparam); }
return 0;
}

解决方案 »

  1.   

    WM_CHAR中:
    if((GetKeyState(VK_CONTROL) & 0x8000) || (GetKeyState(VK_SHIFT) & 0x8000))
      

  2.   

    //可以:
    case WM_KEYDOWN:
    switch(wParam)
    {
    case 'A':
    if(GetKeyState(VK_CONTROL) & 0x8000)
    {
    OutputDebugString("CONTROL a \n");
    }
    if(GetKeyState(VK_SHIFT) & 0x8000)
    {
    OutputDebugString("SHIFT a \n");
    }
    break;
      

  3.   

    就是他
    http://wenku.baidu.com/view/ba6adfed4afe04a1b071de22.html
      

  4.   

    WM_KEYDOWN:
     if(GetKeyState(VK_CONTROL) < 0 && GetKeyState(VK_SHIFT) < 0 && GetKeyState(_T('A')) < 0 && GetKeyState(_T('B')) < 0)
     {
      ...
    }
     break;