MFC教程(13)-- MFC工具条和状态栏(1)

  MFC教程(13)-- MFC工具条和状态栏(1)
<script language="javascript" src="http://tech.ddvip.com/a_dir_d/title_bottom.js"></script> 3G双线全能空间1元认购 开网店-找友创互联

http://tech.ddvip.com   2007年03月18日    社区交流

<script src="http://tech.ddvip.com/a_dir_d/ad_title_bottom.js"></script>

本文详细介绍MFC教程(13)-- MFC工具条和状态栏(1)

<script language="javascript" src="http://tech.ddvip.com/a_dir_d/ads_250x250.js"></script><script type="text/javascript"> </script> <script style="display: none;" type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

   在窗口被放置的时候,发送消息WM_WINDOWPOSCHANGING和WM_WINDOWPOSCHANGED。MFC的实现中,控制窗口响应了前 一个消息,消息处理函数是OnWindowPosChanging。CControlBar、CToolBar和CStatusBar等实现了消息处理函 数OnWindowPosChanging。

  上述处理过程所涉及的这些函数中,RecalcLayout是CFrameWnd定义的虚 拟函数;RepostionBars是CWnd的成员函数;CalcaWindowRect是CWnd的虚拟函数;OnSizeParent是 CControlBar定义的消息处理函数;OnWindowPosChanging是CToolbar、CStatusBar、CDockBar等 CControlBar派生类定义的消息处理函数。

  下面,对其中两个函数RecalcLayout和RepositionBars作一些分析。

  CFrameWnd的虚拟函数RecalcLayout

  RecalcLayout的实现如下:

void CFrameWnd::RecalcLayout(BOOL bNotify)
{
//RecalcLayout是否正在被调用
if (m_bInRecalcLayout)
return;
m_bInRecalcLayout = TRUE;
// clear idle flags for recalc layout if called elsewhere
if (m_nIdleFlags & idleNotify)
bNotify = TRUE;
m_nIdleFlags &= ~(idleLayout|idleNotify);
//与OLE相关的处理
#ifndef _AFX_NO_OLE_SUPPORT
// call the layout hook -- OLE support uses this hook
if (bNotify && m_pNotifyHook != NULL)
m_pNotifyHook->OnRecalcLayout();
#endif
//是否包含浮动(floating)控制条的边框窗口(CMiniFrameWnd类)
if (GetStyle() & FWS_SNAPTOBARS)
{
//计算控制条和边框窗口的位置、尺寸并设置它们的位置
CRect rect(0, 0, 32767, 32767);
RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST, reposQuery,
&rect, &rect, FALSE);
RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST, reposExtra,
&m_rectBorder, &rect, TRUE);
CalcWindowRect(&rect);
SetWindowPos(NULL, 0, 0, rect.Width(), rect.Height(),
SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOZORDER);
}
else
//是普通边框窗口,则设置其所有子窗口的位置、尺寸
RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST,
reposExtra, &m_rectBorder);
//本函数处理完毕
m_bInRecalcLayout = FALSE;
}

  该函数主要的目的是调用RepositionBars函数,它分两种情况来调用RepositionBars函数。一种情况是当前边框窗口为浮动控制条的包容窗口(微型边框窗口)时;另一种情况是当前边框窗口为普通边框窗口时。



关于RepositionBars_百度知道
RepositionBars( UINT nIDFirst, UINT nIDLast, UINT nIDLeftOver, UINT nFlag = reposDefault, LPRECT lpRectParam = NULL, LPCRECT lpRectClient = NULL, BOOL bStretch = TRUE ); 请问此函数的7个参数每个是什么意思,应该如何用?谢谢! ...
zhidao.baidu.com/question/42116613.html 16K 2008-9-27 - 百度快照

CWnd::RepositionBars (MFC)
ReferenceCWnd::RepositionBars Called to reposition and resize control bars in the client area of a window. void RepositionBars( UINT nIDFirst, UINT nIDLast, UINT nIDLeftOver, UINT nFlag = reposDefault, LPRECT lpRectParam = ...
msdn.microsoft.com/zh-cn/k9y0zwe6(VS.80).aspx 11K 2008-7-5 - 百度快照

在对话框中加入工具条与 RepositionBars的调用_SEED
根据上面的代码运行与调试结果来看,所谓的RepositionBars函数就是将ID值在AFX_IDW_CONTROLBAR_FIRST与AFX_IDW_CONTROLBAR...或当创建了工具栏的时候,通过RepositionBars函数将工具栏显示出来.除框架类之外,客户区不包含工具栏,另外还要注意屏幕...
hi.baidu.com/xiaochao_17/blog/item/0d6384 ... 23K 2008-2-26 - 百度快照
hi.baidu.com 上的更多结果

有关CWnd::RepositionBars的问题 VC/MFC / 基础类 - CSDN社区 co...
我使用了RepositionBars函 数,现在不知参数具体定义,希望能详细给出值,或用其他方法改变dialogbar的尺寸,位置 Top 3楼jiangsheng(蒋晟.Net[MVP])回复于 2001-09-07 19:27:05 得分 0 位置用DockControlBar就行,但是大小就不知道怎么改了。...
topic.csdn.net/t/20010907/11/276283.html 13K 2006-10-25 - 百度快照
topic.csdn.net 上的更多结果

反馈: In VS2008, RepositionBars(), _AfxGetDlgCtrlID(hWndChil..
RepositionBars(), _AfxGetDlgCtrlID(hWndChild) returns invalid ID when hWndChild points to a non-MFC window. ...RepositionBars(“../Microsoft Visual Studio 9.0/VC/atlmfc/src/mfc/wincore.cpp”) void CWnd::RepositionBars(...
connect.microsoft.com/VisualStudio/feedba ... 39K 2008-10-22 - 百度快照

RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_L..
问题:RepositionBars(AFX_I? 这一句WHAT意思? RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0...br,AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,RepositionBars,HAT意思 相关问题 ·weblogic配置"? 我来回答 ...
www.softwelt.com/Know/KnowDetail-2825808.html 15K 2008-10-16 - 百度快照

RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_L..
AFX_IDW_CONTROLBAR_LAST, 0);楼主page10()2005-06-08 17:34:50 在 VC/MFC / 界面 提问 这一句WHAT意思? RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0); 其中 AFX_IDW_CONTROLBAR_FIRST AFX_IDW_...
www.80diy.com/home/20050608/17/4068758.html 3K 2007-9-1 - 百度快照

MFC控制条窗口布局原理(上) - .net - CSDN技术中心
好了现在我们进入了整个重布局动作的主体函数RepositionBars,让我们仔细分析一下它都干了些啥见不得人的“勾当”(这个...(回到RepositionBars,当nFlags为reposQuery时,并不调用BeginDeferWindowPos,故而AFX_SIZEPARENTPARAMS::hDWP就一定是NULL),...
dev.csdn.net/author/codewarrior/4329a921e ... 48K 2008-8-31 - 百度快照

MFC窗口位置管理详细分析及实例程序设计 - VC专栏 - 编程技巧_中...
CFrameWnd类是如何调用RepositionBars函数的 前面介绍了RepositionBars的各个参数和意义,现在看看CFrameWnd类是如何调用这个...RecalcLayout里调用RepositionBars函数的。该类保证了在窗口尺寸发生变化时函数RecalcLayout都被调用,从而RepositionBars函数也...
www.4oa.com/Article/html/ ... /16182_3.html 31K 2008-9-9 - 百度快照

MFC教程(13)-- MFC工具条和状态栏(1)(12) - MFC教程 -...
下面,对其中两个函数RecalcLayout和RepositionBars作一些分析。 CFrameWnd的虚拟函数RecalcLayout RecalcLayout的实现如下:void...该函数主要的目的是调用RepositionBars函数,它分两种情况来调用RepositionBars函数。一种情况是当前边框窗口为浮动控制条的...
tech.ddvip.com/2007-03/117415946421641_12 ... 19K 2008-9-14 - 百度快照
tech.ddvip.com 上的更多结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值