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

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

编辑:说三道四文库 发布时间:2017-09-26 06:28
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);
}
不要责怪开源技术 它是无辜的 短命:微软将于2014年停止对WP8系统支持 Native和Web过时了,企业级移动开发流行用Hybrid App 与EverNote竞争?谷歌Google Keep浮出水面 又一次跨越:著名3D游戏引擎Unity版本更新 Feedly团队:自研后端平台或将开源 StackMob的诱惑:16小时,山寨一款移动App “云”筹帷幄 开发者必知的5大SaaS在线服务工具 超350个政府项目托管在GitHub 政府开源会成主流? Kinect for Windows SDK 1.7正式发布,支持3D建模 SafeNet与风河系统联手推出VxWorks嵌入式系统软件货币化方案 Windows Server 2012中的动态负载均衡 Google等互联网公司将成为创新中心? 在Hadoop的战争中 MapR获新一轮3000万美元融资 初创公司DNNresearch:谷歌科技帝国的新“基石” 创业了,我们该如何起名? 乐视网联手富士康推新盒子C1S “0+290元”新浪微博发售 吸引开发者:只要开发新应用 微软便奖100美元 PaintCode - 将矢量图转化为Objective-C代码的开发神器 苹果发布iOS 6.1.3 封杀evasi0n越狱所用漏洞 [API快讯] Google开放实时协作API 58同城开源轻量级Java Web框架 Argo 初创公司AppNeta:4轮融资,4780万美元 MongoDB释放2.4版本:692更新及8大得意之作 十年6亿美元!Amazon云计算喜获CIA大单! 国人当自强:HTML5+联盟首次筹备会成功举行 开源框架TAAE发布 快速打造iOS音频应用 如何学会600多种编程语言 “第五届中国云计算大会”将于2013年6月5-7日在京召开 Ridiculous Fishing:游戏遭遇山寨如何一雪前耻 老游戏的今天:Doodle Jump每周进账2万美元 查一个有关截取字符串的函数 在VS.NET中怎么查看一个服务器控件所支持的事件? 编程时遇到的3个小问题,急,在线等马上给分! 可以实现颜色渐变条背景吗? 请问如何完全编译程序?(30分相送)急!急!急! 一个聊天机器人的编程思想(JAVA)!300分!言而有信! 新手问题 请各位指教一个运行程序出错!调试完给分! 关于速达财务的问题 怎么样改变一个控件的颜色? 在VC里用STL的话,如何实现类的序列化..如果不用STL呢 去除字符 我打开帖子后,显示的字体是楷体,看不清楚,请问是怎么回事,怎么改过来? 技术难题,希望大家帮忙解决,谢谢。 c加上API编程 遇到的问题??? 在mainfram中增加了一个dialog(CG_IDD_SEARCH),对应变量 m_Search 我不知道这是什么错误? 请问C#中如何截取字符串最左边n位? 在插件的dll中生成activeX控件,但我在创建控件的时候出错! 为何我在一个程序中使用Dim tbs As Connection,可以使用tbs.Open,在另一程序中 谁能给B/S和C/S结构下一个清晰的定义?? 请大家从深层次谈谈“非典”对软件公司的各方面影响。 我该怎么办?有道理的给分。 晕了,安装MS SQL SERVER2000的时候,界面停在MSDTC就不动了,怎么回事情? 有谁用过adobe的生成pdf文件的java package???? 如何往串口的发送脚送出一个持续10ms的低电平? IIS6中文件上传程序为何只能传小于200K的文件? 在win中删除了桌面快捷方式,怎么恢复??求助! 大虾们图书管理系统中图书与管理员表到底要不要建关系 请教模糊查询,!!!!! 怎么样用asp实现阴历的查询??? 请高手赐教!! 大家帮忙:为什么我在调试程序时不能跟踪进入VCL的方法代码? JSP调用session的问题? ....同一用户不能同时在线两次的完整解决方法......在线等 批量数据提交 cqzyf 接分 1 问个VC6.0里面的1个小问题! 怎样使一个按钮成为默认按钮? 小问题,高分请教用滑动条制作的调色板问题。 在Asp怎样连接Access数据库? 跳线 高分求DELPHI4.0中的哪个做安装程序的工具,只要这个版本的! 难道是Delphi6的Bug吗?还望遇到过这样问题的大哥多多指教! 怎样实现要最新的信息? 一个疑惑的问题? 此觸發器該如何寫 关于数据库更新的问题!帮帮忙,50分就是你的啦! easy问题送大分,DLL中的资源,马上结贴 菜鸟刚学vc.net,新建了一个dialog based,只有一个窗体,我在窗体上放一个按钮,这就是我的程序了,运行之后生成了可执行文件,我把他拷 不明白交换机的网管功能? 金正恩接见朝鲜第267部队 感谢该部万圣节怎么过?经典日本恐怖片让你吓破人品爆发!美国男子中611万后仅隔两“甲壳虫”乐队主唱列侬儿时故居48万美国承诺不再窃听联合国 对此前传闻不中国—东盟能源合作进入“零关税”时代中国驻圣彼得堡总领事和留学生谈梦想中国军方就日舰闯入我演习区提出严正交日本发现一种化合物可预防糖尿病等疾病全球发展中国家每年新增200万名15国防部回应安倍抗衡中国言论:不自量力澳大利亚利用“特等舱”为美国搜集亚太我军2名专家将赴叙利亚执行化学武器销埃塞俄比亚“中国通”总统:中国值得埃“中国周”活动走进墨西哥高校国防部就日舰机闯入我演习区干扰演习提野田:小泉时代便开始探讨“购买”钓岛我军2名专家将赴叙利亚执行化学武器销日方渲染“中国威胁”旨在为扩充军备制陈昌智会见缅甸联邦议会代表团中国赴马里维和部队准备工作就绪揉破黄金万点轻你真的「识字」么?重识文化之根 --果酸护肤知识 护肤亦能伤肤我们才不叫「xx段子集锦」这么庸俗的不只是免费打电话 -- 一块「Z实用病毒性面瘫原因想和这个世界谈谈?等牛逼了再说~移动支付又添新军,Facebook也[高清范原创]智能电视/盒子有无牌照【京车汇】成都店开业,,第六波优惠火苹果 iPad Air 2 预览小米4c确定9月22日发布 5英寸/西湖减少长凳为恋人留私密空间 源于习福利!习大大访美受益股详细分析!人家不可以吃好咩丨芝士全家桶三星入门 4G 机 Galaxy C熬夜的人们怎样保养皮肤才能年轻?趣说三农(6)| 王征兵:我和村官那专访腾讯数据平台部总经理蒋杰:腾讯数骁龙410/骁龙210出货量很猛 新人民币在国际化中迈出一小步
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘