先大題了解一下,項目開發的流程:先要有開發背景,然後做出需求分析,系統設計(說明系統的目标,系統的功能結構,做出一定的系統樣式的設計),做出業務流圖,資料庫設計(資料庫分析,資料庫概念設計,資料庫邏輯設計然後就是資料庫的建立了),然後是項目代碼的實作了。
首先是主對話框的建立:首先建立工程(基于對話框),然後是布置主對話的整體結構。主流的主對話框是以,菜單欄,工具欄和狀态欄再加上一副圖檔來組成的。今天呢就先介紹這一種。
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!