菜单,工具栏,状态栏

                  mfc框架为我们提供了默认的菜单和工具栏,我们如果要删除默认的菜单栏,可以在

CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)函数中添加

       this->SetMenu(NULL); //取消程序当前菜单 CMenu menu; menu.LoadMenu(IDR_MENU1); //加载我们新插入的菜单项 this->SetMenu(&menu); menu.Detach(); //将CMENU对象和菜单句柄分离

 

 

CMainFrame类中的这些代码创建了工具栏,

      创建工具栏 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(IDR_MAINFRAME)) { TRACE0("Failed to create toolbar/n"); return -1; // fail to create } m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);设置工具栏的停泊方式 EnableDocking(CBRS_ALIGN_ANY); 允许工具栏停泊 DockControlBar(&m_wndToolBar); 停泊工具栏   

我们如果想创建自己的工具栏,也可以根据上面的思路,先声明一个CToolBar对象,然后创建一个工具栏,向工具栏中添加一个子项,如果想让工具栏可用,工具栏子项的id必须和菜单的id相同。。。。

         状态栏中有一个状态指示器,结构如下

    static UINT indicators[] =
{
 ID_SEPARATOR,      用户设置要显示的内容    

 ID_INDICATOR_CAPS,  caps lock状态
 ID_INDICATOR_NUM,   num lock状态
 ID_INDICATOR_SCRL,   scroll lock状态
};

 

  指示器数组里面的元素实际上是字符串资源,用户想编写自己的状态栏,需要添加自己的字符串资源。

 

 

   CStatusBar的SetIndicators可以设置状态栏的指示器,CStatusBar的create的函数可以在指定窗口创建一个状态栏。

    mfc在oncreate函数中创建了状态栏,代码如下:if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failed to create status bar/n"); return -1; // fail to create }

 

 

 

int CommandToIndex(
   UINT nIDFind 
) 函数可以根据格子的id,也就是字符串资源的id获得格子索引
 
void SetPaneInfo(
   int nIndex,
   UINT nID,
   UINT nStyle,
   int cxWidth 
);可以根据指定索引修改格子的style
   
BOOL SetPaneText(
   int nIndex,
   LPCTSTR lpszNewText,
   BOOL bUpdate = TRUE 
);可以根据索引修改格子显示的文本内容
   
 

你可能感兴趣的:(菜单,工具栏,状态栏)