首 页
┆
教育新闻
┆
课件中心
┆
论文中心
┆
教学教案
┆
试题中心
┆
语文专题
┆
综合下载
┆
技术教程
┆
公务员
设为首页
加入收藏
联系我们
技术:
数据库综合
|
病毒防治
|
网络安全
|
网络相关
|
软件开发
|
网站建设
|
操作系统
|
办公软件
|
软件教程
|
医学试题
您当前的位置:
中国教育资源网
->
技术教程
->
软件开发
->
C
-> 技术内容
退出登录
用户管理
程序界面多模式显示的实现C语言教程
论文作者:佚名 论文来源:不详 论文发布时间:2006-6-19 22:19:34 论文发布人:chjchjchj
减小字体
增大字体
图一
图二
图三
基本构成思想:
实现原理很简单,只要分别获取窗体大小、客户区大小、工具条大小、状态条大小、边框大小以及标题栏大小,既可根据不同显示模式,计算出不同的新窗体的高度(关键在于要重新计算高度,宽度)。如:简洁显示模式(无视图方式下),为宽度不变、高度=窗体高度-客户区高度-状态条高度-边框高度既可。精简显示模式(仅工具条方式下),为宽度不变,先隐藏菜单、高度=标题栏高度+工具条高度+边框高度既可。其实就是这么简单,RealPlayer是宽度,高度一起改变并计算,本示例只简单的改变高度,宽度不变,但基本原理是相同的。下面看看它的代码实现情况吧!
关键代码实现:
我先做了一个涵数,示例程序只需调用此涵数便可实现。其中当nViewType传值为0时,为正常显示模式、传值为1时,为简洁显示模式、传值为2时,为精简显示模式。
void CMainFrame::ViewMode(int nViewType)
{
CRect ClientRect;
CRect WindowRect;
CRect ToolbarRect;
CRect StatusbarRect;
//获取窗体、客户区及工具条大小
WindowRect = m_WindowRect;
ClientRect = m_ClientRect;
m_wndToolBar.GetWindowRect(&ToolbarRect);
//获取边框及标题栏大小
int borderHeight = GetSystemMetrics(SM_CYBORDER);
int captionHeight = GetSystemMetrics(SM_CYCAPTION);
//获取状态条大小
CStatusBar* pStatus = (CStatusBar*) AfxGetApp()->m_pMainWnd->GetDescendantWindow(AFX_IDW_STATUS_BAR);
pStatus->GetWindowRect(&StatusbarRect);
//停靠工具条
DockControlBar(&m_wndToolBar);
int CompactCx; //新窗体宽
int CompactCy; //新窗体高
//以多种模式显示
switch(nViewType)
{
case 0: //正常显示模式
{
//显示菜单
if ( hMenu != NULL )
::SetMenu( m_hWnd, hMenu );
//显示状态条
pStatus->ShowWindow(SW_SHOW);
//新窗体宽、高
CompactCx=WindowRect.Width();
CompactCy=WindowRect.Height();
}
break;
case 1: //简洁显示模式
{
//显示菜单
if ( hMenu != NULL )
::SetMenu( m_hWnd, hMenu );
//隐藏状态条
pStatus->ShowWindow(SW_HIDE);
//新窗体宽、高
CompactCx=WindowRect.Width();
CompactCy=WindowRect.Height() - ClientRect.Height() + ToolbarRect.Height() - borderHeight;
}
break;
case 2: //精简显示模式
{
//隐藏菜单
hMenu = ::GetMenu(m_hWnd);
::SetMenu( m_hWnd, NULL );
//隐藏状态条
pStatus->ShowWindow(SW_HIDE);
//新窗体宽、高
CompactCx=WindowRect.Width();
CompactCy=captionHeight + ToolbarRect.Height() + borderHeight*2;
}
break;
}
//设置新窗体显示
SetWindowPos( &wndTop, WindowRect.left, WindowRect.top, CompactCx, CompactCy, SWP_SHOWWINDOW);
}
以上部分代码具体实现的细节问题,可在下载实例代码后,仔细查看源码既可(内有详细注释)。
本文源代码下载
[] [
返回上一页
] [
打 印
] [
收 藏
]
上一篇技术:
VC++6.0中控制运行唯一实例C语言教程
下一篇技术:
在VC++下对文件属性的获取与更改C语言教程
∷相关技术评论
(评论内容只代表网友观点,与本站立场无关!) [
查看发表评论
...]
站内广告
站内搜索
技术教程
教育论文
课件下载
综合下载
教学教案
试卷试题
语文专题
FLASH搜索
网页搜索
栏目导航
·
C
·
Delphi
·
Java
·
vb
相关技术
·
Delphi中利用网页打
本月热门
·
语文教学论文集语文论文
·
毛泽东军事思想来源论略_
·
电子商务与物流_电子商务
·
建立科学有效的绩效管理体
·
浅谈小学一年级数学教学数
·
突围三农:求教马克思_经
·
锁定高效沟通管理_管理理
·
小学低年级识字教学浅谈语
·
音乐课应重视音乐欣赏 论
·
小学一年级语文数学试卷集
·
初中学生期末评语300条_班
·
德育“六化”_德育论文
·
试论旅游资源的开发与保护
·
“做个守纪律的学生”主题
·
如何创建学习型组织
本日热门
·
建立科学有效的绩效管理体
·
浅谈小学一年级数学教学数
·
小学低年级识字教学浅谈语
·
初中学生期末评语300条_班
·
国防科技与军事_军事论文
·
德育“六化”_德育论文
·
上好音乐欣赏课 论文
·
试论旅游资源的开发与保护
·
浅淡公共关系传播
·
锁定高效沟通管理_管理理
·
如何创建学习型组织
·
社交礼仪
·
全面预算发展趋势——战略
·
管理会计理论框架的研究_
·
图书馆管理系统_计算机应
关于本站
-
网站帮助
-
免费课件
-
美容
-
绿色软件
-
软件下载
-
广告合作
-
下载声明
-
友情连接
-
网站地图
-
网站留言
浙ICP备06010405号
Email:
cnkjz@163.com
技术支持:名流设计
版权所有 Copyright© 2002-2004