登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

面包会有的

... ...

 
 
 

日志

 
 

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

2010-08-01 10:30:31|  分类: VC++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

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

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方式管理,开设交流室和交流室授权简单、方便
⑧ 有很强的控制功能,提供主控和自由发言等交流模式
⑨ 有良好的带宽处理机制、有强大的网络适应能力
⑩ 能同时支持多个交流室通道,并保障各交流室通道的相对独立和信息安全
  评论这张
 
阅读(2683)| 评论(1)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018