版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第十八講工具欄和狀態(tài)欄教學(xué)提綱一、教學(xué)內(nèi)容:工具欄和狀態(tài)欄編程二、學(xué)時(shí):兩課時(shí)三、教學(xué)目的和要求掌握工具欄的創(chuàng)建方法和步驟,如何將工具欄的功能與菜單的功能相對(duì)應(yīng)掌握創(chuàng)建狀態(tài)欄的方法和步驟四、教學(xué)重點(diǎn)和難點(diǎn)重點(diǎn):工具欄編程難點(diǎn):狀態(tài)欄編程五.教學(xué)過(guò)程提要工具欄編程狀態(tài)欄編程本單小結(jié)內(nèi)容提要§6.2工具欄§6.3狀態(tài)欄§6.2工具欄
工具欄是一系列工具按鈕的組合,也是一種常用的命令輸入方式??梢哉f(shuō),工具欄是菜單的一種快捷方式。6.2.1創(chuàng)建工具欄的方法和步驟創(chuàng)建工具欄資源在這里,我們將對(duì)上一節(jié)的例子進(jìn)行擴(kuò)充,增加一個(gè)工具欄。當(dāng)用鼠標(biāo)選擇工具欄上的某個(gè)按鈕時(shí),顯示出【個(gè)人資料】對(duì)話框。具體步驟如下:步驟一:打開(kāi)上一節(jié)創(chuàng)建的Dialog例子。步驟二:在工作區(qū)窗口中選擇【ResourceView】選項(xiàng)卡,展開(kāi)【DialogResources】文件夾,由于我們?cè)谟肁ppWizard生成應(yīng)用程序時(shí),沒(méi)有選擇生成工具欄,因此在【DialogResources】文件夾中,找不到Toolbar文件夾。6.2工具欄步驟三:選擇【Insert】菜單中的【Resource】菜單項(xiàng),在彈出菜單中選擇【Insert】菜單項(xiàng)。系統(tǒng)將彈出【InsertResource】對(duì)話框,在對(duì)話框中選擇【Toolbar】,單擊【New】按鈕。步驟四:系統(tǒng)將自動(dòng)在【DialogResounrces】文件夾中添加一個(gè)【Toolbar】文件夾,同時(shí)在【Toolbar】文件夾中添加了一個(gè)名為IDR_TOOLBAR1的文件。屏幕上同時(shí)顯示工具欄設(shè)計(jì)窗口。步驟四:鼠標(biāo)右鍵單擊【ResourceView】中【Toolbar】文件夾中的IDR_TOOLBAR1項(xiàng)目。在彈出菜單中選擇【Properties】菜單項(xiàng),系統(tǒng)將彈出工具欄屬性對(duì)話框。在屬性對(duì)話框中的【ID】框中,我們把ID號(hào)修改為IDR_MYTOOLBAR。步驟五:添加按鈕和制作按鈕圖標(biāo)。我們可以利用【Graphic】和【Color】工具欄上提供的設(shè)計(jì)工具,根據(jù)自己需要制作按鈕圖標(biāo)。我們用字母R作為按鈕的圖標(biāo)。工具欄按鈕的繪制是一個(gè)個(gè)分開(kāi)進(jìn)行的,在畫完一個(gè)按鈕后,該按鈕的實(shí)際效果立刻顯示出來(lái)。
在【ToolbarButtonProperties】工具欄按鈕屬性對(duì)話框中,各項(xiàng)的含義如表6.5所示。項(xiàng)目含義IDWidthHeightPrompt用于輸入或從下拉列表中選擇工具欄按鈕的ID號(hào)用于輸入工具欄按鈕的寬度,單位是像素用于輸入工具欄按鈕的高度,單位是像素工具欄按鈕文本
注:要使選擇工具欄按鈕的功能與選擇菜單的功能一致時(shí),應(yīng)將工具欄按鈕屬性對(duì)象框中的ID號(hào)設(shè)置為與某一菜單項(xiàng)的ID號(hào)相同。
值得一提的是,在創(chuàng)建工具欄按鈕的過(guò)程中,可以進(jìn)行有關(guān)的操作及方法:(1)創(chuàng)建新的工具欄按鈕在新建一個(gè)工具欄的過(guò)程中,在工具欄的右端會(huì)有一個(gè)空按鈕,用鼠標(biāo)單擊該按鈕,則該按鈕的周圍有虛的方框包圍,同時(shí)在編輯區(qū)內(nèi)顯示出該按鈕,用戶可以在其中繪制圖形。(2)移動(dòng)工具欄中的按鈕在編輯工具欄的過(guò)程中,可以根據(jù)用戶的需要移動(dòng)工具欄中的按鈕,將某個(gè)按鈕放置到所需要的位置上。(3)復(fù)制工具欄中的按鈕在工具欄編輯窗口內(nèi),選擇待移動(dòng)的工具欄按鈕,在按下Ctrl鍵的同時(shí),將其拖動(dòng)到所需要的位置。(4)刪除工具欄中的按鈕方法是用鼠標(biāo)拖動(dòng)該按鈕到工具欄以外的位置。(5)在工具欄中的按鈕間插入空格可以根據(jù)需要在某個(gè)按鈕的左邊、右邊或兩邊插入一個(gè)空格分隔符,方法是:①如果某按鈕左邊沒(méi)有任何空格,拖動(dòng)該按鈕向右移動(dòng)并當(dāng)按鈕的右邊界接觸到右邊按鈕時(shí),釋放鼠標(biāo)鍵,則可以此按鈕的左邊插入一個(gè)空格,反之,亦然。②如果某按鈕的左邊已有空格而右邊沒(méi)有空格,拖動(dòng)該按鈕向左移動(dòng)并當(dāng)按鈕的左邊界接觸到左邊按鈕時(shí),釋放鼠標(biāo)鍵,則可在此按鈕右邊插入一個(gè)空格。③如果某按鈕的左右兩邊都有空格,拖動(dòng)該按鈕向右移動(dòng)并接觸到相鄰按鈕時(shí),則此按鈕左邊的空格保留,按鈕右邊的空格消失。反之亦然。實(shí)現(xiàn)工具欄
編碼實(shí)現(xiàn)工具欄。具體實(shí)現(xiàn)步驟如下:步驟一:在工作區(qū)中窗口中選中【ClassView】選項(xiàng)卡,用鼠標(biāo)右鍵單擊【CmainFrame】,在彈出的菜單中選擇【AddMemberVariable】菜單項(xiàng),系統(tǒng)將彈出【AddMemberVariable】對(duì)話框。步驟二:在【VariableType】欄中輸入類型名稱CToolBar,在【VariableName】欄中輸入變量名稱m_MyDataToolBar。單擊【OK】按鈕繼續(xù)。此時(shí),VisualC++將自動(dòng)在主框架中的類定義文件MainFrm.h中添加以下聲名:CToolBarm_MyDataToolBar;步驟三:選擇【View】菜單中的【ClassWizard】菜單項(xiàng),或者直接按Ctrl+R鍵,彈出【MFCClassWizard】對(duì)話框。在【Classname】列表框選擇CmainFrame類;在【ObjectIds】列表框中選中CMainFrame;雙擊【Messages】列表欄中的WM_CREATE選項(xiàng),或者選中WM_CREATE,再單擊【AddFunction】按鈕。在【MemberFunction】欄中將會(huì)出現(xiàn)OnCreate()函數(shù)。步驟四:?jiǎn)螕簟綞ditCode】按鈕,ClassWizard將自動(dòng)在框架類的實(shí)現(xiàn)文件MainFrm.cpp中添加成員函數(shù)OnCreate()。在函數(shù)中加入顯示工具欄的代碼。具體代碼如下,其中粗體部分為新添加的代碼。intCMainFrame::OnCreate(LPCREATESTRUCTlpCreateStruct){if(CFrameWnd::OnCreate(lpCreateStruct)==-1) return-1;//TODO:Addyourspecializedcreationcodehereif(!m_MyDataToolBar.Create(this)||!m_MyDataToolBar.LoadToolBar(IDR_MYTOOLBAR)){TRACE0("Failedtocreatedtoolbar\n");return-1;}return0;}步驟五:編譯并運(yùn)行該程序。當(dāng)單擊工具欄上的新建按鈕,窗口中將彈出【個(gè)人資料】對(duì)話框。此按鈕的作用和選擇【顯示】菜單中的【個(gè)人資料】菜單項(xiàng)的效果是一樣的。說(shuō)明:(1)在上例創(chuàng)建工具欄的過(guò)程中,曾用到了CToolBar類的對(duì)象,CToolBar類是由CControlBar類派生而來(lái)的,它用于描述工具欄。其中,Create函數(shù)是其成員函數(shù),該函數(shù)的原型為:BOOLCreate(Cwnd*pParentWnd,DWORDwStyle=WS_CHILD|WS_VISIBLE|CBRS_TOP,UNITnID=AFX_IDW_TOOLBAR);其中:參數(shù)pParentWnd是指向父窗口的指針,dwStyle是工具欄的風(fēng)格,nID是子窗口的ID號(hào)。取值風(fēng)格CBRS_TOPCBRS_BOTTOMCBRS_NOALIGNCBRS_TOOLTIPSCBRS_SIZE_DYNAMICCBRS_SIZE_FIXEDCBRS_FLOATINGCBRS_FLYBYCBRS_HIDE_INPLACE在框架窗口的頂部在框架窗口的底部不隨父窗口改變尺寸顯示按鈕提示尺寸可改變控件條固定浮動(dòng)狀態(tài)狀態(tài)欄中顯示按鈕的信息不顯示工具欄表6.6工具欄的部分風(fēng)格(2)TRACE宏
TRACE宏提供了類似與printf函數(shù)的輸出格式,用于將某一信息(即字符串)輸出到Dump的設(shè)備環(huán)境DC中。該宏只在調(diào)試狀態(tài)下工作。TRACE宏的限制是一次最多輸出512個(gè)字符。如:inti=1;charsz[]="one";TRACE("Integer=%d,String=%s\n",i,sz);此外,還有TRACE0~TRACE3這樣4個(gè)獨(dú)立的宏,分別用于輸出純字符串~字符串+3個(gè)參數(shù)。它們的原型分別為:TRACE0(exp)TRACE1(exp,param1)TRACE2(exp,param1,param2)TRACE3(exp,param1,param2,param3)如:TRACE0("StartDumpofMyClassmembers:");inti=1;TRACE1("Integer=%d\n",i);//Output:'Integer=1'intj=1;charsz[]="one";TRACE2("Integer=%d,String=%s\n",j,sz);//Output:'Integer=1,String=one'6.2.2實(shí)現(xiàn)工具欄的船塢化所謂船塢化工具欄就是可以將工具欄拖動(dòng)到屏幕的任意位置上,還可以用鼠標(biāo)改變工具欄的大小。下面我們就來(lái)實(shí)現(xiàn)工具欄的船塢化。首先要通過(guò)調(diào)用CControlBar的成員函數(shù)EnableDocking()使工具欄能夠船塢化;然后通過(guò)調(diào)用CFrameWnd類的成員函數(shù)EnableDocking()確保邊框窗口能夠船塢化;最后調(diào)用CFrameWnd的成員函數(shù)DockControlBar()使工具欄固定在邊框窗口上。
所有這些工作都在邊框窗口類的成員函數(shù)OnCreate()中完成。這三個(gè)函數(shù)的原型為:voidCControlBar::EnableDocking(DWORDdwStyle);voidCFrameWnd::EnableDocking(DWORDdwDockStyle);voidCFrameWnd::DockControlBar(CControlBar*pBar,UINTnDockBarID=0,LPCRECTlpRect=NULL);
其中:參數(shù)dwStyle和dwDockStyle表示工具欄的風(fēng)格,其取值見(jiàn)表6.6,pBar是指向待船塢化的工具欄的指針。
具體代碼如下,其中粗體部分為新添加的代碼。intCMainFrame::OnCreate(LPCREATESTRUCTlpCreateStruct){if(CFrameWnd::OnCreate(lpCreateStruct)==-1) return-1;//TODO:Addyourspecializedcreationcodehereif(!m_MyDataToolBar.Create(this)||!m_MyDataToolBar.LoadToolBar(IDR_MYTOOLBAR)){TRACE0("Failedtocreatedtoolbar\n");return-1;} m_MyDataToolBar.EnableDocking(CBRS_ALIGN_ANY);EnableDocking(CBRS_ALIGN_ANY);DockControlBar(&m_MyDataToolBar);return0;}
編譯并運(yùn)行該應(yīng)用程序,將看到工具欄已經(jīng)船塢化了。可以用鼠標(biāo)將它拖動(dòng)到窗口的任意位置。與工具欄相關(guān)的MFC類MFC的兩個(gè)類CToolBar和CToolBarCtrl都是用來(lái)為工具條提供操作支,CToolBar繼承了類CControlBar,CToolBarCtrl直接繼承CWnd,CToolBarCtrl能提供更復(fù)雜的功能。§6.3狀態(tài)欄
狀態(tài)欄位于應(yīng)用程序框架窗口的底部,它可以分割成幾個(gè)窗格,一般用于顯示一些文本信息,比如:工具欄按鈕的提示信息、CapsLock鍵及NumLock鍵的狀態(tài)等等。1、創(chuàng)建狀態(tài)欄資源下面,我們?cè)谇袄幕A(chǔ)上,為應(yīng)用程序Dialog添加一個(gè)狀態(tài)欄,用來(lái)顯示一個(gè)消息區(qū)、一個(gè)字符串和NumLock鍵的狀態(tài)。其具體步驟如下:步驟一:打開(kāi)資源符號(hào)對(duì)話框。步驟二:在對(duì)話框中單擊【New】按鈕,彈出【NewSymbol】對(duì)話框,在【Name】欄中填入ID_STATUSBAR_STR,在【Value】欄中的數(shù)字是系統(tǒng)為用戶提供的ID數(shù)值。單擊【OK】按鈕繼續(xù)。6.3狀態(tài)欄步驟三:新添加的ID信息將會(huì)出現(xiàn)在【ResourceSymbols】對(duì)話框的列表中。單擊【Close】按鈕關(guān)閉【ResourceSymbols】對(duì)話框。此時(shí)完成創(chuàng)建ID的工作。步驟四:在工作區(qū)窗口中選擇【ResourceView】選項(xiàng)卡,雙擊【StringTable】文件夾中的【StringTable】選項(xiàng),窗口中將顯示出串表編輯器。在編輯器中單擊鼠標(biāo)右鍵,在彈出的菜單中選擇【NewString】菜單項(xiàng)。步驟五:系統(tǒng)彈出【StringProperties】對(duì)話框,在【ID】框中選擇ID_STATUSBAR_STR項(xiàng),在【Caption】框中輸入字符串“測(cè)試狀態(tài)欄!”,按【Enter】鍵確認(rèn)。2、實(shí)現(xiàn)狀態(tài)欄實(shí)現(xiàn)狀態(tài)欄的具體步驟如下:步驟一:在工作區(qū)窗口中選擇【ClassView】選項(xiàng)卡,用鼠標(biāo)右鍵單擊【CMainFrame】選項(xiàng),在彈出菜單中選擇【AddMemberVariable】菜單項(xiàng)。彈出【AddMemberVariable】對(duì)話框,在【VariableType】欄中輸入類型名稱CStatusBar,在【VariableName】欄中輸入類型名稱為m_MyStatusBar。單擊【OK】按鈕繼續(xù)。此時(shí),VisualC++將自動(dòng)在主框架的類定義文件MainFrm.h中添加以下聲明:CStatusBarm_MyStatusBar;步驟二:在MainFrm.cpp文件中加入數(shù)組indicators的定義,具體代碼如下,其中粗體部分為新增加的代碼。//CMainFrameIMPLEMENT_DYNCREATE(CMainFrame,CFrameWnd)BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)//{{AFX_MSG_MAP(CMainFrame)ON_WM_CONTEXTMENU()ON_WM_CREATE()//}}AFX_MSG_MAPEND_MESSAGE_MAP()staticUINTindicators[]={ID_SEPARATOR, //狀態(tài)行指示器
ID_STATUSBAR_STR,ID_INDICATOR_NUM,};步驟三:在文件MainFrm.app中對(duì)函數(shù)OnCreate()進(jìn)行修改,增加狀態(tài)欄的創(chuàng)建代碼。具體代碼如下,其中粗體部分為新增加的代碼。intCMainFrame::OnCreate(LPCREATESTRUCTlpCreateStruct){if(CFrameWnd::OnCreate(lpCreateStruct)==-1)return-1;//TODO:Addyourspecializedcreationcodehereif(!m_MyDataToolBar.Create(this)||!m_MyDataToolBar.LoadToolBar(IDR_MYTOOLBAR)){TRACE0("Failedtocreatedtoolbar\n"); return-1; } m_MyDataToolBar.EnableDocking(CBRS_ALIGN_ANY);EnableDocking(CBRS_ALIGN_ANY);DockControlBar(&m_MyDataToolBar);if(!m_MyStatusBar.Create(this)||!m_MyStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))){TRACE0("Failedtocreatedstatusbar\n");return-1;//failtocreate}return0;}步驟四:編譯并運(yùn)行此應(yīng)用程序,將會(huì)看到在原來(lái)程序的基礎(chǔ)之上,在窗口的最下端增加了一個(gè)狀態(tài)欄。說(shuō)明:(1)在上例創(chuàng)建狀態(tài)欄的過(guò)程中,曾用到了CStatusBar類的對(duì)象,CStatusBar是VisualC++的MFC類庫(kù)中的一個(gè)類,它用于描述狀態(tài)欄,CStatusBar類是由CControlBar類派生而來(lái)的。其中,Create函數(shù)是其成員函數(shù),該函數(shù)的原型為:
BOOLCreate(CWnd*pParentWnd, DWORDdwStyle=WS_CHILD|WS_VISIBLE |CBRS_BOTTOM, UINTnID=AFX_IDW_STATUS_BAR);其中:pParentWnd是指向狀態(tài)欄父窗口的指針,dwStyle是狀態(tài)欄的風(fēng)格,nID是子窗口的ID號(hào),表6.7中列出了決定狀態(tài)欄風(fēng)格的幾種常用的取值及對(duì)應(yīng)的風(fēng)格。
表6.7dwStyle的取值及對(duì)應(yīng)的狀態(tài)欄的風(fēng)格(2)在MainFrm.cpp文件中加入的數(shù)組indicators的定義:staticUINTindicators[],用于描述狀態(tài)欄中所包含的內(nèi)容。如果在利用AppWizard向?qū)?chuàng)建SDI或MDI應(yīng)用程序框架中的第4步中,選擇了“Initialstatusbar”時(shí),則向?qū)?huì)自動(dòng)在MainFrm.cpp文件中加入數(shù)組indicators的定義。向?qū)傻娜笔〉膇ndicator數(shù)組包含了四個(gè)元素,它們是ID_SEPARATOR、ID_INDICATOR_CAPS、ID_INDICATOR_NUM和ID_INDICATOR_SCRL。取值風(fēng)格CBRS_TOPCBRS_BOTTOMCBRS_NOALIGN在框架窗口的頂部在框架窗口的底部當(dāng)父窗口改變尺寸以后不隨之變動(dòng)(3)要在狀態(tài)欄的窗格中顯示文本信息,可以采用以下三種方法:①調(diào)用CWnd::SetWindowText函數(shù)更新信息行窗格中的文本。由于狀態(tài)欄也是一種窗口,所以在程序中可以直接調(diào)用該函數(shù)。如:若狀態(tài)欄變量為m_wndStatusBar,則m_wndStatusBar.SetWindowText(“新修改的信息”)語(yǔ)句將在信息行窗格中顯示“新修改的信息”。②手動(dòng)處理狀態(tài)欄的MAND_UI更新信息,并在處理函數(shù)中調(diào)用CCmdUI::SetText函數(shù),該函數(shù)的原型為:virtualvoidSetText(LPCTSTRlpszText);其中:參數(shù)lpszText是一個(gè)指向字符串的指針。③調(diào)用函數(shù)CStatusBar::SetPaneText與CStatusBar::GetPaneText可以設(shè)置或獲得任何窗格(包括信息行窗格)中的文本。此函數(shù)的原型為:BOOLSetPaneText(intnIndex,LPCTSTRlpszNewText,BOOLbUpdate=TRUE);CStringGetPaneText(intnIndex)const;其中,參數(shù)nIndex是待設(shè)置的窗格位置索引號(hào)(第1個(gè)窗格的位置索引為0),lpszNewText表示要顯示的字符串,若參數(shù)bUpdate的值為TRUE,系統(tǒng)自動(dòng)更新顯示的結(jié)果。(4)調(diào)用CStatusBar::CommandToIndex可以獲得指定資源ID號(hào)所在窗格的位置索引號(hào),該函數(shù)的原型為:intCommandToIndex(UINTnIDFind)const;其中:參數(shù)nIDFind是狀態(tài)欄中某一資源ID號(hào)。(5)調(diào)用函數(shù)CStatusBar::SetPaneInfo與CStatusBar::GetPaneInfo可設(shè)置或獲得窗格的長(zhǎng)度、風(fēng)格等信息,它們的函數(shù)原型為:voidSetPaneInfo(intnIndex,UINTnID,UINTnStyle,intcxWidth);voidGetPaneInfo(intnIndex,UINT&nID,UINT&nStyle,int&cxWidth)const;其中:參數(shù)nIndex表示要設(shè)置的狀態(tài)欄窗格的索引號(hào),nID用來(lái)為狀態(tài)欄窗格指定新的資源ID號(hào),cxWidth表示窗格的像素寬度,nStyle表示狀態(tài)欄窗格的風(fēng)格類型,用來(lái)指定窗格的外觀,如:SBPS_POPOUT表示窗格是凸起來(lái)的。具體見(jiàn)表6.8。風(fēng)格取值風(fēng)格SBPS_NOBORDERSSBPS_POPOUTSBPS_DISABLEDSBPS_STRETCH
SBPS_NOMAL窗格四周沒(méi)有3D邊框反顯邊框使文字凸起顯示禁用窗格,不顯示文本拉伸窗格,交填充窗格不用的空白空間。但狀態(tài)欄中只能有一個(gè)窗格具有這種風(fēng)格普通窗格,沒(méi)有“拉伸”、“3D邊框”、“文字凸起顯示”等效果表6.8狀態(tài)欄中各窗格的風(fēng)格取值及對(duì)應(yīng)風(fēng)格(6)調(diào)用CStatusBar::SetPaneStyle與CStatusBar::GetPaneStyle可分別用來(lái)設(shè)置或獲得狀態(tài)欄窗格的風(fēng)格,二者的原型如下:UINTGetPaneStyle(intnIndex)const;voidSetPaneStyle(intnIndex,UINTnStyle);其中:參數(shù)nIndex是狀態(tài)欄中某一窗格的位置索引號(hào),nStyle為狀態(tài)欄中窗格的風(fēng)格。3、進(jìn)一步完善狀態(tài)欄現(xiàn)在,我們?cè)趧偛盘砑訝顟B(tài)欄例子的基礎(chǔ)上進(jìn)行修改。當(dāng)用戶選擇“關(guān)于”菜單項(xiàng)時(shí),彈出“字體對(duì)話框”,當(dāng)單擊“確定”按鈕關(guān)閉此對(duì)話框后,在狀態(tài)欄上原來(lái)顯示文本測(cè)試狀態(tài)欄的空格中顯示“您已經(jīng)查看過(guò)字體對(duì)話框!”,按照下面的方法進(jìn)行操作。步驟一:選擇【View】菜單中的【ClassWizard】菜單項(xiàng)。彈出【MFCClassWizard】對(duì)話框,在【Classname】列表中選擇類CMainFrame,在【ObjectIDs】列表中選擇ID_APP_ABOUT;右邊的【Messages】欄中將出現(xiàn)COMMAND和MAND_UI,雙擊COMMAND選項(xiàng)。將彈出AddMemberFunction對(duì)話框。步驟二:接受系統(tǒng)缺省的函數(shù)名稱OnAppAbout,單擊【OK】按鈕,返回MFCClassWizard對(duì)話框。這時(shí)在MFCClassWizard對(duì)話框中的【Memberfunctions】框中增加了一個(gè)函數(shù)OnAppAbout。步驟三:?jiǎn)螕簟綞ditCode】按鈕,在代碼編輯窗口中打開(kāi)OnAppAbout函數(shù)。在編輯此函數(shù)之前,首先要在MainFrm.cpp文件中添加一個(gè)#include語(yǔ)句。具體代碼如下,其中粗體部分為新增加的代碼。//MainFrm.cpp:implementationoftheCMainFrameclass//#include"stdafx.h"#include"Dialog.h"#include"MainFrm.h"#include"MydataDialog.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif步驟四:在代碼編輯窗口中,編輯函數(shù)OnAppAbout()。具體代碼如下,其中粗體部分為新增加的代碼。voidCMainFrame::OnAppAbout(){//TODO:AddyourcommandhandlercodehereCMydataDialogdlg;if(dlg.DoModal()==IDOK){CClientDCdc(this);SIZEsize=dc.GetTextExtent("您已經(jīng)查看過(guò)個(gè)人資料對(duì)話框!");intmandToIndex(ID_STATUSBAR_STR);m_MyStatusBar.SetPaneInfo(index,ID_STATUSBAR_STR,SBPS_POPOUT,size.cx);說(shuō)明:在此函數(shù)中,首先生成了一個(gè)字體對(duì)話框的實(shí)例,并且顯示為有模式對(duì)話框。當(dāng)用戶單擊【確定】按鈕退出此對(duì)話框時(shí),要改變狀態(tài)欄的字符串顯示。首先調(diào)用函數(shù)GetTextExtent()來(lái)獲得字符串的長(zhǎng)度,然后調(diào)用CommandToIndex()函數(shù)獲得窗格的索引,再通過(guò)調(diào)用函數(shù)SetPaneInfo()來(lái)設(shè)置窗格的長(zhǎng)度、風(fēng)格等信息。在此例中,我們使用了風(fēng)格SBPS_POPOUT,它使創(chuàng)建的窗格看起來(lái)是從狀態(tài)欄中凸出來(lái)的。最后調(diào)用函數(shù)SetPaneText()來(lái)顯示文本內(nèi)容。步驟五:編譯并運(yùn)行此應(yīng)用程序。m_MyStatusBar.SetPaneText(index,_T("您已經(jīng)查看過(guò)個(gè)人資料對(duì)話框!"),TRUE);}}在應(yīng)用程序中,要實(shí)現(xiàn)菜單的功能,其步驟和方法是先利用菜單編輯器建立菜單資源,然后編寫菜單命令的MAND消息映射函數(shù)及相應(yīng)代碼。在MFC框架中,菜單命令消息是按照一定的順序進(jìn)行傳遞的。
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 易拉罐打碼機(jī)課程設(shè)計(jì)
- 2024-2030年全球及中國(guó)向上照明吊燈行業(yè)銷售情況及競(jìng)爭(zhēng)趨勢(shì)預(yù)測(cè)報(bào)告
- 2024-2030年全球及中國(guó)傳統(tǒng)流化床干燥機(jī)行業(yè)供需現(xiàn)狀及十四五前景預(yù)測(cè)報(bào)告
- 2024-2030年全球及中國(guó)PET瓶片行業(yè)供需現(xiàn)狀及投資前景預(yù)測(cè)報(bào)告
- 2024-2030年全球與中國(guó)薄荷烷市場(chǎng)供需現(xiàn)狀及未來(lái)競(jìng)爭(zhēng)前景預(yù)測(cè)報(bào)告
- 2024-2030年中國(guó)高端女裝行業(yè)競(jìng)爭(zhēng)現(xiàn)狀及投資經(jīng)營(yíng)模式分析報(bào)告
- 2024-2030年中國(guó)高檔建筑五金行業(yè)市場(chǎng)發(fā)展?jié)摿Ψ治雠c競(jìng)爭(zhēng)策略建議報(bào)告
- 擺架夾具課程設(shè)計(jì)
- 廢品分揀課程設(shè)計(jì)
- 子矩陣之和課程設(shè)計(jì)
- 有關(guān)環(huán)衛(wèi)工人安全教育
- 安全6S年終總結(jié)
- 二年級(jí)乘除法口訣專項(xiàng)練習(xí)1000題
- 全員營(yíng)銷具體實(shí)施方案
- 蘇科版八年級(jí)上冊(cè)第二章軸對(duì)稱圖形-線段和最值問(wèn)題(有答案)
- 2024秋期國(guó)家開(kāi)放大學(xué)專科《經(jīng)濟(jì)學(xué)基礎(chǔ)》一平臺(tái)在線形考(形考任務(wù)1至5)試題及答案
- 專題19《生于憂患死于安樂(lè)》(過(guò)關(guān)檢測(cè))-2024年中考語(yǔ)文課內(nèi)39篇文言文閱讀
- 《常見(jiàn)地貌類型-風(fēng)沙地貌與海岸地貌》導(dǎo)學(xué)案
- 廠區(qū)快餐配送方案
- 2024年大學(xué)生心理健康知識(shí)考試題庫(kù)300題(含答案)
- 統(tǒng)編版(2024)道德與法治七年級(jí)上冊(cè)第十一課《確立人生目標(biāo)》教案(2課時(shí))
評(píng)論
0/150
提交評(píng)論