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

!!!急急!现在想把状态栏放大,里边的字也随之放大

编辑:说三道四文库 发布时间:2017-11-22 09:19
HTML文档下载 WORD文档下载 PDF文档下载
现在想把状态栏放大,里边的字也随之放大!
我用的是VC6.0,我在用GetWindowRect()得到了他的高度,但我却无法设置状态栏的高度,我在CStatusBar类里看到了int m_nMinHeight;但他是protected,是我无法访问的,还有OnSetMinHeight()是一个消息映射函数,我不知道在哪里凋用它。里边的字体在哪里设置啊?自己编程序?那就请帮我编好!!我的信箱crazyeagle@sina.com  明天急用  谢谢
我知道有一个方法可以:
    你在编辑状态栏资源的时候,把资源的图标拖大。显示出来的状态栏就是多大。
字体可以用SetFont()设置
try?
看来你是很急的!

写了一个测试工程!主要的实现代码如下所示
个人感觉到基本上满足了你的要求!
代码已经发到你的信箱
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);
//force the frame to redraw noclient zone!
pFrame->SendMessage(WM_SIZE,0,0);
}
谢谢
循环控制-C语言教程 数值数组-C语言教程 字符数组-C语言教程 函数(上)-C语言教程 函数(下)-C语言教程 预处理命令-C语言教程 C语言指针(上)-C语言教程 C语言指针(下)-C语言教程 结构体与共用体-C语言教程 位运算-C语言教程 文件处理-C语言教程 谭浩强C语言教程 C语言创建链表并实现插入、删除数据 C语言中队列Queue的操作 C语言实现堆栈stack操作 C语言建立和遍历二叉树 C语言冒泡排序法演示代码 C语言实现堆排序(Heap Sort) jQuery Ajax以JSON格式传递结果数据 微软称为WP8开发的应用不兼容WP7手机 WP8开发者必读 关于WP8开发者程序开发语言选择倾向的问题 强大的C#随机字符串生成器 C#上传文件到WEB服务器 WebClient的超时设置 MySQL备份脚本大全 c#对rar或zip文件进行压缩解压缩 c#采用递归非递归两种方式遍历目录下所有文件 使用DataContractJsonSerializer进行JSON序列化的JSONHelper类 宏病毒ToDOLE及专杀工具 如何构建和运行基于cocos2d的HelloWorld程序 请教无标题窗口怎么移动?? 听同学说用一个按钮可以实现后退两页的,那么三页也可以实现吧,怎样写? 用hibernate 如何实现分页 我不太明白这些版本控制到底最大的好处是什么? 程序运行时实时变量出错? 各位老兄,请问在java中怎么解决这样<Node Name="N1" Value="1" />的XML 哪有winamp3的“汉化补丁”,源程序我有 使用CSocket类时出现访问冲突 庆祝网站初建:一般的界面,实用的文章例子,欢迎大家参观我的网站http://vcp4.51.net 帮帮小弟吧~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 请教各位大侠:VFP中SQL语言应该怎么学?? 如何自行编写一个自释放的EXE文件?,分不够,可另开恭送 dll卸除时 我要做一些收尾工作 代码要写在哪里?? 请教各位大侠:VFP 中的程序应该怎么学???谢谢指教!! 如何修改Canon BJ-4650打印机驱动程序,实现A3纸的加长打印? 心语 使用ODBC连接MySQL数据库时在stderr处有错误输出 这样的函数名怎么调用 大家能说说你们看过的最吓人的恐怖片是哪一部么?欢迎讨论! WIN2K问题 怎样解决这个问题 两个很菜的问题,在线等待 我不能在WSADV5中显示JSP页面? 鼠标检测问题 仅运行一次的实例,如何分别打开多个文件? 一些对asp.net的编译问题,乞望大虾回答。 初学者问题,请各位高手教教我! 通过ODBC传输大容量数据时出错 一个小的测试:求1+2+……+100的和,写出你的程序! 谁有不错的JAVASCRIPT的电子教程? 请教各位大侠:TurboC的数组方面的题 请问为什么我这个实现不了旋转? 送分给高手,请进:关于组件注册的问题? 对于您可能这仅是一个小问题,急求助! 如何收集一堆的单选框的值 关于一个程序的想法,高手进来给点建议! QQ与手机(没分给) 关于音量控制的问题 如何获得SMTP服务器的IP地址 C语言的图形系统设计 怎样屏蔽TStringGrid中的方向键?请指点。先谢了! 我找了10天了,也没找到答案 关于vb.net中文本框的字体, 请赐教 请问怎样实现在发邮件时,添加附件的时候 一点“Browser”按钮,找到您所要粘贴的附件文件: 然后立刻粘贴在左边的框上?? 有谁装过phpnuke???我遇到了问题 关于控件大小的问题!!!!急盼回复!!! 2003有什么关机软件? 如何点击文字实现选中文字后面的单选框 如何判断目录 或文件 存在??? C语言编写的应用程序的平台问题 怎样用代码锁定窗体? 尴尬了,谁知道“移平易近”是什么意思?今天看新闻,突然发现移平易近这个词,百度不得其解,请高人点拨. 三角函数 一共八题.打钩的一共八题。打钩的。分不够了,都是计算题。 已知f(x)=ax+b(a≠b)g(x)=1/cx+d(c≠0)f[g(x)]=x/x-2g[f(x)]=1/2x-1 则abcd_______ “更喜岷山千里雪,三军过后尽开颜.”表达了毛泽东同志怎样的思想感情? 英国资产阶级革命的意义不在于( )A.是世界上第一次资产阶级革命B.是人类历史上资本制度对付封建制度的一次重大胜利C.为英国资本主义的迅速发展扫清了道路D.揭开了资产阶级革命的序幕, 三个“古”字垒起来念什么?` 急求对钩函数的在线视频, 求一句对偶的话上句要有中国和腾飞,下句要有文明和苏州 求一句对仗的话、关于有点面对失败的 15.16怎么写七年级数学有答必赞 15,16题,求解,七年级数学 环球时报:决不让暴恐分子制造社会隔阂土耳其已否决“采购中国红旗导弹”的早\"三无领袖\"安倍疯言疯语录美国全球监控地图曝光:中国5大城市成美卫生部长为医改网站故障道歉美曾要日修宪 日30多年前本可制核武奥巴马再提名支持者当大使日韩拟下月再谈情报协定乔布斯儿时故居成历史遗迹“安倍经济学”谁喜谁忧?韩国议员访问朝鲜开城工业园 关系回暖武汉园博园周边 建四条花街电工师傅路边作业被撞伤雄楚大道高架梅家山至关山大道贯通假中医打着国家卫计委旗号行骗蔡甸一村支书上班时间带彩娱乐取消路面车位,要解决“车往哪儿去”高速路上避让轮胎翻了车【新闻早知道】法国今日鉴定疑似MH3原标题:俄总统新闻秘书说俄从未考虑向原标题:纽约爆发致命军团菌病 已致7【新闻早知道】法国今日鉴定疑似MH3
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘