• 全部
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

如何精确定位 子窗口的位置

joykidd 2001-03-13 10:29:00
我做了一个采集视频的程序,要求在采集的同时显示该视频流,由于视频窗口的大小是不定的, 所以我的视频窗口是动态确定的,在需要显示的时候先用MoveWindow()函数将窗口移到我所需要的位置 就是FormView上的一幅图的顶点,然后根据大小创建之。

我得代码如下:
hOutputArea = _pDevice[m_dwSlotNumber]->m_pViewWnd->GetDlgItem(IDC_PLAY_WND);
nDisplayInfo.dwDataType = DATATYPE_YUV420_DATA;
nDisplayInfo.dwImageHeight = m_dwHeight;//240;
nDisplayInfo.dwImageWidth = m_dwWidth;//352;
nDisplayInfo.dwSlotNumber = m_dwSlotNumber;
nDisplayInfo.hWnd = hOutputArea->m_hWnd;//_pDevice[m_dwSlotNumber]->m_pViewWnd->m_hWnd;


CRect rect,mainfrmrect;
hOutputArea->GetWindowRect(&rect);
//m_pViewWnd->GetWindowRect(&viewrect);
AfxGetApp()->m_pMainWnd->GetWindowRect(mainfrmrect);
rect.top-=mainfrmrect.top;
rect.left-=mainfrmrect.left;
//AfxGetApp()->m_pMainWnd->ScreenToClient(&rect);

m_pViewWnd->ScreenToClient(&rect);//m_pViewWnd is a pointer to FormvView class

hOutputArea->MoveWindow(rect.left,rect.top, nDisplayInfo.dwImageWidth, nDisplayInfo.dwImageHeight, TRUE);


但我的窗口总是不能精确定位,我都困扰好几天了,那位大侠帮忙!!
...全文
53 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
happylaodu 2001-03-13
SetWindowPos(&wndTop,rect.left,rect.top,nDisplayInfo.dwImageWidth,nDisplayInfo.dwImageHeight,SWP_SHOWWINDOW);

回复
Dooo 2001-03-13
使用SetWindowPos()如何
回复
joke100 2001-03-13
倒数第二句
m_pViewWnd->ScreenToClient(&rect);//m_pViewWnd is a pointer to FormvView class
改成:
hOutputArea->ScreenToClient(&rect);//m_pViewWnd is a pointer to FormvView class
如何???



回复
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2001-03-13 10:29
社区公告

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