您现在的位置是: 软件 > 开发者网络 > 程序方舟 > 开发专栏 > Visual C++开发 > 正文
·速成电脑精英(包分配)白领高薪一族从这里开始



-Java套接字编程(下)
-MediaStudio Pro 6.5教程
-三款卸载软件最新试用
-基于Visual C++的Winsock API研究

应用MFC开发高级应用程序
2001-11-22· ·苟建兵 ··pcvc.net

上一页  1 2 3 4 5 6 7 8 9 10 11 12 13  下一页


  1、窗口标题问题

  窗口标题本来不应该成为问题,缺省情况下MDI窗口通过在文档模板中提供的资源ID所提供的对应字符串来确定窗口标题。但是对于SDMV应用,由于各个视口实质上是对应于同一个文挡,因此每个视口都具有相同标题,只不过增加了一个数据用于指示这是第几个视口。如果在各个视口中指明具体的窗口名字,那么由不同的视口启动创建文档产生的窗口标题就不同,这个名字会影响到后继视口。为了作到不同类型的视口如棒图视口和曲线视口具有不同的标题,这就需要一定的技术处理。根据笔者的摸索发现可以采用如下步骤实现:

  首先在从标准的MDI子窗口基类CMDIChildWnd派生一个自己的子窗口类,姑且命名为CMyChild,然后在其成员变量中增加一个CString型变量用以存储当前窗口标题:

  CString winTitle;

  然后在不同的视口创建过程中通过获取父窗口指针按自己的意愿对上述变量进行赋值,程序片段如下:

pChild=(CMyChild*)GetParent();
pChild->winTitle="棒图显示窗口";

  最后在CMyChild派生类中重载CMDIChildWnd基类中的OnUpdateFrameTitle()函数来强制实现窗口标题的个性化,这一函数在各种类库手册上和联机帮助中都没有,但的确有这样一个具有保护属性的函数用来实现窗口标题的更新操作,这可以从MFC类库的源代码中找到该函数的实现。重载后的源代码如下:

void CMyChild::OnUpdateFrameTitle(BOOL bAddToTitle)
{
// update our parent window first
GetMDIFrame()->OnUpdateFrameTitle(bAddToTitle);

if ((GetStyle() & FWS_ADDTOTITLE) == 0)
return; // leave child window alone!

CDocument* pDocument = GetActiveDocument();
if (bAddToTitle && pDocument != NULL)
{
 char szOld[256];
 GetWindowText(szOld, sizeof(szOld));
 char szText[256];

 lstrcpy(szText,winTitle); //Modified by author!
 if (m_nWindow > 0)
  wsprintf(szText + lstrlen(szText), ":%d", m_nWindow);

  // set title if changed, but don't remove completely
  if (lstrcmp(szText, szOld) != 0)
   SetWindowText(szText);
  }
 }

上一页  1 2 3 4 5 6 7 8 9 10 11 12 13  下一页

【责任编辑:  】
【发表评论】【关闭窗口】
■ 相关内容
 MFC文件浏览程序中改变文件读写对话框样式
 COM中的可连接对象与连接点机制及其MFC程序实现
 在VC++6.0中用MFC进行COM编程
 在VC++中读写INI文件
 VC编程中如何在视图区显示工具提示
 金山WPS走出微软
 用VC++制作实时教学工程
 谈对话框的动画弹出和动画消隐
 VC编程实现IE风格的界面
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!