mfc編程基礎(chǔ).doc_第1頁(yè)
mfc編程基礎(chǔ).doc_第2頁(yè)
mfc編程基礎(chǔ).doc_第3頁(yè)
mfc編程基礎(chǔ).doc_第4頁(yè)
mfc編程基礎(chǔ).doc_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

MFC編程基礎(chǔ)基礎(chǔ)一、 概述MFC是一個(gè)龐大的類庫(kù),它是C+類結(jié)構(gòu)的擴(kuò)展。使用MFC將顯著簡(jiǎn)化Windows程序的開發(fā)。MFC封裝了大多數(shù)Window API函數(shù),使程序員再開發(fā)Windows程序時(shí)能充分發(fā)揮C+語(yǔ)言的優(yōu)越性。下面是該類庫(kù)結(jié)構(gòu)的一部分。CObjectCCmdTargetCWinAppCViewCDocumentCWndCFrameWndCDialogCStaticCButtonCListBox CComboBoxCScrollBarCEditMFC類庫(kù)中處理程序基本構(gòu)成和窗口的部分 大多數(shù)MFC的類是由一個(gè)名為CObject的基類派生而來(lái)的。大多數(shù)MFC類可以使用這個(gè)類所包括的數(shù)據(jù)成員和成員函數(shù)。CWinApp類是在程序創(chuàng)建的時(shí)候使用的,而且在每個(gè)程序中只能使用一次。CWnd類收集了通常在Windows中用到的所有屬性、對(duì)話框和控件。CFrameWnd類是從CWnd類繼承而來(lái)的,它可構(gòu)造一般應(yīng)用程序的窗口。CDialog類可以分別實(shí)現(xiàn)兩種不同特點(diǎn)的對(duì)話框:模式對(duì)話框和無(wú)模式對(duì)話框。最后,我們可以從圖上看出Windows支持六種本地控件類型:靜態(tài)文本、可編輯文本、按鈕、滾動(dòng)條、列表框和組合框(列表框的擴(kuò)展)。MFC類庫(kù)中還有一些用于管理、文檔控制和數(shù)據(jù)庫(kù)支持等功能的類。用MFC創(chuàng)建一個(gè)應(yīng)用程序,可以使用MFC類庫(kù)中的類,但更多的時(shí)候,是要從已存在的類派生出新類。在派生出的新類中創(chuàng)建新的成員函數(shù),使新類的實(shí)例在程序中實(shí)現(xiàn)所需的功能。后面的例子演示了類的派生過程,并對(duì)它做進(jìn)一步的講解。二、 理解一個(gè)MFC程序 設(shè)計(jì)一個(gè)程序在講述如何編寫程序代碼之前,很有必要簡(jiǎn)要地介紹一下用MFC編寫程序的過程。假設(shè)要編寫一個(gè)顯示“HelloWorld”的程序,雖然這是一個(gè)簡(jiǎn)單的程序,但也需要設(shè)計(jì)一下?!癏elloWorld”,程序需要在屏幕上開一個(gè)窗口,該窗口用來(lái)顯示“HelloWorld”。然后要把“HelloWorld”放入該窗口中。完成這項(xiàng)工作需要三個(gè)對(duì)象: 程序?qū)ο?,該?duì)象用來(lái)初始化程序并使之同Windows關(guān)聯(lián)。該對(duì)象處理所有底層的事件過程。 窗口對(duì)象,該對(duì)象形成程序的主窗口。 靜態(tài)文本對(duì)象,該對(duì)象形成程序的靜態(tài)文本符號(hào)“HelloWorld。 每一個(gè)MFC程序都會(huì)包括前兩個(gè)對(duì)象。第三個(gè)對(duì)象是因程序而異的。每個(gè)應(yīng)用程序都定義自己的用戶界面對(duì)象的集合,這些對(duì)象是用來(lái)顯示程序的輸出和接受用戶輸入的數(shù)據(jù)。一旦完成了用戶界面的設(shè)計(jì)并決定了實(shí)現(xiàn)這個(gè)界面所必需的控件,這就可以編寫程序來(lái)實(shí)現(xiàn)屏幕上的那些控件了。程序員可以編制代碼來(lái)處理用戶操作這些控件的時(shí)候所產(chǎn)生的事件。在這個(gè)“HelloWorld”,程序中,僅有一個(gè)必需的控件,它保存字符“HelloWorld”。實(shí)際上,很多實(shí)用程序的主窗口和對(duì)話框上會(huì)安排成百上千的控件。 理解程序的代碼 下面是“HelloWorid”程序的代碼,并給程序加了注釋。通過一行一行地分析這個(gè)程序的代碼,讀者可以掌握用MFC創(chuàng)建一個(gè)簡(jiǎn)單程序的方法。以后講述了如何用AppWizard生成一個(gè)復(fù)雜的MFC程序的框架。/hello.cpp/ afxwin.h包括了MFC用到的所有數(shù)據(jù)類型、類、函數(shù)、和變量。它也包括其它頭文件,/ 如Windows API庫(kù)#include / 定義應(yīng)用程序類class CHelloApp : public CWinApppublic:virtual BOOL InitInstance();/ 建立一個(gè)應(yīng)用程序類對(duì)象(全局)CHelloApp HelloApp;/ 定義主窗口類class CHelloWindow : public CFrameWnd CStatic* cs; /私有成員,靜態(tài)控件指針public:CHelloWindow(); /構(gòu)造函數(shù)CHelloWindow(); /析構(gòu)函數(shù);/ 定義程序類初始化函數(shù),應(yīng)用程序類的構(gòu)造函數(shù)調(diào)用該函數(shù),Winmain()函數(shù)被隱藏BOOL CHelloApp:InitInstance()/建立窗口并指向它,m_pMainWnd是CWinThread(CWinApp)的數(shù)據(jù)成員m_pMainWnd = new CHelloWindow(); m_pMainWnd-ShowWindow(m_nCmdShow); /顯示窗口m_pMainWnd-UpdateWindow(); /繪制窗口內(nèi)各對(duì)象return TRUE;/ 窗口類構(gòu)造函數(shù)CHelloWindow:CHelloWindow() / 建立程序主窗口Create(NULL, /該窗口類默認(rèn)名字Hello World!, /窗口標(biāo)題WS_OVERLAPPEDWINDOW, /窗口風(fēng)格CRect(0,0,200,200); /窗口大小尺寸/ 用Cstatic類的構(gòu)造函數(shù)申請(qǐng)內(nèi)存,并指向它c(diǎn)s = new CStatic();/建立靜態(tài)控件窗口cs-Create(hello world, /顯示文本內(nèi)容WS_CHILD|WS_VISIBLE|SS_CENTER, /窗口風(fēng)格屬性CRect(50,80,150,150), /窗口尺寸this); /父窗口標(biāo)識(shí)/ 窗口類析構(gòu)函數(shù)CHelloWindow:CHelloWindow() delete cs; /釋放靜態(tài)對(duì)象內(nèi)存上機(jī)操作方法:API工程類型,使用MFC類庫(kù)。三、 定制控件控件是建立Windows應(yīng)用程序界面的用戶界面對(duì)象。我們所見到的大多數(shù)Windows應(yīng)用程序和對(duì)話框只不過是控件的集合,這些控件是按照程序所要實(shí)現(xiàn)的功能來(lái)合理布局的。要建立有效的應(yīng)用程序,必須徹底理解怎樣使用Windows中的控件。Windows中只有CStatic、CButton、CEdit、CList、CComboBox和CScrollBar這六種基本控件,以及以后討論的附加的Windows 95控件集。我們需要理解每一個(gè)控件的功能,怎樣調(diào)整其外觀和行為,以及怎樣使控件正確地響應(yīng)用戶事件。將這些知識(shí)以及對(duì)菜單和對(duì)話框的理解結(jié)合起來(lái),我們就能創(chuàng)建任何可以想象到的Windows應(yīng)用程序。最簡(jiǎn)單的控件CStatic用來(lái)顯示靜態(tài)文本。類CStatic沒有數(shù)據(jù)成員,只有四個(gè)成員函數(shù),即構(gòu)造函數(shù)、函數(shù)Create以及兩個(gè)分別用來(lái)獲取和設(shè)置靜態(tài)控件圖標(biāo)的函數(shù)。該控件不響應(yīng)用戶事件。由于其簡(jiǎn)單性,以該控件為起點(diǎn)學(xué)習(xí)Windows控件是穩(wěn)妥的。 現(xiàn)在討論類CStatic,進(jìn)而理解怎樣修改和定制控件。后面討論類CButton和CScrollBar,從而理解對(duì)事件的處理。最后用簡(jiǎn)單的應(yīng)用程序來(lái)綜合本次課所學(xué)的概念。一旦理解了所有這些控件和類,就可以著手建立完整的應(yīng)用程序。 基本知識(shí) 類CStatic向用戶顯示靜態(tài)文本信息。這些信息既可以是純悴的信息(如描述某個(gè)錯(cuò)誤的消息對(duì)話框中的文本),也可以是用來(lái)標(biāo)識(shí)其他控件的簡(jiǎn)短的標(biāo)簽。 類CStatic的對(duì)象還有其他幾種顯示風(fēng)格,改變風(fēng)格可使標(biāo)簽顯示成實(shí)心矩形、邊框或圖標(biāo)。類CStatic的實(shí)心矩形或邊框式風(fēng)格能夠可視化地將界面要素組合起來(lái),并可在控件之間添加分隔條。 CStatic控件總是某個(gè)父窗口的子窗口。通常情況下,父窗口是應(yīng)用程序的主窗口或?qū)υ捒颉S脙尚写a和一條聲明語(yǔ)句就可以建立靜態(tài)文本控件。CStatic *cs;cs=new CStatic();cs-Create(“hello world”,WS_CHILD|WS_VISIBLE|SS_CENTER,CRect(50,80,150,150),this); 上面兩行建立控件的代碼通常也是用MFC手工建立其他所有控件的范例。對(duì)new的調(diào)用為類CStatic的實(shí)例分配了內(nèi)存,在此過程中,它調(diào)用了該類的構(gòu)造函數(shù)。構(gòu)造函數(shù)完成了該類所需要的所有初始化任務(wù)。Create函數(shù)建立了窗口級(jí)的控件,并把它顯示在屏幕上。B00L CStatic:Create(LPCSTR lpText, 控件所顯示的文本 DWORD dwStyle, 控件的窗口風(fēng)格 const RECT& rect, 控件在其父窗口中的位置和大小 CWnd * pParentWnd, 父窗口(NULL值是非法的,它必須有父窗口) UINT nID=0xffff); 控件的資源ID(可有可無(wú))如果成功地建立了控件,函數(shù)返回TRUE,否則返回FALSE。 參數(shù)dwStyle是最重要的參數(shù),它控制控件的外觀和行為。 CStatic的風(fēng)格 所有的控件都有各種顯示風(fēng)格。函數(shù)Create在建立控件時(shí)用dwStyle參數(shù)確定了這些風(fēng)格。風(fēng)格參數(shù)是通過不同屏蔽常量的“或”操作建立的一個(gè)位屏蔽。在MFC文檔中可查找到有關(guān)CStatic控件的可用常量(先找到CStatic:Create函數(shù)所在的頁(yè)面,然后單擊該頁(yè)的Static Style項(xiàng)),下面是對(duì)這些常量的簡(jiǎn)要描述:從CWnd繼承來(lái)的風(fēng)格:WS_CHILD CStatic必需具有的風(fēng)格WS_VISIBLE控件對(duì)用戶是可見的WS_DISABLED控件拒絕用戶事件WS_BORDER控件的文本用邊框框起來(lái)CStatic固有的風(fēng)格:SS_BLACKFRAME控件顯示成矩形邊框,顏色與窗口的邊框顏色相同SS_BLACKRECT控件顯示成實(shí)心矩形,顏色與窗口的邊框顏色相同SS_CENTER文本居中SS_GRAYFRAME控件顯示成矩形邊框,顏色與桌面顏色相同SS_GRAYRECT控件顯示成實(shí)心矩形,顏色與桌面顏色相同SS_IC0N控件顯示成圖標(biāo),文本字符串用作資源文件中的圖標(biāo)的名字,rect參數(shù)僅控制控件的位置SS_LEFT文本左對(duì)齊,多出的文本回行SS_LEFTN0WORDWRAP文本左對(duì)齊,多出的文本被裁剪掉SS_NOPREFIX除非使用該屬性,否則文本字符串中的字符&表示加速鍵前綴SS_RIGHT文本右對(duì)齊,多出的文本回行SS_SIMPLE單行文本,左對(duì)齊,父窗口忽略所有的CTLCOLOR消息SS_USERITEM用戶定義項(xiàng)SS_WHITEFRAME控件顯示成矩形邊框,顏色與窗口的背景色相同SS_WHITERECT控件顯示成實(shí)心矩形,顏色與窗口的背景色相同這些常量有兩個(gè)不同的來(lái)源。以“SS”(Static Style的縮寫)開頭的常量只適用于CStatic控件。以“WS”(Window Style的縮寫)開頭的常量適用于所有的窗口,因此在CWnd的對(duì)象中定義這些常量,CStatic繼承了其行為。CWnd中還定義了很多以“WS”開頭的風(fēng)格常量,在MFC文檔中查找CWnd:Create函數(shù)可查到這些常量。適用于CStatic對(duì)象的以“WS”開頭的風(fēng)格常量只有上面四個(gè)。CStatic對(duì)象至少是風(fēng)格常量WS_CHILD 和WS_VISIBLE的“或”操作。除非該控件是另一個(gè)窗口的子窗口,否則它是不能被建立的;而且如果沒有指定WS_VISIBLE,那么它是不可見的。WS_DISABLE控制標(biāo)簽對(duì)事件的響應(yīng)。因?yàn)闃?biāo)簽并不響應(yīng)擊鍵或鼠標(biāo)單擊等事件,所以特地將它禁止掉是多余的。其他風(fēng)格屬性是可有可無(wú)的,它們控制標(biāo)簽的外觀。修改傳遞給函數(shù)CStatic:Create的風(fēng)格屬性,可以控制靜態(tài)控件在屏幕上的顯示。用風(fēng)格屬性修改CStatic對(duì)象的文本顯示可使我們掌握很多不同的風(fēng)格。代碼分析下面代碼可有助于理解CStatic對(duì)象的行為。/static1.cpp#include / Declare the application classclass CTestApp : public CWinApppublic:virtual BOOL InitInstance();CTestApp TestApp; class CTestWindow : public CFrameWnd CStatic* cs;public:CTestWindow();CTestWindow();BOOL CTestApp:InitInstance()m_pMainWnd = new CTestWindow();m_pMainWnd-ShowWindow(m_nCmdShow);m_pMainWnd-UpdateWindow();return TRUE;CTestWindow:CTestWindow() CRect r;Create(NULL, CStatic Tests, WS_OVERLAPPEDWINDOW,CRect(0,0,200,200);GetClientRect(&r);r.InflateRect(-20,-20);cs = new CStatic();cs-Create(hello world ,WS_CHILD|WS_VISIBLE|WS_BORDER|SS_CENTER,r,this);CTestWindow:CTestWindow()delete cs; 字體通過調(diào)用CStatic從CWnd繼承來(lái)的SetFont函數(shù),我們可以修改靜態(tài)標(biāo)簽所使用的字體。注意兩個(gè)類如何交互作用。/static6.cpp#include class CTestApp : public CWinApppublic:virtual BOOL InitInstance();CTestApp TestApp; class CTestWindow : public CFrameWnd CStatic* cs;CFont *font;public:CTestWindow();CTestWindow();BOOL CTestApp:InitInstance()m_pMainWnd = new CTestWindow();m_pMainWnd-ShowWindow(m_nCmdShow);m_pMainWnd-UpdateWindow();return TRUE;CTestWindow:CTestWindow() CRect r;Create(NULL, CStatic Tests, WS_OVERLAPPEDWINDOW,CRect(0,0,200,200);GetClientRect(&r);r.InflateRect(-20,-20);cs = new CStatic();cs-Create(Hello World,WS_CHILD|WS_VISIBLE|WS_BORDER|SS_CENTER,r,this);/ Create a new 36 point Arial fontfont = new CFont;font-CreateFont(36,0,0,0,700,0,0,0, ANSI_CHARSET,OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH|FF_DONTCARE, arial); / Cause the label to use the new fontcs-SetFont(font);CTestWindow:CTestWindow()delete cs; delete font;四、 消息和事件處理按鈕、窗口改變大小、定時(shí)器/ button4.cpp#include #define IDC_BUTTON 100#define IDT_TIMER1 200/ 定義應(yīng)用程序類class CButtonApp : public CWinApppublic:virtual BOOL InitInstance();/ 建立應(yīng)用程序類對(duì)象(實(shí)例)CButtonApp ButtonApp; / 定義主窗口類class CButtonWindow : public CFrameWnd CButton *button; /按鈕類對(duì)象指針public:CButtonWindow(); /構(gòu)造函數(shù)afx_msg void HandleButton(); /按鈕事件處理函數(shù)afx_msg void OnSize(UINT, int, int); /尺寸大小改變處理函數(shù)afx_msg void OnTimer(UINT); /時(shí)間消息處理函數(shù)DECLARE_MESSAGE_MAP() /定義一個(gè)消息映像;/ 按鈕消息處理函數(shù)定義void CButtonWindow:HandleButton()MessageBeep(0xFFFFFFFF);/ 改變窗口尺寸處理函數(shù)void CButtonWindow:OnSize(UINT nType, int cx,int cy)CRect r;GetClientRect(&r);r.InflateRect(-20,-20);button-MoveWindow(r);/ 時(shí)間消息處理函數(shù)void CButtonWindow:OnTimer(UINT id)MessageBeep(0xFFFFFFFF);/ 消息影射表BEGIN_MESSAGE_MAP(CButtonWindow, CFrameWnd) /兩個(gè)參數(shù) 窗口類與它的基類ON_BN_CLICKED(IDC_BUTTON, HandleButton) /控件ID,處理函數(shù),窗口消息ON_WM_SIZE() /系統(tǒng)消息 參考CWnd類 自動(dòng)調(diào)用OnSize()ON_WM_TIMER() /定時(shí)器消息 無(wú)分號(hào)END_MESSAGE_MAP()/ 應(yīng)用程序初始化函數(shù)BOOL CButtonApp:InitInstance()m_pMainWnd = new CButtonWindow();m_pMainWnd-ShowWindow(m_nCmdShow);m_pMainWnd-UpdateWindow();return TRUE;/ 窗口類構(gòu)造函數(shù)CButtonWindow:CButtonWindow() CRect r;/ 建立窗口Create(NULL, CButton Tests, WS_OVERLAPPEDWINDOW,CRect(0,0,200,200);/ Set up the timerSetTimer(IDT_TIMER1, 1000, NULL); / 1000 ms./ 獲得窗口的客戶矩形尺寸GetClientRect(&r);r.InflateRect(-20,-20);/ 建立一個(gè)按鈕對(duì)象button = new CButton();button-Create(Push me,WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,r,this,IDC_BUTTON);滾動(dòng)條/ sb2.cpp#include #define IDC_SCROLLBAR 100const int MAX_RANGE=100;const int MIN_RANGE=0;/ Declare the application classclass CScrollBarApp : public CWinApppublic:virtual BOOL InitInstance();/ Create an instance of the application classCScrollBarApp ScrollBarApp; / Declare the main window classclass CScrollBarWindow : public CFrameWnd CScrollBar *sb;public:CScrollBarWindow();afx_msg void OnHScroll(UINT nSBCode, UINT nPos,CScrollBar* pScrollBar);DECLARE_MESSAGE_MAP() ;/ The message handler functionvoid CScrollBarWindow:OnHScroll(UINT nSBCode,UINT nPos, CScrollBar* pScrollBar)int pos;pos = sb-GetScrollPos();switch ( nSBCode )case SB_LINEUP:pos -= 1;break;case SB_LINEDOWN:pos += 1;break;case SB_PAGEUP:pos -= 10;break;case SB_PAGEDOWN:pos += 10;break;case SB_TOP:pos = MIN_RANGE;break;case SB_BOTTOM:pos = MAX_RANGE;break;case SB_THUMBPOSITION:pos = nPos;break;default:return;if ( pos MAX_RANGE )pos = MAX_RANGE;sb-SetScrollPos( pos, TRUE );/ The message mapBEGIN_MESSAGE_MAP(CScrollBarWindow, CFrameWnd)ON_WM_HSCROLL()END_MESSAGE_MAP()/ The InitInstance function is called once/ when the application first executesBOOL CScrollBarApp:InitInstance()m_pMainWnd = new CScrollBarWindow();m_pMainWnd-ShowWindow(m_nCmdShow);m_pMainWnd-UpdateWindow();return TRUE;/ The constructor for the window classCScrollBarWindow:CScrollBarWindow() CRect r;/ Create the window itselfCreate(NULL, CScrollBar Tests, WS_OVERLAPPEDWINDOW,CRect(0,0,200,200);/ Get the size of the client rectangleGetClientRect(&r);/ Create a scroll barsb = new CScrollBar();sb-Create(WS_CHILD|WS_VISIBLE|SBS_HORZ,CRect(10,10,r.Width()-10,30),this,IDC_SCROLLBAR);sb-SetScrollRange(MIN_RANGE,MAX_RANGE,TRUE);五、簡(jiǎn)單應(yīng)用程序攝氏溫度轉(zhuǎn)換器/ f2c.cpp#include #include const int IDC_SB1=100;const int IDC_CS1=101;const int IDC_CS2=102;const int IDC_BUTTON=103;const int MIN_RANGE=0;const int MAX_RANGE=100;/ Define an application objectclass CApp : public CWinApppublic:virtual BOOL InitInstance();/ Create an instance of the application objectCApp App; / Define the window objectclass CWindow : public CFrameWnd CScrollBar* sb1;CStatic* cs1;CStatic* cs2;CButton* button;public:CWindow(); afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);afx_msg void handleButton();DECLARE_MESSAGE_MAP();/ The message mapBEGIN_MESSAGE_MAP( CWindow, CFrameWnd )ON_WM_HSCROLL()ON_BN_CLICKED(IDC_BUTTON, handleButton)END_MESSAGE_MAP()/ Window constructorCWindow:CWindow() / Create the windowCreate(NULL, 攝氏溫度轉(zhuǎn)換器, WS_OVERLAPPEDWINDOW,CRect(0,0,208,208); / Create the fahrenheit labelcs1 = new CStatic();cs1-Create(Farhenheit = 32,WS_CHILD|WS_VISIBLE|WS_BORDER,CRect(0,0,200,50),this, IDC_CS1);/ Create celsius labelcs2 = new CStatic();cs2-Create(Celsius = 0,WS_CHILD|WS_VISIBLE|WS_BORDER,CRect(0,51,200,100),this, IDC_CS2);/ Create the scroll barsb1 = new CScrollBar();sb1-Create(WS_CHILD|WS_VISIBLE|SBS_HORZ,CRect(0,101,200,130),this, IDC_SB1);sb1-SetScrollRange(MIN_RANGE,MAX_RANGE,TRUE);sb1-SetScrollPos(32);/ Create quit buttonbutton = new CButton();button - Create(Quit,WS_CHILD|WS_VISIBLE|WS_BORDER,CRect(0,131,200,180),this, IDC_BUTTON);/ Handle the horizontal scroll barvoid CWindow:OnHScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar )int pos;pos = pScrollBar-GetScrollPos();switch ( nSBCode )case SB_LINEUP:pos -= 1;break;case SB_LINEDOWN:pos += 1;break;case SB_PAGEUP: pos -= 10;break;case SB_PAGEDOWN:pos += 10;break;case SB_TOP:pos = MIN_RANGE;break;case SB_BOTTOM:pos = MAX_RANGE;break;case SB_THUMBPOSITION:pos = nPos;break;default:return;if ( pos MAX_RANGE )pos = MAX_RANGE;sb1-SetScrollPos( pos, TRUE );/ set the labels to the new valueschar s100;ostrstream ostr(s,100);ostr Fahrenheit= pos ends;SetDlgItemText(IDC_CS1,s);ostr.seekp(ios:beg);ostr Celsius= (pos-32)*5/9 ShowWindow(m_nCmdShow);m_pMainWnd-UpdateWindow();return TRUE;利息計(jì)算器/ interest.cpp#include #include #include #include const int IDC_ED1=100;const int IDC_ED2=101;const int IDC_ED3=102;const int IDC_RESULT=103;const int IDC_BUTTON=104;/ Define an application objectclass CApp : public CWinApppublic:virtual BOOL InitInstance();/ Create an instance of the applicationCApp App; / Define the window objectclass CWindow : public CFrameWnd CEdit* ed1;CEdit* ed2;CEdit* ed3;CStatic* cs1;CStatic* cs2;CStatic* cs3;CStatic* result;CButton* button;CBrush *brush;public:CWindow(); CWindow(); afx_msg void HandleChange();afx_msg void HandleButton();afx_msg HBRUSH OnCtlColor( CDC* pDC, CWnd* pWnd, UINT nCtlColor );DECLARE_MESSAGE_MAP()virtual BOOL PreTranslateMessage(MSG* msg);/ This function interprets tab keys properlyBOOL CWindow:PreTranslateMessage(MSG *msg)return :IsDialogMessage(m_hWnd,msg);/ Message mapBEGIN_MESSAGE_MAP( CWindow, CFrameWnd )ON_EN_CHANGE(IDC_ED1, HandleChange)ON_EN_CHANGE(IDC_ED2, HandleChange)ON_EN_CHANGE(IDC_ED3, HandleChange)ON_BN_CLICKED(IDC_BUTTON, HandleButton)END_MESSAGE_MAP()/ Window constructorCWindow:CWindow() / Create the windowCreate(NULL, Interest, WS_OVERLAPPED | WS_MINIMIZEBOX | WS_SYSMENU, CRect(CPoint(10,10),CSize(160,226); / Create the labelscs1 = new CStatic();cs1-Create(Amount,WS_CHILD|WS_VISIBLE,CRect(CPoint(8,10),CSize(72,20),this);cs2 = new CStatic();cs2-Create(Rate(%),WS_CHILD|WS_VIS

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論