第一篇:中國石油大學(華東)VC++實驗5
實驗五 定時器編程實驗
一、實驗目的
(1)熟悉Visual C++ 6.0 開發(fā)環(huán)境;
(2)掌握API 編程模式中定時器的使用方法
(3)熟練掌握在Visual C++ 6.0 開發(fā)環(huán)境調(diào)試程序的方法。
二、實驗內(nèi)容
設(shè)計一個窗口,在窗口中間位置繪制一個紅色粗實線的圓角矩形,并用交替使用三種不同樣式的畫刷填充矩形的內(nèi)部,每次刷新的時間間隔為1.0 秒。
三、實驗報告
(1)列出定時器操作相關(guān)的程序清單;
#include
char lpszClassName[] = “窗口”;//窗口類名
char lpszTitle[]= “My_Windows”;//窗口標題名
//窗口類的定義
wndclass.style=0;//窗口類型為缺省類型
wndclass.lpfnWndProc=WndProc;//定義窗口處理函數(shù)
wndclass.cbClsExtra=0;//窗口類無擴展
wndclass.cbWndExtra=0;//窗口實例無擴展
wndclass.hInstance=hInstance;//當前實例句柄
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//窗口的最小化圖標為缺省圖標
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);//窗口采用箭頭光標
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//窗口背景為白色
wndclass.lpszMenuName=NULL;//窗口中無菜單
//wndclass.lpszClassName=(LPCWSTR)lpszClassName;wndclass.lpszClassName=lpszClassName;//窗口類名為“窗口” //---------------以下進行窗口類的注冊-------if(!RegisterClass(&wndclass))//如果注冊失敗則發(fā)出警告 { MessageBeep(0);return FALSE;} //----------------創(chuàng)建窗口-------------------hwnd=CreateWindow
(// _T(“Title”),lpszClassName, //窗口類名
lpszTitle, //窗口實例的標題名
WS_OVERLAPPEDWINDOW, //窗口的風格
CW_USEDEFAULT,CW_USEDEFAULT, //窗口左上角坐標為缺省值
CW_USEDEFAULT,CW_USEDEFAULT, //窗口的高和寬為缺省值
NULL,//此窗口無附窗口
NULL,//此窗口無主菜單
hInstance, //創(chuàng)建此窗口的應(yīng)用程序的當前句柄
NULL
//不使用該值);
//---------------顯示窗口----------------------ShowWindow(hwnd, nCmdShow);//--------------繪制用戶區(qū)---------------------UpdateWindow(hwnd);//---------------消息循環(huán)----------------------while(GetMessage(&Msg, NULL, 0, 0)){
TranslateMessage(&Msg);
DispatchMessage(&Msg);} return Msg.wParam;//消息循環(huán)結(jié)束即程序終止時將信息返回系統(tǒng) }
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ HDC hdc;HBRUSH hb;HPEN hp;PAINTSTRUCT ps;static int state=0;static int TIMERID=1;switch(message){ case WM_CREATE: SetTimer(hWnd, TIMERID, 1000, NULL);
break;case WM_TIMER: if(wParam==TIMERID){ state=state%3;InvalidateRect(hWnd, NULL, TRUE);} break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
SetMapMode(hdc,MM_TEXT);
hp=(HPEN)GetStockObject(BLACK_PEN);SelectObject(hdc,hp);
if(state==0){ hb=CreateSolidBrush(RGB(255,0,0));
SelectObject(hdc,hb);
RoundRect(hdc,400,120,700,420,15,15);
DeleteObject(hb);}//定義紅色畫刷填充 if(state==1){
hb=CreateSolidBrush(RGB(0,255,0));
SelectObject(hdc,hb);
RoundRect(hdc,400,120,700,420,15,15);
DeleteObject(hb);
}//定義綠色畫刷填充
if(state==2)
{
hb=CreateSolidBrush(RGB(255,255,0));
SelectObject(hdc,hb);
RoundRect(hdc,400,120,700,420,15,15);
DeleteObject(hb);
}//定義黃色畫刷填充 state++;EndPaint(hWnd,&ps);break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);} return 0;} 實驗結(jié)果如下:
間隔0.1秒。
(2)總結(jié)定時器消息編程的步驟,以及程序設(shè)計過程中需要注意的問題; 定時器消息編程的步驟: 1.定時器消息
定時器時間到時,向窗口發(fā)送WM_TIMER 消息,應(yīng)用程序窗口通過處理該消息來對定時器事件進行處理,該消息的參數(shù)說明如下:
WM_TIMER wTimerID = wParam;// 定時器標識符
tmprc =(TIMERPROC *)lParam;// 定時器回調(diào)函數(shù)的地址
其中定時器回調(diào)函數(shù)在使用 SetTimer 啟動定時器時指定,如果沒有指定定時器回調(diào)函數(shù)則可直接處理WM_TIMER 消息。2.啟動定時器
使用 SetTimer 函數(shù)創(chuàng)建一個定時器,并制定超時時間,然后啟動定時器。該函數(shù)說明如下:
UINT SetTimer(HWND hWnd, // 創(chuàng)建定時器的窗口句柄 UINT nIDEvent, // 定時器標識符
UINT uElapse, // 定時時間,單位是16毫秒 TIMERPROC lpTimerFunc // 定時器回調(diào)函數(shù)地址);3.銷毀定時器
定時器在不使用時要使用KillTimer 函數(shù)進行銷毀,該函數(shù)說明如下: BOOL KillTimer(HWND hWnd, // 創(chuàng)建定時器的窗口句柄 UINT uIDEvent // 定時器標識符);程序設(shè)計過程中需要注意的問題:
定時器的使用時,要嚴格按照定時器消息的編寫,啟動定時器,銷毀定時器這三個步驟來做,缺少其中任何一個步驟,都沒有可能實現(xiàn)給定的功能。
特別是最后一個步驟,很容易忘記。我就忘記了,費了好大勁,才知道哪里錯了。(3)總結(jié)實驗的心得體會,實驗中遇到的困難以及解決的方法等。
通過這次試驗,我熟悉了Visual C++ 6.0的 開發(fā)環(huán)境;了解了API 編程模式中定時器的使用方法,掌握了在Visual C++ 6.0 開發(fā)環(huán)境調(diào)試程序的方法。
在VC課上,老師留了作業(yè),讓我們自愿課下編寫一個關(guān)于定時器的程序,并做個PPT給同學們講講,我不會,菅學輝同學上去講的,講得很好,很羨慕他,自己也想編一個,可自己不會,很遺憾。這次試驗后,我會了,知道了如何編寫一個定時器的程序,自己真的很高興。定時器消息的編寫,啟動定時器,銷毀定時器這三個步驟,一定要一步一步的來做,不能把最后一個步驟給忘了。
第二篇:中國石油大學(華東)VC++實驗2
實驗二 熟悉 Windows 源程序基本結(jié)構(gòu)
一、實驗目的
(1)熟悉Visual C++ 6.0開發(fā)環(huán)境;
(2)熟悉Windows系統(tǒng)事件驅(qū)動的運行機制;(3)熟悉Windows應(yīng)用程序源程序基本結(jié)構(gòu);
二、實驗內(nèi)容
創(chuàng)建一個空白的 Win32 Application 應(yīng)用程序,建立相關(guān)文件,手工輸入下列 代碼,實現(xiàn)一個 Windows 窗口程序。
#include “windows.h”
LRESULT CALLBACK WndProc(HWND hwnd,UINT messgae, WPARAM wParam,LPARAM lParam);
int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nCmdShow){
WNDCLASS ws;HWND hWnd;MSG msg;ws.style = 0;
ws.lpfnWndProc = WndProc;ws.cbClsExtra = 0;ws.cbWndExtra = 0;
ws.hInstance = hThisInst;
ws.hIcon = LoadIcon(NULL, IDI_HAND);
ws.hCursor = LoadCursor(NULL,IDC_CROSS);
ws.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH);ws.lpszMenuName = NULL;
ws.lpszClassName = “DemoClass”;if(!RegisterClass(&ws)){
return-1;}
hWnd = CreateWindow(“DemoClass”,“My First Windows Program”, WS_OVERLAPPEDWINDOW,100,200,640,480, NULL,NULL,hThisInst,NULL);ShowWindow(hWnd,nCmdShow);UpdateWindow(hWnd);
while(GetMessage(&msg,NULL,0,0)){
TranslateMessage(&msg);DispatchMessage(&msg);}
return msg.wParam;}
LRESULT CALLBACK WndProc(HWND hwnd,UINT messgae, WPARAM wParam,LPARAM lParam){
switch(messgae){
case WM_DESTROY: PostQuitMessage(0);break;default:
return DefWindowProc(hwnd,messgae,wParam,lParam);}
return 0;}
三、實驗報告
(1)列出源程序清單,以及程序的運行結(jié)果;
#include “windows.h” LRESULT CALLBACK WndProc(HWND hwnd,UINT messgae,WPARAM wParam,LPARAM lParam);
//LRESULT處理消息產(chǎn)生的一個有符號值 //WndProc窗口過程 擴充 窗口函數(shù) //UINT無符號整型 //WPARAM消息類型
//LPARAM傳遞參數(shù)
int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE hPrevInst,LPSTR lpszCmdLine, int nCmdShow)//WINAPI函數(shù)
//HINSTANCE標示當前實例句柄 //LPSTR字符串
{ WNDCLASS ws;//WNDCLASS窗口類
HWND hWnd;MSG msg;ws.style = 0;ws.lpfnWndProc = WndProc;//WNDCLASSEX 中最重要的成員莫過于lpfnWndProc了。前綴 lpfn 表示該成員是一個指向函數(shù)的長指針 ws.cbClsExtra = 0;//cbClsExtra Specifies the amount of extra memory, in bytes, that Windows should reserve for the class.ws.cbWndExtra = 0;//cbWndExtra Specifies the amount of extra memory, in bytes,//that Windows should reserve for each window in the class.懶得翻譯了,自己看吧 ws.hInstance = hThisInst;ws.hIcon = LoadIcon(NULL, IDI_HAND);//LoadIcon圖標//hIcon圖標句柄//NULL空操作語句//IDI_HAND 手形圖標 ws.hCursor = LoadCursor(NULL,IDC_CROSS);//hCursor光標句柄
//LoadCursor該函數(shù)從一個與應(yīng)用事例相關(guān)的可執(zhí)行文件(EXE文件)中載入指定的光標資源 //IDC_CROSS 十字光標
ws.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH);//hbrBackground是主窗口背景色,調(diào)用CreateWindow時創(chuàng)建的客戶區(qū)默認使用的就是窗口背景色
//HBRUSH畫刷句柄//GetStockObject取得一個圖形對象//WHITE_BRUSH白色背景 //通過函數(shù)來設(shè)置一個一個白色的背景,這里大家設(shè)置為NULL看看,會很有趣的 ws.lpszMenuName = NULL;//wndclass里的lpszMenuName的類型問題 ws.lpszClassName = “DemoClass”;//DemoClass試講 if(!RegisterClass(&ws))//RegisterClass注冊窗口類
{ return-1;} hWnd=CreateWindow(“DemoClass”,“MyFirstWindowsProgram”,WS_OVERLAPPEDWINDOW,100,200,640,480,NULL,NULL,hThisInst,NULL);//WS_OVERLAPPEDWINDOW可以創(chuàng)建一個擁有各種窗口風格的窗體,包括標題,系統(tǒng)菜單,邊框,最小化和最大化按鈕等。ShowWindow(hWnd,nCmdShow);//參數(shù) nCmdShow 指定程序的窗口應(yīng)該如何顯示,例如最大化、最小化、隱藏等。UpdateWindow(hWnd);while(GetMessage(&msg,NULL,0,0)){ TranslateMessage(&msg);//該函數(shù)將虛擬鍵消息轉(zhuǎn)換為字符消息
DispatchMessage(&msg);//函數(shù)功能:該函數(shù)分發(fā)一個消息給窗口程序。} return msg.wParam;} LRESULT CALLBACK WndProc(HWND hwnd,UINT messgae,WPARAM wParam,LPARAM lParam)//自定義消息處理函數(shù)都要求返回LRESULT,如果返回值不需要處理,可直接返回0即可。如果改消息需要返回特殊值,//就看程序的需要進行返回相應(yīng)的值。{ switch(messgae){ case WM_DESTROY: //在發(fā)送 WM_QUIT消息時,要使用PostMessage發(fā)送,否則,窗口已經(jīng)關(guān)閉,但任務(wù)管理器中進程還存在。PostQuitMessage(0);//PostQuitMessage僅僅讓消息循環(huán)退出,多數(shù)情況下消息循環(huán)退出后進程也該退出了。//使用這種方式能讓系統(tǒng)處理完所有的消息,并有機會釋放各種資源。break;default: return DefWindowProc(hwnd,messgae,wParam,lParam);//函數(shù)功能:該函數(shù)調(diào)用缺省的窗口過程來為應(yīng)用程序沒有處理的任何窗口消息提供缺省的處理。
//該函數(shù)確保每一個消息得到處理。調(diào)用DefWindowProc函數(shù)時使用窗口過程接收的相同參數(shù)。
//函數(shù)原型:LRESULT DefWindowProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam); } return 0;} 程序運行結(jié)果如下:下圖為鼠標沒有在框內(nèi)的情況。
下圖為鼠標指向框內(nèi)的結(jié)果。
(2)總結(jié) Windows 源程序的結(jié)構(gòu)特點,說明各個主要程序段的作用;
Windows 源程序的結(jié)構(gòu)特點:圖形界面,面向?qū)ο蟪绦蛟O(shè)計,事件驅(qū)動,高效的內(nèi)存管理,設(shè)備獨立性動態(tài)連接。WINDOWS程序設(shè)計的特點: 傳統(tǒng)的MS-DOS程序主要采用順序的、關(guān)聯(lián)的、過程驅(qū)動的程序設(shè)計方法。一個程序是一系列預先定義好的操作序列的組合,它具有一定的開頭、中間過程和結(jié)束。程序直接控制程序事件和過程的順序。這樣的程序設(shè)計方法是面向程序而不是面向用戶的,交互性差,用戶界面不夠友好,因為它強迫用戶按照某種不可更改的模式進行工作。
事件驅(qū)動程序設(shè)計是一種全新的程序設(shè)計方法,它不是由事件的順序來控制,而是由事件的發(fā)生來控制,而這種事件的發(fā)生是隨機的、不確定的,并沒有預定的順序,這樣就允許程序的的用戶用各種合理的順序來安排程序的流程。
對于需要用戶交互的應(yīng)用程序來說,事件驅(qū)動的程序設(shè)計有著過程驅(qū)動方法無法替代的優(yōu)點。它是一種面向用戶的程序設(shè)計方法,它在程序設(shè)計過程中除了完成所需功能之外,更多的考慮了用戶可能的各種輸入,并針對性的設(shè)計相應(yīng)的處理程序。它是一種“被動”式程序設(shè)計方法,程序開始運行時,處于等待用戶輸入事件。
各個主要程序段的作用:主要程序的作用已在程序清單的注釋中寫出。(3)總結(jié)實驗的心得體會,實驗中遇到的困難以及解決的方法等。
這次試驗,程序跟第一次的試驗程序相差很大。第一次的程序是水鮮花的程序,用C語言編寫的,能看明白。而這一次的就不行了,真正的用到了老師上課講的知識了。很多固有的函數(shù)名,很多程序段,都看不明白,還得看看書,問問百度,自己理解。
老師上課講了,自己也不太明白,上實驗課,正好是自己理解和吸收課堂知識的時候。這個時間我要好好利用,爭取理解好老師講的知識。
其實,還是有很多的程序不太明白,還得自己問老師,問同學。VC++說實話,跟C++完全不一樣,這是我的感覺,因為,很多的函數(shù)名,符號,都跟C++不一樣,上課,聽的頭有些大。
但是,我會好好理解的,因為這門課對我以后的編程序很重要。
第三篇:中國石油大學(華東)
自 薦 信
尊敬的中國石油大學(華東)學自主招生領(lǐng)導:
您好!
學生李昌民,今年17歲,是山東省萊蕪市第一中學(省級示范性高中)的高三學生,您在百忙之中審閱我的自薦申請材料,我感到榮幸萬分,深表謝意!
中國石油大學(華東),是我心中的夢想,基于對中國石油大學(華東)的敬仰,對中國名校的渴望,我將為走進中國石油大學(華東),努力!
出生于齊魯長城腳下,生長在長勺之戰(zhàn)的歷史故事里,養(yǎng)成了我干脆利落、一鼓作氣的做事風格和善于觀察分析的學習生活習慣。熱愛物理、化學,積極參加各種科技創(chuàng)新活動,愛動手、喜歡小發(fā)明、小制作。
一次,家里來了客人,我看到大人們吸煙后,放到煙灰缸里的煙頭沒有掐滅,煙霧還在飄出,有時候煙灰缸內(nèi)的煙灰隨風飛出,造成室內(nèi)環(huán)境的污染。如何避免這種現(xiàn)象的發(fā)生,曾經(jīng)設(shè)想了好久,能不能給煙灰缸增加一個活動的蓋子,以防止煙灰的隨風散落呢?經(jīng)過多次的設(shè)計、試驗、失敗、改進,一次次的重復實驗,最終成型,設(shè)計成功了一種環(huán)保煙灰缸,并獲得了中華人民共和國實用新型專利,取得了國家知識產(chǎn)權(quán)局頒發(fā)的實用新型專利證書。雖然該小制作要達到實用還需要繼續(xù)改進,但是這卻鍛煉了我的觀察能力、分析能力和設(shè)計能力,提高了自我的認知能力,堅定了勇于創(chuàng)新的自信心,更是切身體會了“失敗是成功之母”的真正含義。
在這個小發(fā)明的制作過程中,總結(jié)出一個道理,即“確定目標、研究方法、堅持努力,才能走向成功”。我相信,這個小發(fā)明的經(jīng)驗和教訓,對于我以后的學習、工作和生活會有很大的幫助。
我有時候會因為粗心,犯一些不該出現(xiàn)的錯誤。比如,有次期中考試,化學考卷,草稿上計算正確的結(jié)果,我卻在答題時填錯,由此得到了老師和家長的輪番嚴厲教育。我會虛心、認真地接受老師和家長的批評,吸取教訓,總結(jié)經(jīng)驗,在以后的學習和工作中擯棄浮躁心理,謹慎細心、精益求精。我們正式在這種錯誤和改正的過程當中慢慢成長起來。
憑借著高中三年如一日的努力,我的成績一直名列年級前茅,考試成績只能證明過去,我必須堅持努力,勤奮鉆研,我相信,中國石油大學(華東)的大門將為我敞開著。若能走進中國石油大學(華東),我希望能在石油工程、資源勘查或地球物理等方面深造,刻苦學習,為我國的石油、能源事業(yè)付出自身的精力!
青島,世界著名海濱旅游度假城市,歷史文化名城,匯集八方賢才,經(jīng)濟實力雄厚,社會治安穩(wěn)定,環(huán)境優(yōu)美,景色宜人,我向往這座美麗的城市,我向往中國石大的大講堂。
石油大學,我會努力來的!
自薦學生
第四篇:中國石油大學(華東)自薦信
尊敬的中國石油大學(華東)老師:
您好。
我是來自XX省XX市XX中學(省級規(guī)范化學校)的XXX。我希望通過貴校的自主招生來實現(xiàn)我在中國石油大學(華東)學習的夢想,感謝您在百忙中抽出時間審閱我的申請材料。
我性格開朗,興趣廣泛,國內(nèi)國際形勢都會引起我極大的興趣與關(guān)注。其中,我尤其熱愛生物學、機械制造與自動化以及計算機。我熱愛生活,始終對生活充滿信心和希望。我喜歡感受快樂,我希望把快樂傳遞給我身邊的每一個人。我會常常不厭其煩地給同學講一道已經(jīng)講過多少遍的數(shù)學題,我會鄭重其事地給同學公開我學習生物、物理的訣竅,我會在學習之余和同學一起去圖書館遨游于知識的海洋里,一起去籃球場陶醉在震耳的吶喊中。并且我在2010年全國數(shù)學奧林匹克競賽中獲得了山東省三等獎的好成績。
我與中國石油大學(華東)雖未有太多直接接觸,但神交已久,夢想已久。我是深深地向往著中國石油大學(華東)的--這也讓我忽而想起一句稼軒詞來: “我見青山多嫵媚,料青山、見我應(yīng)如是。”
中國石油大學(華東)在風雨征程中養(yǎng)育了屬于自己的精神,“實事求是、艱苦奮斗、團結(jié)奉獻、開拓創(chuàng)新”是中國石油大學(華東)人的精神地標。我選擇中國石油大學(華東)是經(jīng)過了慎重的考慮,我相信中國石油大學(華東)是一所能夠?qū)⑽規(guī)先松硐敫叻宓拇髮W。同樣的,我也相信當中國石油大學(華東)選擇了我,假以時日它將為我而自豪。進入中國石油大學(華東)后,我會在專業(yè)課的學習上精益求精,廣泛涉獵,跨學科選修,全面的充實自己。大學并非我人生的終極目標,它將是一個新的起點。伴隨著我的大學夢,我將以大學為原點,畫一個很大的圓,將我的人生畫得闊大飽滿,讓我的人生與更多的人結(jié)緣,為更多的人服務(wù)。
收筆之際,鄭重地提一個小小的請求:無論您是否選擇我,尊敬的老師,希望您能夠接受我誠懇的謝意!”
此致
敬禮!
陳述人:XXX
2010年12月18日
第五篇:中國石油大學華東論文封面
粘土膨脹對鉆井作業(yè)的
學生姓名:曲正天 學 號: 1302010708 專業(yè)班級: 石工1307 指導教師:黃維安
2016年 3月21日