第一篇:MFC編程實驗個人總結(jié)報告
MFC編程實驗總結(jié)報告
知識總結(jié)+個人心得
2011年暑期MFC編程實驗報告
/ 6
MFC編程實驗個人總結(jié)報告
一、MFC類、函數(shù)等知識小結(jié):
1、SetTimer(1, m_intLevel, NULL);在MFC程序中SetTimer被封裝在CWnd類中,調(diào)用就不用指定窗口句柄了于是SetTimer函數(shù)的原型變?yōu)椋?/p>
UINT SetTimer(UINT nIDEvent,UINT nElapse,void(CALLBACK EXPORT *lpfnTimer)(HWND,UINT ,YINT ,DWORD))
當(dāng)使用SetTimer函數(shù)的時候,就會生成一個計時器。函數(shù)中nIDEvent指的是計時器的標(biāo)識,也就是名字。nElapse指的是時間間隔,也就是每隔多長時間觸發(fā)一次事件。第三個參數(shù)是一個回調(diào)函數(shù),在這個函數(shù)里,放入你想要做的事情的代碼,你可以將它設(shè)定為NULL,也就是使用系統(tǒng)默認(rèn)的回調(diào)函數(shù),系統(tǒng)默認(rèn)認(rèn)的是onTime函數(shù)。這個函數(shù)怎么生成的呢?你需要在需要計時器的類的生成onTime函數(shù):在ClassWizard里,選擇需要計時器的類,添加WM_TIME消息映射,就自動生成onTime函數(shù)了。然后在函數(shù)里添加代碼,讓代碼實現(xiàn)功能。每隔一段時間就會自動執(zhí)行一次。
例:
SetTimer(1,1000,NULL);
1:計時器的名稱;
1000:時間間隔,單位是毫秒;
NULL:使用onTime函數(shù)。
當(dāng)不需要計時器的時候調(diào)用KillTimer(nIDEvent);
例如:KillTimer(1);
KillTimer(1);
2、typedef struct{};(1)struct{ int x;int y;}test1;好,定義了 結(jié)構(gòu) test1,test1.x 和 test1.y 可以在語句里用了。
(2)struct test {int x;int y;}test1;定義了結(jié)構(gòu) test1,test1.x 和 test1.y 可以在語句里用了。與(1)比,省寫 了 test
(3)typedef struct test
/ 6
{int x;int y;}text1,text2;
此處時說了這種結(jié)構(gòu)體(類型)別名 叫 text1 或叫 text2,而不是定義了結(jié)構(gòu)體變量.真正在語句里用,還要寫: text1 test1;//定義結(jié)構(gòu)體變量 然后好用 test1.x test1.y 或?qū)?text2 test1;//定義結(jié)構(gòu)體變量 然后好用 test1.x test1.y
3、Invalidate();//讓客戶區(qū)無效,即時重新繪制客戶區(qū)
void Invalidate(BOOL bErase = TRUE);
該函數(shù)的作用是使整個窗口客戶區(qū)無效。窗口的客戶區(qū)無效意味著需要重繪,例如,如果一個被其它窗口遮住的窗口變成了前臺窗口,那么原來被遮住的部分就是無效的,需要重繪。這時Windows會在應(yīng)用程序的消息隊列中放置WM_PAINT消息。MFC為窗口類提供了WM_PAINT的消息處理函數(shù)OnPaint,OnPaint負(fù)責(zé)重繪窗口。視圖類有一些例外,在視圖類的OnPaint函數(shù)中調(diào)用了OnDraw函數(shù),實際的重繪工作由OnDraw來完成。參數(shù)bErase為TRUE時,重繪區(qū)域內(nèi)的背景將被擦除,否則,背景將保持不變。
4、CDC::Rectangle(左上x,左上y,右下x,右下y);使用該函數(shù)畫一個矩形,可以用當(dāng)前的畫筆畫矩形輪廓,用當(dāng)前畫刷進(jìn)行填充。
函數(shù)原型:BOOL Rectangle(HDC hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect);
hdc:設(shè)備環(huán)境句柄。
nLeftRect:指定矩形左上角的邏輯X坐標(biāo)。
nTopRect:指定矩形左上角的邏輯Y坐標(biāo)。
nRightRect:指定矩形右下角的邏輯X坐標(biāo)。
nBottomRect:指定矩形右下角的邏輯Y坐標(biāo)。
5、CBrush:: CBrush//畫刷類
eg:CBrush brushStick(RGB(127, 127, 127));四種構(gòu)造函數(shù): CBrush();
CBrush(COLORREF crColor);
CBrush(int nIndex, COLORREF crColor);
CBrush(CBitmap* pBitmap);
/ 6
參數(shù)說明: crColor指定畫刷的前景色(RGB方式)。如果畫刷是陰影線型的,則指定陰影線的顏色。
nIndex指定畫刷陰影線采用的風(fēng)格,取值如下:
HS_BDIAGONAL45度的向下影線(從左到右)
HS_CROSS水平和垂直方向以網(wǎng)格線作出陰影
HS_DIAGCROSS 45度的網(wǎng)格線陰影
HS_FDIAGONAL 45度的向上陰影線(從左到右)
HS_HORIZONTAL 水平的陰影線
HS_VERTICAL 垂直的陰影線
pBitmap指向CBitmap對象的指針,該對象指定了畫刷要繪制的位圖。
構(gòu)造函數(shù)說明: 類CBrush一共有四個覆蓋的構(gòu)造函數(shù)。不帶參數(shù)的那個構(gòu)造函數(shù)構(gòu)造一個未初始化的CBrush對象,在使用該對象之前需要另外初始化。如果使用了不帶參數(shù)的那個構(gòu)造函數(shù),則必須用CreateSolidBrush、CreateHatchBrush、CreateBrushIndirect、CreatePatternBrush或CreateDIBPatternBrush來初始化返回的CBrush對象。如果使用了帶參數(shù)的構(gòu)造函數(shù),則不再需要初始化CBrush對象。帶參數(shù)的構(gòu)造函數(shù)在出錯時會產(chǎn)生一個異常,而不帶參數(shù)的構(gòu)造函數(shù)總是成功返回。只帶有一個參數(shù)COLORREF的構(gòu)造函數(shù)用指定的顏色構(gòu)造一個實線型的畫刷。顏色是一個RGB值,可以用WINDOWS.H中的宏RGB構(gòu)造出來。帶兩個參數(shù)的構(gòu)造函數(shù)構(gòu)造一個陰影線型的畫刷,參數(shù)nIndex指定了陰影線模式的指數(shù)(index)。參數(shù)crColor指定了畫刷的顏色。帶有一個CBitmap型參數(shù)的構(gòu)造函數(shù)構(gòu)造一個模式化的畫刷。參數(shù)指定一個位圖。該位圖應(yīng)該是已經(jīng)用CBitmap::CreateBitmap、CBitmap::CreateBitmapIndirect、CBitmap::LoadBitmap或CBitmap::CreateCompatiableBitmap建立或加載的位圖。填充模式下的位圖的最小尺寸為8像素×8像素。
6、MessageBox(“Game Over!”);MessageBox(NULL,“text”,“title”,BUTTON);參數(shù)title:string類型,指定消息對話框的標(biāo)題。text:指定消息對話框中顯示的消息,該參數(shù)可以是數(shù)值數(shù)據(jù)類型、字符串或boolean值。icon:Icon枚舉類型,可選項,指定要在該對話框左側(cè)顯示的圖標(biāo)。button:Button枚舉類型,可選項,指定顯示在該對話框底部的按鈕。default:數(shù)值型,可選項,指定作為缺省按鈕的按鈕編號,按鈕編號自左向右依次計數(shù),缺省值為1,如果該參數(shù)指定的編號超過了顯示的按鈕個數(shù),那么MessageBox()函數(shù)將使用缺省值返回值Integer。函數(shù)執(zhí)行成功時返回用戶選擇的按鈕編號(例如1、2、3等),發(fā)生錯誤時返回-1。如果任何參數(shù)的值為NULL,4 / 6
MessageBox()函數(shù)返回NULL。
函數(shù)原型:MessageBox.Show(Text,Title,MessageBoxButtons,MessageBoxIcon ,MessageBoxDefaultButtons)
參數(shù)說明:
(1)Text:必選項,消息框的正文。(2)Title:可選項,消息框的標(biāo)題。
(3)MessageBoxButtons:可選項,消息框的按鈕設(shè)置,默認(rèn)只顯示【確定】按鈕。
OK――確定 OKCancel――確定和取消 AbortRetryIgnore――終止、重試和忽略
YesNoCancel――是、否和取消 YesNo――是和否 RetryCancel――重試和取消
(4)MessageBoxIcon:對話框中顯示的圖標(biāo)樣式,默認(rèn)不顯示任何圖標(biāo)。
Question――問號 Information、Asterisk――i號 Error、Stop、Hand――錯誤號
Warning、Exclamation――!號 None――不顯示任何圖標(biāo)
(5)MessageBoxDefaultButtons:可選項,對話框中默認(rèn)選中的按鈕設(shè)置。
DefaultButton1――第1個button是默認(rèn)按鈕
DefaultButton2――第2個button是默認(rèn)按鈕
DefaultButton3――第3個button是默認(rèn)按鈕
7、Memcpy(拷貝目的地,拷貝對象,拷貝長度);包含在頭文件#include
函數(shù)原型:
extern void *memcpy(void *destin, void *source, unsigned n);功能:
由source指向地址為起始地址的連續(xù)n個字節(jié)的數(shù)據(jù)復(fù)制到以destin指向地址為起始地址的空間內(nèi)。eg: int a=5,b=9;memcpy(a,b,sizeof(a));//將b按位拷給a;說明:
1.source和destin所指內(nèi)存區(qū)域不能重疊,函數(shù)返回指向destin的指針。
2.與strcpy相比,memcpy并不是遇到'