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

mie

 
 
 

日志

 
 

VC 2010:使用代码动态修改窗口控件的Tab按键切换顺序(Z-order)  

2011-09-01 15:17:29|  分类: vc界面编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
VC 2010:使用代码动态修改窗口控件的Tab按键切换顺序(Z-order)

        在网上找了很久,都没有能够找到这个问题的解决方法,经过本人一段时间的努力,终于较为圆满地解决。

        动态切换Tab序,或者说是Z-order,微软并没有直接提供相应的接口。然而,微软却提供了一个函数,可以改变Tab Order,它就是我们所熟知的SetWindowPos!SetWindowPos中,有个参数是SWP_NOZORDER,故此,微软间接告诉了我们,SetWindowPos会改变控件的Z-order,于是乎,问题迎刃而解!
        代码如下:


INT CPartitionItemWithLayout::SetZOrder_Top(LAYOUT_ITER piter)
{
CPartitionItemWnd * pwnd=piter->GetWindow();
ATLASSERT(pwnd!=NULL);

CPartitionItemWnd * pItemWnd=NULL;
CWnd * pPreWnd=m_PartitionWnd;

if (pwnd!=NULL)
{
pPreWnd=pwnd;
}

INT size=m_PartitionArray.GetSize();
INT i=0;

for (i=size-1; i>=0; i--)
{
if (pwnd!=m_PartitionArray[i])
{
pItemWnd=m_PartitionArray[i];

pItemWnd->SetWindowPos(pPreWnd, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOREDRAW | SWP_NOACTIVATE | SWP_NOSENDCHANGING);

pPreWnd=pItemWnd;
}
}

return 0;
}

当然了,这个函数只是展示修改Tab序的原理,它是没法直接拿来使用的。方法就是,通过SetWindowPos,重新将控件的Z-order前后顺序关联起来,从而达到修改Tab Order的作用。

注:所谓Tab Order,或者说是Z-order,(实在是没有一个好的中文词语来代替,只好用英文),其实就是相对于X、Y轴而言,由于窗口是2D的,但又必须虚拟出一个Z轴的前后顺序,这就是Tab Order。其实,称之为Z-order更形象。

By:章永辉
  评论这张
 
阅读(2651)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

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

页脚

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