如何取得整个桌面的控制权?

HexiSoft 2002-11-12 12:40:40
我要实现的功能是:
我的程序里有一个按钮,按下后,我把光标变掉。然后,当鼠标移出我的主窗体后仍然有用,并且不管在桌面的那个位置,即使鼠标已不在我自已窗体的区域内,都能触发mousemove事件给我的程序接收到。而其它程序收不到。当前按钮弹开后,这种控制取消。

有一种方法是用全局HOOK接管鼠标的消息。但那需要做一个DLL。除了这种方法之后还有什么方法呢。我看过一个软件,可以在桌上自由画图。对其它程序没有影响。我要的就是那种功能。不知道是不是用HOOK的。

希望大侠指点?
...全文
86 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
HuWenjin 2002-11-12
  • 打赏
  • 举报
回复
太简单了

要给分的!!

看下面的代码



void CColorPickerDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
GetDlgItem(IDC_STATIC_CURSOR)->ShowWindow(SW_HIDE);
m_hCursor = SetCursor(AfxGetApp()->LoadCursor(IDC_CURSOR_TAG));
SetCapture();
CDialogEx::OnLButtonDown(nFlags, point);
}

void CColorPickerDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
SetCursor(m_hCursor);
GetDlgItem(IDC_STATIC_CURSOR)->ShowWindow(SW_SHOW);
ReleaseCapture();
CDialogEx::OnLButtonUp(nFlags, point);
}

void CColorPickerDlg::OnMouseMove(UINT nFlags, CPoint point)
{
if((nFlags & MK_LBUTTON ) != 0)
{
CString szText;
ClientToScreen(&point);

szText.Empty();
szText.Format("X: %d Y: %d",point.x,point.y);
SetDlgItemText(IDC_EDIT_MOUSE_POS,szText);

CWnd *tagWnd = WindowFromPoint(point);
szText.Empty();
tagWnd->GetWindowText(szText);
SetDlgItemText(IDC_EDIT_WIN_NAME,szText);

CDC *pDC;

pDC = tagWnd->GetWindowDC();

COLORREF m_Color;
tagWnd->ScreenToClient(&point);
m_Color = pDC->GetPixel(point);

szText.Empty();
szText.Format("RGB(%d,%d,%d) #",GetRValue(m_Color),GetGValue(m_Color),GetBValue(m_Color));

szText += GetDataHexChar(GetRValue(m_Color));
szText += GetDataHexChar(GetGValue(m_Color));
szText += GetDataHexChar(GetBValue(m_Color));

SetDlgItemText(IDC_PICK_COLOR_EDIT,szText);
}

CDialog::OnMouseMove(nFlags, point);
}


在 LButtonDown 时使用 SetCapture();
在 LButtonUp 时使用 ReleaseCapture();

则可达到你要的要求,上面的例子是我做的取色器中的代码,取出其它窗口中鼠标处的色
foxmail 2002-11-12
  • 打赏
  • 举报
回复
不需要那么麻烦 在桌面上画图
HWND hWndDesktop=GetDesktopWindow();或=HWND(0);
hdc=GetWindowDC(hWndDesktop);
HuWenjin 2002-11-12
  • 打赏
  • 举报
回复
给分啊,不要说觉得
HexiSoft 2002-11-12
  • 打赏
  • 举报
回复

不错,冥冥中我觉得应该有SetCapture();这样的函数。谢谢了。!
puyinghua 2002-11-12
  • 打赏
  • 举报
回复
楼上的
rujor 2002-11-12
  • 打赏
  • 举报
回复
就是啊,setcapture.

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧