天天看點

MFC 主界面的建立

先大題了解一下,項目開發的流程:先要有開發背景,然後做出需求分析,系統設計(說明系統的目标,系統的功能結構,做出一定的系統樣式的設計),做出業務流圖,資料庫設計(資料庫分析,資料庫概念設計,資料庫邏輯設計然後就是資料庫的建立了),然後是項目代碼的實作了。

首先是主對話框的建立:首先建立工程(基于對話框),然後是布置主對話的整體結構。主流的主對話框是以,菜單欄,工具欄和狀态欄再加上一副圖檔來組成的。今天呢就先介紹這一種。

               1.建立菜單欄:recouceview視圖下,右鍵選中insert,再選中menu,單機new按鈕,在recouceview視圖下就可見一個IDR_MENU1的圖示,右鍵屬性可以修改它的ID,輕按兩下就可以進行菜單欄的建立了,需要說明的是,當按下enter鍵後可以對菜單按鈕進行(怎麼說呢,初始化吧),就是給出ID(找一個适合自己的命名方法,友善在以後進行操作的時候友善些),然後是caption(按鈕的文本),主要需要注意的一個屬性是,pop-up,他問你是否是彈出的,如果是,那麼他的ID值是沒有的(原來我是不了解的,但是後來明白了,如果他是彈出的也就是他本身是不做操作的,那麼就不用給出ID值,因為根本就不用它,是以當選中該屬性後,ID就不可寫了)。

菜單欄:按下:Ctrl + W 彈出向導對話框,選中菜單欄中相應的ID值,在右邊消息欄中輕按兩下command 然後 按下 Edit code 按鈕,就可以寫,菜單欄單機事件的響應代碼了。

              2.建立工具欄:CToolBar m_ToolBar;  CImageList m_ImageList;首相定義,工具欄對象,和 圖像清單對象

    //建立圖像清單

    m_ImageList.Create(32,32,ILC_COLOR24|ILC_MASK,1,1);

    //向圖像清單中加入圖示   ,在向清單中添加圖示之前,  先将圖示添加到工程中去。

    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_GOODS));

    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_SELLFIND));

    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_IN_ALL));

    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_INALL));

    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_DAYFIND));

    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_MANAGEUSER));

UINT array[8];

    for(int i=0;i<8;i++)

    {

        if(i==2||i==5)       //設定3,6為分隔符

            array[i]=ID_SEPARATOR;

        else

            array[i]=i+1001;   //為工具欄添加索引    在後面通過工具欄,彈出對話框時,會用到

    }

    m_ToolBar.Create(this);    //建立工具欄

    m_ToolBar.SetButtons(array,8);   //設定工具欄按鈕個數

    m_ToolBar.GetToolBarCtrl().SetImageList(&m_ImageList); //關聯圖像清單

    m_ToolBar.SetSizes(CSize(50,60),CSize(32,32));   //設定按鈕和圖像

    //設定工具欄按鈕的顯示文本

    m_ToolBar.SetButtonText(0,"商品資訊");

    m_ToolBar.SetButtonText(1,"銷售查詢");

    m_ToolBar.SetButtonText(3,"入庫登記");

    m_ToolBar.SetButtonText(4,"庫存資訊");

    m_ToolBar.SetButtonText(6,"日結查詢");

    m_ToolBar.SetButtonText(7,"使用者管理");

    RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);    這句話是必須要有的,否則,工具欄是不顯示的

工具欄的響應事件的代碼實作:

    afx_msg void OnMenugoods();   先定義響應代碼的函數

    ON_COMMAND(1001, OnMenugoods)   參數中,前者是工具欄按鈕中對應的索引值,後者是調用的響應事件的函數。 也就是上面所聲明的。

但是其實我發現,工具欄的作用是為了簡化我們經常操作菜單欄中某些選項的簡化,換句話說吧,工具欄所要實作的功能,菜單欄都有,那麼我發現,其實根本不用定義工具欄響應事件的代碼,直接調用菜單欄的函數就可以了,事實證明這是可以的但是,感覺不大規範,不過我是自學的,也沒人規範我,不知道,九月份去找工作的時候會不會碰壁。

        3.狀态欄的建立:CStatusBar m_StatusBar;  定義狀态欄 對像

    CTime Time;

    Time = CTime::GetCurrentTime();   //系統目前時間

    CString Str = Time.Format("%Y-%m-%d");

    for(i=0;i<4;i++)

    {

        Array[i]=10000+1;      //給狀态欄定義索引值

    }

    m_StatusBar.Create(this);

    m_StatusBar.SetIndicators(Array,3);    //設定四個狀态欄

    for(int n=0;n<3;n++)

    {

        m_StatusBar.SetPaneInfo(n,Array[n],0,80);  // 給每個狀态欄設定寬度

    }

    m_StatusBar.SetPaneInfo(1,Array[1],0,200);

    m_StatusBar.SetPaneInfo(2,Array[2],0,800);

    m_StatusBar.SetPaneText(2,"目前時間"+Str);    //設定狀态欄文本

    m_StatusBar.SetPaneText(0,"餐飲管理系統");

然後,在主界面加上一個你覺得合适的圖檔,大小,樣式,就看你的審美了,MFC最常用的一種主界面就介紹 完了,一個好的主界面 帶給使用者 ,我覺得是最為主要的,後面,我還會學習和總結其他的主界面布置。

FIGHTING!