程序中工具条是可移动的。

解决方案 »

  1.   

    可以自己用个文本文件或者ini文件保存下来,下次启动的时候读取文件的值就行了其实保存到注册表当然也可以,但是最好是绿色软件,不要修改注册表了呵呵^_^
      

  2.   

    程序不会保存工具条的位置,你自己写代码得到工具条的位置,然后写进ini文件,等下次运行的时候再读出ini中的数据来决定工具条的位置。
      

  3.   

    得到工具条的位置用函数
    CWnd::GetWindowRect
    void GetWindowRect( LPRECT lpRect ) const;
    Parameters
    lpRect
    Points to a CRect object or a RECT structure that will receive the screen coordinates of the upper-left and lower-right corners.
    向一个CRect对象或RECT结构,用于接收左上角和右下角的屏幕坐标。 
    Res
    Copies the dimensions of the bounding rectangle of the CWnd object to the structure pointed to by lpRect. The dimensions are given in screen coordinates relative to the upper-left corner of the display screen. The dimensions of the caption, border, and scroll bars, if present, are included.这个函数将CWnd对象的边界矩形的大小拷贝到lpRect所指向的结构中。大小是用相对于显示器屏幕左上角的屏幕坐标给出的,其中包括了标题条,边框和滚动条的大小,如果有的话。
      

  4.   

    读写INI文件可以参考
    http://community.csdn.net/Expert/topic/3161/3161988.xml?temp=.9445459
      

  5.   

    是不是关闭程序的时候,把工具条的状态记录在一个字符串里,用下面两个函数之一保存在注册表
    CToolBarCtrl::SaveState
    void SaveState( HKEY hKeyRoot, LPCTSTR lpszSubKey, LPCTSTR lpszValueName );
    CToolBarCtrl::RestoreState
    void RestoreState( HKEY hKeyRoot, LPCTSTR lpszSubKey, LPCTSTR lpszValueName );打开程序的时候再通过读注册表得到上一次程序运行时的状态。对吗?
      

  6.   

    保留ToolBar状态     如果允许用户调整工具条的位置,那么在程序结束时记住用户的选择是不是更礼貌呢?这简单的不能再简单了,因为MFC的设计者已为你想好了,只要调用SaveBarState()和LoadBarState()就可以了。它们都是CFrameWnd类的成员,它们与几个文档中未列出的函数CDockState和CControlBarInfo一起工作在幕后。
        SaveBarState就在主框架的OnClose()中调用。它收集有关工具条的状态信息入其它与框架相关控件条的信息,然后将它们写进注册表里或INI文件中。这依赖于你在程序的InitInstance()函数中是否调用SetRegistryKey()。
        SaveBarState只保存位置信息,即工具条停靠在哪里或如果它是浮动的,其相对位置是多少。它不保存诸如按钮状态等与程序相关的信息,因为这些信息与特定的文档一致。同样工具条可能是浮动的或尺寸有所改动,因此既使用分辨不同,其与父框架的关系仍然相同。
        恢复工具条上一次的状态只需在OnCreate中所有控制条创建后调用LoadBarState()。表四列出了OnCreate的最后几行,和一个典型的OnClose()函数。向导会为你生成OnCreate,但你得用类向导来生成OnClose()。我选择Unicode字符串"Bars"作为主键,当然你可以随意。在具有多个框架的程序中,每一个框架应有一个唯一的键。表四:保存工具条状态 
    // final lines of OnCreate
    m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
    EnableDocking(CBRS_ALIGN_ANY);
    DockControlBar(&m_wndToolBar);
    LoadBarState(_T("Bars")); // key must match SaveBarState
    return 0;
    }void CMainFrame::OnClose() 
    {
    SaveBarState(_T("Bars")); // key must match LoadBarState
    CMDIFrameWnd::OnClose();////////////////////////////////////////////
    ////////////////////////////////////////////
    ///////////////////////////////////////////
    照着做了,不知为什么还是是没有效果。