MOOC清华《VC++面向对象与可视化程序设计》第4章:键盘实例程序(组合键)
来源:互联网 发布:旗鱼网络加速器 编辑:程序博客网 时间:2024/05/14 01:59
#include <windows.h>#include <stdlib.h>#include <string.h>long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam);//消息处理函数声明.BOOL InitWindowsClass(HINSTANCE hInstance);//初始化窗口类声明BOOL InitWindows(HINSTANCE hInstance, int nCmdShow);//初始化窗口声明.HWND hWndMain;int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)//主函数{MSG Message;if(!InitWindowsClass(hInstance))//初始化窗口类.return FALSE;if(!InitWindows(hInstance,nCmdShow))//初始化窗口.return FALSE;while(GetMessage(&Message,0,0,0)){TranslateMessage(&Message);//消息循环.DispatchMessage(&Message);}return Message.wParam;}long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)//消息处理函数.{HDC hDC;//定义设备环境句柄.PAINTSTRUCT ps;//定义包含绘图信息的结构体变量HPEN hPen;//定义画笔句柄。HBRUSH hBrush;//定义画刷句柄//定义输出的字符串。static char cUp[]="You had hit the UP key";static char cCtrl[]="You had hit the Ctrl key";static char cShift[]="You had hit the SHIFT key";static char cCtrl_A[]="You had hit the CTRL A key";static char cShift_B[]="You had hit the SHIFT B key";//定义并初始化按键标志变量。static BOOL nUpKeyDown=FALSE, nShiftKeyDown=FALSE,nCtrlKeyDown=FALSE, nCtrlAKeyDown=FALSE, nShiftBKeyDown=FALSE;switch(iMessage){case WM_KEYDOWN:{switch(wParam){case VK_UP://当按上箭头键时,变量置为真。nUpKeyDown = TRUE;break;case VK_SHIFT://当按shift键时,变量置为真。nShiftKeyDown = TRUE;break;case VK_CONTROL://当按control键时,变量置为真。nCtrlKeyDown = TRUE;break;default:break;}}break;case WM_KEYUP:InvalidateRect(hWnd,NULL,FALSE);//刷新用户区。break;case WM_CHAR:if(wParam==(65 & VK_CONTROL)||wParam==(97 & VK_CONTROL)){if(nCtrlKeyDown == TRUE){nCtrlAKeyDown = TRUE;nCtrlKeyDown = FALSE;}}else if(wParam==98||wParam==66)//当按下b键时{if(nShiftKeyDown == TRUE)//检查shift键是否处于按下状态。{nShiftBKeyDown = TRUE;//当SHIFT键按下时,变量置为真。nShiftKeyDown = FALSE;}}break;case WM_PAINT://处理绘图消息.hDC=BeginPaint(hWnd,&ps);hBrush = (HBRUSH)GetStockObject(WHITE_BRUSH);//创建 白画刷。hPen = (HPEN)GetStockObject(WHITE_PEN);//创建白画笔。SelectObject(hDC,hPen);//选入白画刷SelectObject(hDC,hBrush);//选入白画笔SetTextColor(hDC,RGB(255,0,0));//设置字体颜色为红色。//输出信息。if(nUpKeyDown == TRUE) {Rectangle(hDC,0,0,300,200);TextOut(hDC,0,0,cUp,strlen(cUp));nUpKeyDown = FALSE;}else if(nCtrlAKeyDown == TRUE) {Rectangle(hDC,0,0,300,200);TextOut(hDC,0,100,cCtrl_A,strlen(cCtrl_A));nCtrlAKeyDown = FALSE;nCtrlKeyDown = FALSE;}else if((nCtrlKeyDown == TRUE) && (nCtrlAKeyDown == FALSE)){Rectangle(hDC,0,0,300,200);TextOut(hDC,0,60,cCtrl,strlen(cCtrl));nCtrlKeyDown = FALSE;}else if(nShiftBKeyDown == TRUE) {Rectangle(hDC,0,0,300,200);TextOut(hDC,0,0,cShift_B,strlen(cShift_B));nShiftBKeyDown = FALSE;nShiftKeyDown = FALSE;}else if((nShiftKeyDown == TRUE) && (nShiftBKeyDown == FALSE)){Rectangle(hDC,0,0,300,200);TextOut(hDC,0,0,cShift,strlen(cShift));nShiftKeyDown = FALSE;}else;//删除画笔和画刷DeleteObject(hPen);DeleteObject(hBrush);EndPaint(hWnd,&ps);break;case WM_DESTROY:PostQuitMessage(0);return 0;default:return(DefWindowProc(hWnd,iMessage,wParam,lParam));}return 0;}BOOL InitWindows(HINSTANCE hInstance, int nCmdShow){HWND hWnd;hWnd=CreateWindow("4_1","键盘实例程序",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);if(!hWnd)return FALSE;hWndMain=hWnd;ShowWindow(hWnd,nCmdShow);UpdateWindow(hWnd);return TRUE;}BOOL InitWindowsClass(HINSTANCE hInstance){WNDCLASS WndClass;WndClass.cbClsExtra=0;WndClass.cbWndExtra=0;WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);WndClass.hIcon=LoadIcon(NULL,"END");WndClass.hInstance=hInstance;WndClass.lpfnWndProc=WndProc;WndClass.lpszClassName="4_1";WndClass.lpszMenuName=NULL;WndClass.style=CS_HREDRAW|CS_VREDRAW;return RegisterClass(&WndClass);WndClass.style=0;}
阅读全文
0 0
- MOOC清华《VC++面向对象与可视化程序设计》第4章:键盘实例程序(组合键)
- MOOC清华《VC++面向对象与可视化程序设计》第4章:鼠标实例程序(光标九宫格)
- MOOC清华《VC++面向对象与可视化程序设计》第4章:键盘操作例程(五个对话框)
- MOOC清华《VC++面向对象与可视化程序设计》第2章:编程作业-渐变图形的绘制(“万花筒”程序)
- MOOC清华《VC++面向对象与可视化程序设计》第3章:Windows文本-例(1)文本显示示例程序
- MOOC清华《VC++面向对象与可视化程序设计》第3章:Windows文本-例(4)竖排的古诗
- MOOC清华《VC++面向对象与可视化程序设计》第4章:鼠标操作例程(灰白选框)
- MOOC清华《VC++面向对象与可视化程序设计》第3章:编程作业-艺术字的显示
- MOOC清华《VC++面向对象与可视化程序设计》第5章:位图资源例程
- MOOC清华《VC++面向对象与可视化程序设计》第5章:图标资源例程
- MOOC清华《VC++面向对象与可视化程序设计》第3章:补例-诗文扇面
- MOOC清华《VC++面向对象与可视化程序设计》第1章:空白窗口的创建(空项目)
- MOOC清华《VC++面向对象与可视化程序设计》第1章:空白窗口的创建(Win32项目)
- MOOC清华《VC++面向对象与可视化程序设计》第2章:Windows绘图-例(1)静态图形的绘制
- MOOC清华《VC++面向对象与可视化程序设计》第2章:Windows绘图-例(3)移动图形的绘制
- MOOC清华《VC++面向对象与可视化程序设计》第3章:Windows文本-例(2)字体、颜色、下划线
- MOOC清华《VC++面向对象与可视化程序设计》第3章:Windows文本-例(3)动态文本的显示
- MOOC清华《VC++面向对象与可视化程序设计》第5章:菜单资源例程(创建统计计算菜单项)
- C++做一个返回数组指针的函数
- 下拉刷新的小控件
- 项目布局常用
- ZeroMQ.pdf 英文原版 免费下载
- quartz定时任务时间设置
- MOOC清华《VC++面向对象与可视化程序设计》第4章:键盘实例程序(组合键)
- BZOJ1174 [Balkan2007] Toponyms 邻接链表优化 TRIE树
- 百度人脸比对Demo
- Uboot启动流程
- javaScript:页码实现
- Developing with Couchbase Server.pdf 英文原版 免费下载
- HttpClient在安卓中的应用
- 前端小技巧--三级联动
- 计算机会议排名等级