百叶窗式面板组

百叶窗式面板组

ID:41253490

大小:51.00 KB

页数:4页

时间:2019-08-20

百叶窗式面板组_第1页
百叶窗式面板组_第2页
百叶窗式面板组_第3页
百叶窗式面板组_第4页
资源描述:

《百叶窗式面板组》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、百叶窗式面板组利用百叶窗式面板组可增大窗口的可利用面积,而且把常用工具放在窗口中比放在菜单中使用更方便,现在一些大型软件如Photoshop、Dreamweaver等都采用了这种方式。在这些软件中,百叶窗式面板组都做成了可停靠的窗口,我没有这种能力,只能做成固定位置的控件组,使用时只能用在对话框或具有CFormView的视图中,整个制作很粗糙,希望高手能加以改造。本程序的核心思路是调整控件的位置和显示/隐藏控件,当一个面板被收起或展开时,只要把它下面的控件都隐藏或显示出来,再调整各面板控件位置,这样整个面板组就像百叶窗一样可以收放自如了。显示/隐藏控件:CWnd*pWnd;

2、pWnd=GetDlgItem(控件ID号);pWnd->ShowWindow(nShow);GetDlgItem()函数用于获取控件的指针;ShowWindow()函数用于显示/隐藏控件,当nShow为SW_SHOW时,显示控件,为SW_HIDE时隐藏控件。修改控件位置:CWnd*pWnd;pWnd=GetDlgItem(控件ID号);pWnd->SetWindowPos(NULL,x,y,0,0,SWP_NOZORDER

3、SWP_NOSIZE);SetWindowPos()函数把控件移到窗口的(x,y)处,大小不变这个程序的设计难点在控制控件的位置上,应该尽量采用相对位

4、置。在这里只要抓住在各种情况下标题条的位置就可以了,标题条下的各控件位置都是相对于标题条的,当标题条位置改变时,重新计算一下控件位置就可以了。我定义了一个数组变量CPointm_TitlePt[3]存放三个标题条的位置,其值在收放面板时进行设定。面板1的标题条是固定的,只要设置好初值就行了;面板2的标题条是相对于面板1的标题条的,有两种可能:当面版1展开时,其y坐标=标题条1.y+面板1高度,即:m_TitlePt[1].y=m_TitlePt[0].y+m_BoxHeight[0];当面版1收起时,其y坐标=标题条1.y+标题条1高度,即:m_TitlePt[1].y=m

5、_TitlePt[0].y+m_TitleHeight;面板3的标题条是相对于面板2的标题条的,也有两种可能:当面版2展开时,其y坐标=标题条2.y+面板2高度,即:m_TitlePt[2].y=m_TitlePt[1].y+m_BoxHeight[1];当面版2收起时,其y坐标=标题条2.y+标题条2高度,即:m_TitlePt[2].y=m_TitlePt[1].y+m_TitleHeight;以下就是计算面板3各部分位置的函数:voidCCurtainBoxDlg::CalculateControlPos3(){ m_TitlePt[2].x=m_BoxRext.le

6、ft; //标题条位置(左上角坐标) if(b_Mark2) //面板2是展开的  m_TitlePt[2].y=m_TitlePt[1].y+m_BoxHeight[1]; else   //面板2是收起的  m_TitlePt[2].y=m_TitlePt[1].y+m_TitleHeight; m_ControlPt3[0]=CPoint(m_TitlePt[2].x+5,m_TitlePt[2].y+m_TitleHeight+7); //控件位置 m_ControlPt3[1]=CPoint(m_TitlePt[2].x+85,m_TitlePt[2].y+m_T

7、itleHeight+7); m_ControlPt3[2]=CPoint(m_TitlePt[2].x+5,m_TitlePt[2].y+m_TitleHeight+35);}面板下各控件位置是经反复调节确定的。其它两个面板用类似方法计算。计算好位置后,就可以重新定位位置了,以下为设置面板3各部分位置的函数:voidCCurtainBoxDlg::SetBox3Pos(){ CWnd*pWnd=GetDlgItem(IDC_TITLE3); pWnd->SetWindowPos(NULL,m_TitlePt[2].x,m_TitlePt[2].y,      0,0,SW

8、P_NOSIZE

9、SWP_NOZORDER);  //调整标题栏位置 inti; for(i=0;i {  pWnd=GetDlgItem(m_Box3ID[i]);  pWnd->SetWindowPos(NULL,m_ControlPt3[i].x,m_ControlPt3[i].y,     0,0,SWP_NOSIZE

10、SWP_NOZORDER);  //调整控件位置 }}其中,BOX3_NUMBER为面板3中控件数,m_Box3ID[]存放控件ID号的数组,其值在初始化时已设置。解决了控件位置后,就该考虑

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。