VC6.0,矩形的坐标转换ScreenToClient(&rectStaticScreen);

 

在对话框上加了一个控件,想用它来定位,在它内部再切分成若干个小矩形,用来模拟窗口的切割分屏:

VC6.0,矩形的坐标转换ScreenToClient(rectStaticScreen); - 加菲 - 加菲-高清视频会议软件

 

VC6.0,矩形的坐标转换ScreenToClient(rectStaticScreen); - 加菲 - 加菲-高清视频会议软件

 暂时放到搜索按钮的响应函数中吧:

void CDlgControl::OnButtonSearch()
{
 // TODO: Add your control notification handler code here
 CRect rectStaticScreen;
 this->GetDlgItem(IDC_STATIC_SCREEN)->GetWindowRect(&rectStaticScreen);
 CString str;
 str.Format("%d,%d;%d,%d",rectStaticScreen.left,rectStaticScreen.top,rectStaticScreen.right,rectStaticScreen.bottom);
// AfxMessageBox(str); 


 CClientDC dc(this);
 dc.Rectangle(rectStaticScreen);
 CBrush fillBrush(RGB(122,122,122));
 dc.FillRect(&rectStaticScreen,&fillBrush);
 dc.TextOut(rectStaticScreen.left,rectStaticScreen.top,"123",sizeof("123")-1);

}

运行得到如下效果:

VC6.0,矩形的坐标转换ScreenToClient(rectStaticScreen); - 加菲 - 加菲-高清视频会议软件
 
很明显歪到了一边,把主对话框拉动一下,再单击搜索按钮,会发现一个很有意思的事情:
VC6.0,矩形的坐标转换ScreenToClient(rectStaticScreen); - 加菲 - 加菲-高清视频会议软件
看到灰色块的位置有了变动,因为一开始就猜到是坐标转换的原因,所以找到一个函数,来试一下:
ScreenToClient(&rectStaticScreen);//转换坐标
把代码重新改写:
void CDlgControl::OnButtonSearch()
{
 // TODO: Add your control notification handler code here
 CRect rectStaticScreen;
 this->GetDlgItem(IDC_STATIC_SCREEN)->GetWindowRect(&rectStaticScreen);
 CString str;
 str.Format("%d,%d;%d,%d",rectStaticScreen.left,rectStaticScreen.top,rectStaticScreen.right,rectStaticScreen.bottom);
  ScreenToClient(&rectStaticScreen);//转换坐标
 CClientDC dc(this);
 dc.Rectangle(rectStaticScreen);
 CBrush fillBrush(RGB(122,122,122));
 dc.FillRect(&rectStaticScreen,&fillBrush);
 dc.TextOut(rectStaticScreen.left,rectStaticScreen.top,"123",sizeof("123")-1);
}
 再次运行一下:
VC6.0,矩形的坐标转换ScreenToClient(rectStaticScreen); - 加菲 - 加菲-高清视频会议软件
哇,刚刚好!
接下来,就可以在这个灰色块的内部创建新的矩形了,具体的实现放到下一个文章里,一会儿给出链接
 
更详细的坐标转换放到其它文章里吧,这个是我实际遇到的一个例子,所以记录下来了,高手们不要拍砖


再比如,下载了个代码,动态创建了一个控件,但是它的位置是用数字指定的,如果要改位置,只能改数字。我就想,创建一个static,用它来定位。

原来的代码:
CRect rcx(50,280,100,300);
m_ShowTextProgressCtrl.Create(WS_CHILD|WS_BORDER|PBS_VERTICAL,rcx,this,55000);
如果要移动它,要修改50,280,100,300这些数字。

VC6.0,矩形的坐标转换ScreenToClient(rectStaticScreen); - 加菲 - 视频会议 - 加菲
 
现在我创建了一个static,把它拖动到合适的位置:

VC6.0,矩形的坐标转换ScreenToClient(rectStaticScreen); - 加菲 - 视频会议 - 加菲
 
CRect rcx(50,280,100,300);
        GetDlgItem(IDC_STATIC_P)->GetClientRect(&rcx);
        m_ShowTextProgressCtrl.Create(WS_CHILD|WS_BORDER|PBS_VERTICAL,rcx,this,55000);
结果移动的位置不理想:
VC6.0,矩形的坐标转换ScreenToClient(rectStaticScreen); - 加菲 - 视频会议 - 加菲
 
CRect rcx(50,280,100,300);
GetDlgItem(IDC_STATIC_P)->GetWindowRect(&rcx);
        m_ShowTextProgressCtrl.Create(WS_CHILD|WS_BORDER|PBS_VERTICAL,rcx,this,55000);
这样就对了:
VC6.0,矩形的坐标转换ScreenToClient(rectStaticScreen); - 加菲 - 视频会议 - 加菲
 

 
VC6.0,矩形的坐标转换ScreenToClient(rectStaticScreen); - 加菲 - 视频会议 - 加菲
 
① 同时支持16路视频图像,可随时切换查看任意参会者视频窗口
② 同时支持16人发言,最大限度的满足沟通需要
③ 能进行现场录制,把会议、培训、诊疗、教育等实时交流信息完全录制下来
④ 支持屏幕广播、程序共享等多种协同办公的功能
⑤ 支持文档共享、电子白板、网页同步等多种交互手段
⑥ P2P文件实时交换,让您如同在局域网内拷贝文件一样方便自如;采用T120协议,实现了同步传输文件、视频、音频状态下的互不干扰
⑦ 能进行远程web方式管理,开设交流室和交流室授权简单、方便
⑧ 有很强的控制功能,提供主控和自由发言等交流模式
⑨ 有良好的带宽处理机制、有强大的网络适应能力
⑩ 能同时支持多个交流室通道,并保障各交流室通道的相对独立和信息安全
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值