ClientToScreen 和 ScreenToClient

本文介绍了ClientToScreen和ScreenToClient两个API函数的功能及使用方法,帮助开发者理解如何在Windows应用程序中进行屏幕坐标与用户坐标的相互转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 函数原型:BOOL     ClientToScreen(HWND     hWnd,LPPOINT     lpPoint);   
    
            参数:   
    
            :用户区域用于转换的窗口句柄。   
    
            :指向一个含有要转换的用户坐标的结构的指针,如果函数调用成功,新屏幕坐标复制到此结构。   
    
            返回值:如果函数调用成功,返回值为非零值,否则为零。   
    
            注释:函数用屏幕坐标取代POINT结构中的用户坐标,屏幕坐标与屏幕左上角相关联。   
    
            速查:Windows     NT:3.1及以上版本;Windows:95及以上版本;Windows     CE:1.0及以上版本;头文件:winuser.h;库文件:user32.lib。   
    
    
    
        函数功能:该函数把屏幕上指定点的屏幕坐标转换成用户坐标。   
    
            函数原型:BOOL     ScreenToClient(HWND     hWnd,     LPPOINT     lpPoint);   
    
            参数:   
    
            hWnd:指向窗口的句柄,此窗口的用户空间将被用来转换。   
    
            lpPoint:指向POINT结构指针,该结构含有要转换的屏幕坐标。   
    
            返回值:如果函数调用成功,返回值为非零值,否则为零。   
    
            Windows     NT:若想获得更多错误信息,请调用GetLastError函数。   
    
            注释:该函数应用hWnd参数标识的窗口和POINT结构给定的屏幕坐标来计算用户坐标,然后以用户坐标来替代屏幕坐,新坐标是相对于指定窗口的领域的左上角。   
    
            速查:Windows     NT:3.1及以上版本;Windows:95及以上版本;Windows     CE:1.0及以上版本;头文件:winuser.h;库文件:user32.lib。   
    
  
例如:想要得到文本框在对话框中左上角的坐标(即文本框左上角到对话框左上角的距离)   
    
    
    CRect     rectEdit,rectDlg;   
    CWnd     *pWnd=GetDlgItem(IDC_EDIT1);//获得文本框指针   
    pWnd->GetClientRect(rectEdit);       //获得文本框矩形,左上角坐标(0,0)   
    pWnd->ClientToScreen(rectEdit);       //转换到屏幕坐标,左上角坐标为文本框在屏幕的坐标   
    GetClientRect(rectDlg);//获得对话框矩形,左上角坐标(0,0)   
    ClientToScreen(rectDlg);//转换到屏幕坐标,左上角坐标为对话框在屏幕的坐标   
    
    int     x=rectEdit.left-rectDlg.left;//他们的差即为文本框在对话框中的X坐标   
    int     y=rectEdit.top-rectDlg.top;//他们的差即为文本框在对话框中的Y坐标   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值