读书人

如何响应类似ctrl+a shift+b

发布时间: 2012-11-09 10:18:48 作者: rapoo

怎么响应类似ctrl+a shift+b

C/C++ code
#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;}


[解决办法]
C/C++ code
WM_KEYDOWN: if(GetKeyState(VK_CONTROL) < 0 && GetKeyState(VK_SHIFT) < 0 && GetKeyState(_T('A')) < 0 && GetKeyState(_T('B')) < 0) {  ...} break; 

读书人网 >VC/MFC

热点推荐