说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

如何把状态栏放大,里边的字也随之放大!

编辑:说三道四文库 发布时间:2017-11-20 12:21
HTML文档下载 WORD文档下载 PDF文档下载
我用的是VC6.0,我在用GetWindowRect()得到了他的高度,但我却无法设置状态栏的高度,我在CStatusBar类里看到了int m_nMinHeight;但他是protected,是我无法访问的,还有OnSetMinHeight()是一个消息映射函数,我不知道在哪里凋用它。里边的字体在哪里设置啊?是否需要自己编程序?那就请帮我编好!!谢谢
upup
too much
自己写一个状态栏的类就可以了。
看来你是很急的!

写了一个测试工程!主要的实现代码如下所示
个人感觉到基本上满足了你的要求!
代码已经发到你的信箱
itanynj@msn.com
南京
宋业文
----------------------------------------

//custom the personal statusbar in child frame
static UINT indicators[]=
{
ID_SEPARATOR,
ID_INDICATOR_X,//"x=0000"
ID_INDICATOR_Y//"y=0000"
};

/////////////////////////////////////////////////////////////////////////////
// CChildFrame message handlers

int CChildFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
if (CMDIChildWnd::OnCreate(lpCreateStruct) == -1)
return -1;

// TODO: Add your specialized creation code here

//create the child frame status bar with default font size :6
if(!this->m_wndStatusBar.Create(this,WS_CHILD|WS_VISIBLE|CBRS_BOTTOM,IDW_CHILD_STATUSBAR)
||!this->SetStatusBarFont(&this->m_wndStatusBar)||!this->m_wndStatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create the status bar!\n");
return -1;
}

//initialize the pane to show nothing at the beginning
int iCount=this->m_wndStatusBar.GetCount();
for(int i=0;i<iCount;i++)
this->m_wndStatusBar.SetPaneText(i,NULL);

//no need to call the SetMinHeight() function to set the height of statusbar
//because of status bar will adjust the height to fit the height of its font!
//this->m_wndStatusBar.GetStatusBarCtrl().SetMinHeight(20);   
return 0;
}

CStatusBar* CChildFrame::GetChildStatusBar()
{
ASSERT(::IsWindow(this->m_wndStatusBar.m_hWnd));
return &this->m_wndStatusBar;
}

BOOL CChildFrame::SetStatusBarFont(CStatusBar *pStatusBar,int nFontSizes)
{
ASSERT_VALID( pStatusBar );
//1-prepare to clear the prev font
if(this->m_StatusBarFont.GetSafeHandle()!=NULL)
{
this->m_StatusBarFont.DeleteObject();
}
// 2 - Create font
// Initializes a CFont object with the specified characteristics. 

VERIFY(m_StatusBarFont.CreateFont(
 nFontSizes*5,                        // nHeight
 0,                         // nWidth
 0,                         // nEscapement
0,                         // nOrientation
 FW_NORMAL,                 // nWeight
FALSE,                     // bItalic
FALSE,                     // bUnderline
0,                         // cStrikeOut
ANSI_CHARSET,              // nCharSet
   OUT_DEFAULT_PRECIS,        // nOutPrecision
   CLIP_DEFAULT_PRECIS,       // nClipPrecision
   DEFAULT_QUALITY,           // nQuality
   DEFAULT_PITCH | FF_SWISS,  // nPitchAndFamily
   "Arial"));                 // lpszFacename

// 3 - Set status bar font
pStatusBar->SetFont( &m_StatusBarFont );
return TRUE;
}

CFont& CChildFrame::GetFontSize()
{
return this->m_StatusBarFont;
}
-----------------------------------
void CMdiStatusBarView::OnMouseMove(UINT nFlags, CPoint point) 
{
// TODO: Add your message handler code here and/or call default
CChildFrame *pFrame=(CChildFrame*)(this->GetParentFrame());
CStatusBar *pStatusBar=pFrame->GetChildStatusBar();
int index_x=pStatusBar->CommandToIndex(ID_INDICATOR_X);
int index_y=pStatusBar->CommandToIndex(ID_INDICATOR_Y);

CString str;
str.Format("x=%4d",point.x);
pStatusBar->SetPaneText(index_x,str);

str.Format("y=%4d",point.y);
pStatusBar->SetPaneText(index_y,str);

CView::OnMouseMove(nFlags, point);
}

void CMdiStatusBarView::OnSizeSmall() 
{
// TODO: Add your command handler code here
CChildFrame *pFrame=(CChildFrame*)(this->GetParentFrame());
CStatusBar *pStatusBar=pFrame->GetChildStatusBar();
pFrame->SetStatusBarFont(pStatusBar,8);

CClientDC dc(pStatusBar);
CFont *pOldFont=dc.SelectObject(&pFrame->GetFontSize());
TEXTMETRIC tm;
dc.GetTextMetrics(&tm);
//update the width of status bar
int iCount=pStatusBar->GetCount();
for(int i=0;i<iCount;i++)
{
CString str;
str=pStatusBar->GetPaneText(i);
pStatusBar->SetPaneText(i,str);
int nID=pStatusBar->GetItemID(i);
UINT nStyle=pStatusBar->GetPaneStyle(i);
str.Format("x=0000");//max size
CSize size=dc.GetTextExtent(str);
pStatusBar->SetPaneInfo(i,nID,nStyle,size.cx);
}
dc.SelectObject(pOldFont);
//false the frame to redraw noclient zone!
pFrame->SendMessage(WM_SIZE,0,0);
}
LG再战平板市场:将推出8.3英寸平板G Pad 编程语言与工具专题论坛:各类编程语言使用体会分享 淘宝、腾讯、豆瓣、支付宝、网易专家热议大数据分析与BI实战 “创新或灭亡”:Google的80/20只是转移视线的说辞罢了 自动化编排,配合SDN的iMC V7更加开放 [回顾]比尔&#183;盖茨传奇的前半生 IT基础设施与运维论坛:IT基础设施及运维经验分享 记华为HCC2013 Day1:发力高端存储 HCC 2013虚拟化论坛:虚拟化未来发展方向 Windows 8操作系统市场份额增至7.41% Windows 7仍最受欢迎 【开源专访】Sea.js创始人玉伯的前端开发之路 SDCC 2013:阿里周宝方谈“去IOE”战略及实施 百度和高德:最后谁是地图的王者? 【CTO论道】瑞智和康CEO陶建辉:软硬结合是消费电子新潮流 10大高效率原型设计工具 JIRA与敏捷:李小龙教给我们的敏捷开发之道 百度开放云:Light Up The World,与开发者共享云未来 有胆你就来!11个在线编码大赛 CTO如何避免决策失控:第一步-定义角色 后机械硬盘时代,那些引领风骚的闪存初创公司 致远文杰:传统企业如何实现移动化转型? 记华为HCC2013 Day2:SDN开放编程系统OPS打造生态圈 HCC2013:华为FusionCube融合至简,性能至优 已确认Stephen Elop候选微软下任CEO 英语对于软件开发者来说到底有多重要? SDCC 2013中国软件开发者大会成功落幕 新浪微博宋琦:PHP在微博优化中的“大显身手” 8月份浏览器份额:IE浏览器PC端出现反弹 移动端跌出前五 如何让Ruby项目速度提升10倍 跨平台进行到底:Facebook发布Unity SDK 云薪资管理初创公司ZenPayroll:年处理薪资超1亿美元,获多位知名CEO力挺 请教各位高人应该如何实现这样一个功能的自定义标签? 难题,如何把二维数组传给函数 关于在datagrid中超链结和 pager问题,有耐心和热心的人请帮我看看 我是学php的. 大家来讨论一下C# 和Java ,回贴均有分!! DB2的自增型变量怎么设?? 我是学php的. 谁可以讲解一下telnet的工作原理????? 狂人语录 那有BOCHS的中文帮助 在server2003操作系统下使用sql server2000 的问题 各位大侠 请问如何在C/s 下Windows程序中 找一个控件 100分 朋友! 关于英文版VC6的问题 请大师指点ASP中unicode to ansi 的问题 richtext中RtfText的内容如何编辑?200分,解决问题另外奉送! 即将前往恒生面试,大家帮我看看需要准备什么. 那有BOCHS的中文帮助 phoenix7789请回答!!!^_^ 我在装Report Machine控件时,Delphi提示我找不到RXGIF.duc,谁在给我一个? 肤色检测的问题,急!!! 如何对asp.net的程序进行加密 用datagrid问题,总是提示列键信息不足或不正确,更新影响多行, 大家来讨论一下C# 和Java ,回贴均有分!! 请问一个sql语句写法问题,100分!!!在线等待 谁能给我一点写网站制作方面投标书或者详细方案 wsad5 怎么连上ORACLE数据库啊 并非复古——关于微内核模式ASP开发框架的讨论,欢迎高手进入! 那有BOCHS的中文帮助 我愿送500分求解JAVA问题!!!!!! 关于frame里面的参数传递问题,火急 find函数的问题,请各位老兄帮忙 请问这个链接怎么写? 用xsl将xml转成html提示.... 为什么看不到邻近计算机? 关于浏览器的自定义工具栏! 无法打开web项目bbs 请告知可以下载Domino数据库安装文件和Lotus Notes的网址!在线等 我的ie6无法加载applet,请教解决方法! 如何用ASP写关闭当前窗体的代码? 用xsl将xml转成html提示.... sqlserver数据库怎么和应用程序一起打包? 一个困惑的问题,高手和有耐心的人请进! 实现要求是:对一个用来保存文件的richtext域如何创建一个代理,以实现每天固定一个时间从服务器/本地的一个固定目录下获取一个更新的文 关于数据库导入导出的问题 请问:提交表单后,把参数传到一个新弹出的页面,要求此页面没有“标准按钮”“工具栏”“地址栏”而且固定窗口大小,且不能最大化,如何 求助于高手:Tab Control控件如何使用? 组件通过鼠标移动 求助 sniffer 紧急!帮忙啊!如何获得使用<div class="test" id="mydiv"> ...</div>定义的对象 哪儿找ORACLE8i 9i for x86solaris? 关于 平泉三年大变样的作文文体不限 字数约600字散文1500字左右 围绕平泉三年大变样,成为国际旅游城市 主题为四大一推一建 问一下成功的花儿的填空 文言文故事改写唐代孟棨《本事诗》载:“李太白初自蜀至京师,舍于逆旅,贺监知章闻其名,首访之,既奇其姿,复请所为文.出《蜀道难》以示之.读未竟,称叹者数回,号为‘谪仙’,解金龟换酒, 某地电话拨号上网有两种方式收费,用户可以任选其一:(A)计时制:0.05元/分钟 (B)包月制:60元/月(1)一个用户某月上网时间为X小时,请你写出两种收费方式下用户应该支付的费用.(2 改写文言文《三峡》要求:改变人称、文体. 甲乙修一条公路,如果甲队单独施工,刚好如期完成,如果乙单独施工就要超过6个月才能完成,现在甲乙两队先共同施工4个月,剩下的由乙队单独施工,则刚好如期完成,问原来修好这条公路需要多 Be a clever consumer先来和准确的采纳 Clara wants to be clever in class.的意思 你情深似海却不肯为我而蓝,接下句, 一项工程,甲单独要6天完成,已单独要8天完成,两队合作1天完成这项工程的多少?...谁知道啊 一项工程甲单独要做8天完成,乙单独做每天完成1/6,两队合作 天完成这项任务 俄罗斯期待格鲁吉亚新政权对俄友好“美丽中国”图片展在莫斯科举行英国遭遇“飓风级”风暴 已造成至少两美国工业生产9月环比增长0.6%空客呼吁采用经济舱座椅宽度新标准部分城市难完成房价控制目标 四季度楼大学教授称北京房价会涨到每平方米80西班牙外交部召见美国大使 要求其解释\"鞠躬人\"亮相朝韩边界 寓意鞠躬欧盟称将向叙利亚提供8500万欧元人西班牙称监听行为无法接受 敦促美国提三年如一日 社区“代购王”热心助邻中国女排两连胜两万多人次老公向老婆借5000元生活费解决生产生活“出路”7月份我国CPI同比上涨2.3%熟食用油“一个月不换”赵兰:成都冲甲 没有退路欢乐谷色彩狂欢Party开启宝马广丰广本宣布下调零部件批发价走过哀恸,走向新生
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘