取得屏幕上任意點的象素值

先建立一個對話框工程,然後在對話框的OnTimer()事件處理函數裏寫下這些代碼:

 // TODO: Add your message handler code here and/or call default
 POINT point;
 GetCursorPos(&point);//取得屏幕當前光標位置
 HWND hWnd = ::WindowFromPoint(point);//取得光標處的窗口句柄
 HDC hDC = ::GetDC(hWnd);//取得該窗口的DC
 ::ScreenToClient(hWnd, &point);//把屏幕座標轉換成窗口座標
 COLORREF color = ::GetPixel(hDC, point.x, point.y);//取得顏色值
 ::ReleaseDC(hWnd, hDC);//釋放窗口的DC
 char szTitle[255];
 ZeroMemory(szTitle, sizeof(szTitle));
 ::GetWindowText(hWnd,szTitle, sizeof(szTitle));//取得窗口標題
 CString strMsg;
 strMsg.Format("%X", color);

//把取得的值顯示在屏幕上
 SetDlgItemText(IDC_STATIC_COLOR, strMsg);
 SetDlgItemText(IDC_STATIC_TITLE, szTitle);

 

如果想要該程序的窗口在最前面,在OnInitDialog函數里加上這句:

 ::SetWindowPos(GetSafeHwnd(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE );

 

發佈了44 篇原創文章 · 獲贊 12 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章