函数原型如下:
void CWnd::ClientToScreen(LPPOINT lpPoint) const;
void CWnd::ClientToScreen(LPRECT lpRect) const;
- lpPoint:指向 POINT 结构的指针,表示客户区坐标。此函数将在返回时修改该结构,使其包含相应的屏幕坐标。
- lpRect:指向 RECT 结构的指针,表示客户区坐标的矩形。此函数将在返回时修改该结构,使其包含相应的屏幕坐标。
这个方法通常在需要将窗口内部的相对坐标转换为全局屏幕坐标时使用。例如,你可能需要在窗口中的某个特定区域上显示一个弹出菜单,而菜单的位置是相对于整个屏幕的。
以下是一个简单的示例,演示了如何使用 ClientToScreen:
// 在某个成员函数中调用
void CMyWnd::OnContextMenu(CWnd* pWnd, CPoint point)
{
// 将客户区坐标转换为屏幕坐标
ClientToScreen(&point);
// 在屏幕上显示上下文菜单
CMenu menu;
menu.LoadMenu(IDR_MYMENU);
CMenu* pContextMenu = menu.GetSubMenu(0);
pContextMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);
}
在这个示例中,ClientToScreen 用于将上下文菜单弹出的位置从客户区坐标转换为屏幕坐标,以便正确地显示在屏幕上。
转载请注明出处:http://www.pingtaimeng.com/article/detail/23435/MFC/CWnd