相对客户区、屏幕坐标
来源:互联网 发布:ubuntu搭建java服务器 编辑:程序博客网 时间:2024/06/07 01:35
ClientToScreen( )是把窗口坐标转换为屏幕坐标
ScreenToClient( )是把屏幕坐标转换为窗口坐标
屏幕坐标是相对于屏幕左上角的,而窗口坐标是相对于窗口用户区左上角的
VC下,有些函数使用窗口坐标,有些使用屏幕坐标,使用时要分清。
一个窗体分为两部分:系统区和客户区
象标题和菜单之类的是系统区,由系统来控制,客户区就是你的地盘喽!!!
Width, Height 是指整体的,ClientWidth, ClientHeight是指客户区的,两者相减就是
系统区的啦!!!
ClientToScreen是把坐标从当前窗体转化成全屏幕的!!!
ScreenToClient是把屏幕坐标转化成相对当前窗体的坐标!!!!
MoveWindow()
函数功能:该函数改变指定窗口的位置和尺寸。
对于顶层窗口,位置和尺寸是相对于屏幕的左上角的。
对于子窗口,位置和尺寸是相对于父窗口客户区的左上角坐标的。
bool m_bIsLButtonDawn = false;
void CDrawDlg::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CWnd *pwnd=GetDlgItem(IDC_EDIT1);
CDC *pdc=pwnd->GetDC();
CRect rect;
this->ClientToScreen(&point);
pwnd->ScreenToClient(&point);
pwnd->GetClientRect(&rect);
// HCURSOR hcur=::LoadCursorFromFile("pen.cur");
// SetClassLong(GetSafeHwnd(),GCL_HCURSOR,(LONG)hcur);
// CPen pen(PS_INSIDEFRAME,-1,RGB(255,255,255));
// CPen* olePen=pdc->SelectObject(&pen);
if(rect.PtInRect(point) && m_bIsLButtonDawn )
{
pdc->DPtoLP(&m_fp);
pdc->MoveTo(m_fp);
pdc->DPtoLP(&point);
pdc->LineTo(point);
}
m_fp=point;
// pdc->SelectObject(olePen);
ReleaseDC(pdc);
CDialog::OnMouseMove(nFlags, point);
}
void CDrawDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
m_bIsLButtonDawn =false;
// TODO: Add your message handler code here and/or call default
/**//*
CWnd *pwnd=GetDlgItem(IDC_EDIT1);
CDC *pdc=pwnd->GetDC();
CRect rect;
this->ClientToScreen(&point);
pwnd->ScreenToClient(&point);
pwnd->GetClientRect(&rect);
if(rect.PtInRect(point))
{
pdc->DPtoLP(&m_fp);
pdc->MoveTo(m_fp);
pdc->DPtoLP(&point);
pdc->LineTo(point);
}
ReleaseDC(pdc);*/
CDialog::OnLButtonUp(nFlags, point);
}
void CDrawDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CWnd *pwnd=GetDlgItem(IDC_EDIT1);
CDC *pDC=pwnd->GetDC();
CRect rect;
this->ClientToScreen(&point);
pwnd->ScreenToClient(&point);
pwnd->GetClientRect(&rect);
if(rect.PtInRect(point))
{
m_fp.x=point.x;
m_fp.y=point.y;
}
ReleaseDC(pDC);
m_bIsLButtonDawn =true;
CDialog::OnLButtonDown(nFlags, point);
}
- 相对客户区、屏幕坐标
- 屏幕坐标与客户区坐标
- 客户区坐标转换成屏幕坐标
- 屏幕坐标和客户区坐标
- 屏幕坐标与客户区坐标转换
- 屏幕坐标转客户区坐标
- 屏幕坐标转客户区的坐标
- WINDOWS 逻辑坐标 设备坐标 屏幕坐标 客户区坐标
- WINDOWS 逻辑坐标 设备坐标 屏幕坐标 客户区坐标
- WINDOWS 逻辑坐标 设备坐标 屏幕坐标 客户区坐标
- WINDOWS 逻辑坐标 设备坐标 屏幕坐标 客户区坐标
- WINDOWS 逻辑坐标 设备坐标 屏幕坐标 客户区坐标
- WINDOWS 逻辑坐标 设备坐标 屏幕坐标 客户区坐标
- WINDOWS 逻辑坐标 设备坐标 屏幕坐标 客户区坐标
- WINDOWS 逻辑坐标 设备坐标 屏幕坐标 客户区坐标 .
- WINDOWS 逻辑坐标 设备坐标 屏幕坐标 客户区坐标
- WINDOWS 逻辑坐标 设备坐标 屏幕坐标 客户区坐标
- WINDOWS 逻辑坐标 设备坐标 屏幕坐标 客户区坐标
- Windows线程同步API
- 模版引擎 smarty 怎样工作的 学习感悟 foreach
- 隐藏显示在任务栏中的对话框程序
- 修改窗体风格
- 一个int数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它
- 相对客户区、屏幕坐标
- 网络单臂路由实验
- 为可拖动的窗体创建右下标
- 托盘实现
- 山区行
- 托盘弹出式菜单
- c++继承与派生
- 谈谈父窗口和所有者窗口
- 网络VTP实验