首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

VC2008中怎么让停靠窗口不浮动,不能拖动

2012-03-24 
VC2008中如何让停靠窗口不浮动,不能拖动工程生成的CClassView类和CFileView类都继承自CDockablePane类,我

VC2008中如何让停靠窗口不浮动,不能拖动
工程生成的CClassView类和CFileView类都继承自CDockablePane类,我想让这两个窗口能够停靠,但不能浮动和随意拖动,代码里面应该如何设置,我研究了2个小时了,还是不行,麻烦各位帮忙,谢谢,在线等答案,元旦快乐!

[解决办法]
DockControlBar(&m_wndToolBar);
 把这个去掉就可以了 这个是单文档中的
[解决办法]
多文档的也有的啊。那个函数在MainFrame的OnCreat里面调用的。

[解决办法]
多文档的程序自动生成的时候在APP类的
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
函数里面有这样的代码
// TODO: 如果您不希望工具栏和菜单栏可停靠,请删除这五行
m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndMenuBar);
DockPane(&m_wndToolBar);
你找到这个代码
注释掉其中的第一行和第四行就可以了
下面是OnCreate自动生成的代码

C/C++ code
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){    if (CMDIFrameWndEx::OnCreate(lpCreateStruct) == -1)        return -1;    BOOL bNameValid;    // 基于持久值设置视觉管理器和样式    OnApplicationLook(theApp.m_nAppLook);    CMDITabInfo mdiTabParams;    mdiTabParams.m_style = CMFCTabCtrl::STYLE_3D_ONENOTE; // 其他可用样式...    mdiTabParams.m_bActiveTabCloseButton = TRUE;      // 设置为 FALSE 会将关闭按钮放置在选项卡区域的右侧    mdiTabParams.m_bTabIcons = FALSE;    // 设置为 TRUE 将在 MDI 选项卡上启用文档图标    mdiTabParams.m_bAutoColor = TRUE;    // 设置为 FALSE 将禁用 MDI 选项卡的自动着色    mdiTabParams.m_bDocumentMenu = TRUE; // 在选项卡区域的右边缘启用文档菜单    EnableMDITabbedGroups(TRUE, mdiTabParams);    if (!m_wndMenuBar.Create(this))    {        TRACE0("未能创建菜单栏\n");        return -1;      // 未能创建    }    m_wndMenuBar.SetPaneStyle(m_wndMenuBar.GetPaneStyle() | CBRS_SIZE_DYNAMIC | CBRS_TOOLTIPS | CBRS_FLYBY);    // 防止菜单栏在激活时获得焦点    CMFCPopupMenu::SetForceMenuFocus(FALSE);    if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||        !m_wndToolBar.LoadToolBar(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME))    {        TRACE0("未能创建工具栏\n");        return -1;      // 未能创建    }    CString strToolBarName;    bNameValid = strToolBarName.LoadString(IDS_TOOLBAR_STANDARD);    ASSERT(bNameValid);    m_wndToolBar.SetWindowText(strToolBarName);    CString strCustomize;    bNameValid = strCustomize.LoadString(IDS_TOOLBAR_CUSTOMIZE);    ASSERT(bNameValid);    m_wndToolBar.EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize);    // 允许用户定义的工具栏操作:    InitUserToolbars(NULL, uiFirstUserToolBarId, uiLastUserToolBarId);    if (!m_wndStatusBar.Create(this))    {        TRACE0("未能创建状态栏\n");        return -1;      // 未能创建    }    m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));    // TODO: 如果您不希望工具栏和菜单栏可停靠,请删除这五行    m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);    m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);    EnableDocking(CBRS_ALIGN_ANY);    DockPane(&m_wndMenuBar);    DockPane(&m_wndToolBar);    // 启用 Visual Studio 2005 样式停靠窗口行为    CDockingManager::SetDockingMode(DT_SMART);    // 启用 Visual Studio 2005 样式停靠窗口自动隐藏行为    EnableAutoHidePanes(CBRS_ALIGN_ANY);    // 加载菜单项图像(不在任何标准工具栏上):    CMFCToolBar::AddToolBarForImageCollection(IDR_MENU_IMAGES, theApp.m_bHiColorIcons ? IDB_MENU_IMAGES_24 : 0);    // 创建停靠窗口    if (!CreateDockingWindows())    {        TRACE0("未能创建停靠窗口\n");        return -1;    }    m_wndFileView.EnableDocking(CBRS_ALIGN_ANY);    m_wndClassView.EnableDocking(CBRS_ALIGN_ANY);    DockPane(&m_wndFileView);    CDockablePane* pTabbedBar = NULL;    m_wndClassView.AttachToTabWnd(&m_wndFileView, DM_SHOW, TRUE, &pTabbedBar);    m_wndOutput.EnableDocking(CBRS_ALIGN_ANY);    DockPane(&m_wndOutput);    m_wndProperties.EnableDocking(CBRS_ALIGN_ANY);    DockPane(&m_wndProperties);    // 启用增强的窗口管理对话框    EnableWindowsDialog(ID_WINDOW_MANAGER, IDS_WINDOWS_MANAGER, TRUE);    // 启用工具栏和停靠窗口菜单替换    EnablePaneMenu(TRUE, ID_VIEW_CUSTOMIZE, strCustomize, ID_VIEW_TOOLBAR);    // 启用快速(按住 Alt 拖动)工具栏自定义    CMFCToolBar::EnableQuickCustomization();    if (CMFCToolBar::GetUserImages() == NULL)    {        // 加载用户定义的工具栏图像        if (m_UserImages.Load(_T(".\\UserImages.bmp")))        {            m_UserImages.SetImageSize(CSize(16, 16), FALSE);            CMFCToolBar::SetUserImages(&m_UserImages);        }    }    // 启用菜单个性化(最近使用的命令)    // TODO: 定义您自己的基本命令,确保每个下拉菜单至少有一个基本命令。    CList<UINT, UINT> lstBasicCommands;    lstBasicCommands.AddTail(ID_FILE_NEW);    lstBasicCommands.AddTail(ID_FILE_OPEN);    lstBasicCommands.AddTail(ID_FILE_SAVE);    lstBasicCommands.AddTail(ID_FILE_PRINT);    lstBasicCommands.AddTail(ID_APP_EXIT);    lstBasicCommands.AddTail(ID_EDIT_CUT);    lstBasicCommands.AddTail(ID_EDIT_PASTE);    lstBasicCommands.AddTail(ID_EDIT_UNDO);    lstBasicCommands.AddTail(ID_APP_ABOUT);    lstBasicCommands.AddTail(ID_VIEW_STATUS_BAR);    lstBasicCommands.AddTail(ID_VIEW_TOOLBAR);    lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2003);    lstBasicCommands.AddTail(ID_VIEW_APPLOOK_VS_2005);    lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_BLUE);    lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_SILVER);    lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_BLACK);    lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_AQUA);    lstBasicCommands.AddTail(ID_SORTING_SORTALPHABETIC);    lstBasicCommands.AddTail(ID_SORTING_SORTBYTYPE);    lstBasicCommands.AddTail(ID_SORTING_SORTBYACCESS);    lstBasicCommands.AddTail(ID_SORTING_GROUPBYTYPE);    CMFCToolBar::SetBasicCommands(lstBasicCommands);    return 0;} 

热点排行