实时获取窗口鼠标坐标及像素值的方法
2016-04-14 16:55
369 查看
在应用程序对应窗口类下,应用timer,在OnTimer函数中完成:
void CImportExcelDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CPoint point;
GetCursorPos(&point);
// HWND hwnd=::GetForegroundWindow();
HDC hDC = ::GetDC(NULL);
// 再获取当前鼠标位置像素值
COLORREF color = ::GetPixel(hDC, point.x, point.y);
// m_colorState.SetBkColor(color);
int posx,posy,red,green,blue;
posx = point.x;
posy = point.y;
red = GetRValue(color);
green = GetGValue(color);
blue = GetBValue(color);
CString string;
string.Format(_T("\r\n当前像素RGB (%d,%d,%d)\r\n当前坐标(%d,%d)"),red,green,blue,posx,posy);
SetDlgItemText(IDC_EDIT2,string);
::ReleaseDC(NULL,hDC);
CDialogEx::OnTimer(nIDEvent);
}
注意,在VC中有WM_MOUSEMOVE消息响应,如果在该响应函数OnMouseMove(UINT nFlags, CPoint point)同样用上述方法获取鼠标坐标和像素值,则只能获得应用程序对应窗口内的像素坐标和值,当鼠标移出应用程序窗口后,则无法取值。
void CImportExcelDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CPoint point;
GetCursorPos(&point);
// HWND hwnd=::GetForegroundWindow();
HDC hDC = ::GetDC(NULL);
// 再获取当前鼠标位置像素值
COLORREF color = ::GetPixel(hDC, point.x, point.y);
// m_colorState.SetBkColor(color);
int posx,posy,red,green,blue;
posx = point.x;
posy = point.y;
red = GetRValue(color);
green = GetGValue(color);
blue = GetBValue(color);
CString string;
string.Format(_T("\r\n当前像素RGB (%d,%d,%d)\r\n当前坐标(%d,%d)"),red,green,blue,posx,posy);
SetDlgItemText(IDC_EDIT2,string);
::ReleaseDC(NULL,hDC);
CDialogEx::OnTimer(nIDEvent);
}
注意,在VC中有WM_MOUSEMOVE消息响应,如果在该响应函数OnMouseMove(UINT nFlags, CPoint point)同样用上述方法获取鼠标坐标和像素值,则只能获得应用程序对应窗口内的像素坐标和值,当鼠标移出应用程序窗口后,则无法取值。
相关文章推荐
- 雅思听力听写练习之 C7T2-2--Boat Trip
- 屏蔽ios点击非电话号码的数字串打电话功能
- MySQL数据库引擎详解
- Xcode免真机调试出现的问题之一
- 局域网(最小生成树)
- FZU 2092 收集水晶 bfs+记忆化搜索 or 暴力
- 操作系统实验2
- c#XML配置文件辅助类
- Cassandra学习笔记
- bash脚本学习--批量增删用户
- 如何使用脚本自动备份阿里云rds数据库
- iOS QQ第三方登录的简单实现
- Git版本控制软件结合GitHub从入门到精通常用命令学习手册
- android抽屉实现
- 香港联交所相关
- CSU 1640 机智的刷题方式
- 正则表达式
- echo命令图文详解
- 余数和商 一位数乘一位数
- JSON 时间等常用转化的思路