GDI:捕捉鼠标,实时改变矩形背景颜色。
来源:互联网 发布:数据分析服务合同 编辑:程序博客网 时间:2024/06/06 02:30
转的高鑫的。
#include <windows.h>#include <math.h>#define NUM 10struct own_rectangle{int xLeft ;int xRight ;int yTop ;int yBottom ;}rect[NUM];LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow){static TCHAR szAppName[] = TEXT("GDI:矩形颜色变换");HWND hwnd;MSG msg;WNDCLASS wndclass;wndclass.style = CS_HREDRAW | CS_VREDRAW ;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 = szAppName;wndclass.lpszMenuName = NULL;if (!RegisterClass(&wndclass)){MessageBox(NULL, TEXT("Program requires Windows NT!"),szAppName, MB_ICONERROR) ;return 0;}hwnd = CreateWindow (szAppName, TEXT("Piano Demo Using Mouse"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,NULL, NULL, hInstance, NULL) ;ShowWindow (hwnd, iCmdShow) ;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){static int cxClient, cyClient;static int Flag[NUM] ={0,0,0,0,0,0,0,0,0,0};HDC hdc;static int i = 0,j; //注意staticPAINTSTRUCT ps; //ps数组里面存放了RECT,用来重绘客户区的位置POINT hitPoint;int xStart = 200, yStart = 100, xEnd = 100, yEnd = 300;//HBRUSH hBrush;HPEN hPen;switch (message){case WM_SIZE:cxClient = LOWORD(lParam);cyClient = HIWORD(lParam);return 0;case WM_MOUSEMOVE:hitPoint.x = LOWORD(lParam);hitPoint.y = HIWORD(lParam);for (i = 0; i < NUM; i++) {if (hitPoint.x >= rect[i].xLeft && hitPoint.x <= rect[i].xRight && hitPoint.y >= rect[i].yTop && hitPoint.y <= rect[i].yBottom ) { Flag[i] = 1; InvalidateRect(hwnd, NULL, TRUE); //该函数向指定的窗口添加一个矩形。然后窗口客户区的这一部分将被重绘。为NULL,全部的窗口客户区域将被增加到更新区域中。break; }}if (NUM == i) InvalidateRect(hwnd, NULL, TRUE); // 这两句确保光标不在矩形区域时能捕捉到信息的改变return 0;case WM_PAINT:hdc = BeginPaint (hwnd, &ps); hPen = CreatePen (PS_SOLID, 1, RGB(255,0,0)); SelectObject (hdc, hPen); //hBrush = (HBRUSH)GetStockObject (GRAY_BRUSH); rect[0].xLeft = 400 ; rect[0].xRight = 420 ; rect[0].yTop = 210 ; rect[0].yBottom = 300 ; Rectangle(hdc, rect[0].xLeft, rect[0].yTop, rect[0].xRight, rect[0].yBottom); for (j = 1; j < NUM; j++) { rect[j].xLeft = rect[j-1].xLeft + 20 ; rect[j].xRight = rect[j-1].xRight + 20 ; rect[j].yTop = rect[0].yTop ; rect[j].yBottom = rect[0].yBottom ; Rectangle(hdc, rect[j].xLeft, rect[j].yTop, rect[j].xRight, rect[j].yBottom); } if (Flag[i] == 1) { SelectObject(hdc, (HBRUSH)GetStockObject (GRAY_BRUSH)); Rectangle(hdc, rect[i].xLeft, rect[i].yTop, rect[i].xRight, rect[i].yBottom); } else if (NUM == i) { SelectObject(hdc, (HBRUSH)GetStockObject (WHITE_BRUSH)); Rectangle(hdc, rect[i].xLeft, rect[i].yTop, rect[i].xRight, rect[i].yBottom); } DeleteObject(hPen); EndPaint(hwnd, &ps);return 0;case WM_DESTROY:PostQuitMessage (0);return 0;}return DefWindowProc (hwnd, message, wParam, lParam) ;}
- GDI:捕捉鼠标,实时改变矩形背景颜色。
- 鼠标悬停时改变Datalist背景颜色
- 鼠标经过时,改变表格背景颜色
- table鼠标移动背景,边框颜色改变
- 鼠标经过行时改变行的背景颜色
- gridview repeater DataList 鼠标经过改变背景颜色
- gridview repeater DataList 鼠标经过改变背景颜色
- javascript鼠标悬停改变背景颜色显示隐藏下级菜单
- 鼠标放按钮上去背景(颜色图片改变)
- 三种方法鼠标经过改变DIV背景颜色
- gridview repeater DataList 鼠标经过改变背景颜色
- 鼠标经过时,改变表格行、列的背景颜色
- jquery鼠标点击改变控件的背景颜色
- 当鼠标放在div上时改变背景颜色
- 鼠标拖动这个矩形(GDI+)
- 改变对话框背景颜色
- 循环改变背景颜色
- Aptana3 改变背景颜色
- c#中的@符号
- 怎样给心爱的Csharp应用程序添加图标
- HDU 4435 charge-station(12年天津)
- Head First 设计模式第一章 ----策略模式
- 刚有人问面试题咋答,一时兴起回了下,关于对 Struts2, Spring 和 Hibernate 的理解
- GDI:捕捉鼠标,实时改变矩形背景颜色。
- Oracle的逻辑存储结构
- 美妙优雅的sscanf
- Android用MediaRecorder实现MPEG4视频监控
- 三种urls的写法
- 安装配置websvn,支持web方式浏览svn
- Makefile中常用的函数
- ELF Hash Function(哈希表处理字符串)
- adb shell