![《Windows程序設(shè)計(jì)》實(shí)驗(yàn)教學(xué)大綱_第1頁](http://file4.renrendoc.com/view/9ecefdb73214478482cdef681bf3645c/9ecefdb73214478482cdef681bf3645c1.gif)
![《Windows程序設(shè)計(jì)》實(shí)驗(yàn)教學(xué)大綱_第2頁](http://file4.renrendoc.com/view/9ecefdb73214478482cdef681bf3645c/9ecefdb73214478482cdef681bf3645c2.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、:32學(xué)時(shí):(必做):實(shí)驗(yàn)課的性質(zhì)與任務(wù)Windows 程序設(shè)計(jì)(以 VC+為Windows API 函數(shù)和 MFC 進(jìn)行簡單的 Windows 程序開發(fā)的基本流10個(gè)單項(xiàng)實(shí)驗(yàn)和綜合實(shí)驗(yàn),力求提高學(xué)Windows 程序設(shè)計(jì)的思SDK 和 MFC 實(shí)現(xiàn)基于窗口的程序設(shè)計(jì)。實(shí)驗(yàn)課程目的與要求VC 開發(fā)環(huán)境開在實(shí)驗(yàn)中,要求學(xué)生個(gè)人獨(dú)立思考,設(shè)計(jì)算法流程,編寫出程序,完成上機(jī)調(diào)試,本課程的學(xué)習(xí)過程是復(fù)雜程序設(shè)計(jì)的訓(xùn)練過程,要求學(xué)生編寫的程序結(jié)構(gòu)清楚、3) 在實(shí)驗(yàn)中更好地理解和掌握:32學(xué)時(shí):(必做):實(shí)驗(yàn)課的性質(zhì)與任務(wù)Windows 程序設(shè)計(jì)(以 VC+為Windows API 函數(shù)和 MFC 進(jìn)行簡
2、單的 Windows 程序開發(fā)的基本流10個(gè)單項(xiàng)實(shí)驗(yàn)和綜合實(shí)驗(yàn),力求提高學(xué)Windows 程序設(shè)計(jì)的思SDK 和 MFC 實(shí)現(xiàn)基于窗口的程序設(shè)計(jì)。實(shí)驗(yàn)課程目的與要求VC 開發(fā)環(huán)境開在實(shí)驗(yàn)中,要求學(xué)生個(gè)人獨(dú)立思考,設(shè)計(jì)算法流程,編寫出程序,完成上機(jī)調(diào)試,本課程的學(xué)習(xí)過程是復(fù)雜程序設(shè)計(jì)的訓(xùn)練過程,要求學(xué)生編寫的程序結(jié)構(gòu)清楚、3) 在實(shí)驗(yàn)中更好地理解和掌握實(shí)驗(yàn)項(xiàng)目及內(nèi)容提要1106844037)實(shí)驗(yàn)類型項(xiàng)分目操作Visual 1 發(fā)環(huán)境實(shí)驗(yàn)個(gè)數(shù) 實(shí)驗(yàn)學(xué)分適用專業(yè)Visual C+面向?qū)ο笈c可視化程序設(shè)計(jì)教程大綱審定人VC 程序設(shè)計(jì)這門課程中所學(xué)的基本理論和方法,學(xué)時(shí)證Visual C+ 6.0 開發(fā)
3、環(huán)2 :11 : 1 : 計(jì)算機(jī)科學(xué)與技術(shù)、軟件工程、網(wǎng)絡(luò)工程(第三版): 郭濤必做合選做計(jì)基本C+ 6.0 開驗(yàn)綜設(shè)內(nèi)容提要Windows程序設(shè)計(jì)實(shí)驗(yàn)教學(xué)大綱實(shí)驗(yàn)學(xué)時(shí)課程性質(zhì)教材及參考書大綱執(zhí)筆人一、本課程實(shí)驗(yàn)大綱是面向計(jì)算機(jī)相關(guān)專業(yè)學(xué)生開設(shè)的開發(fā)環(huán)境)實(shí)驗(yàn)課計(jì)劃指導(dǎo)大綱, 是依據(jù)Windows 程序設(shè)計(jì)課程教學(xué)計(jì)劃指導(dǎo)大綱編制。本課程主要講述了利用程,結(jié)合該課程教學(xué)計(jì)劃大綱的相應(yīng)內(nèi)容,設(shè)計(jì)了生的動(dòng)手能力,做到理論和實(shí)踐相結(jié)合。使學(xué)生在實(shí)驗(yàn)過程中掌握想、原理,能使用二、1.實(shí)驗(yàn)?zāi)康?:Windows 程序設(shè)計(jì)實(shí)驗(yàn)課的開設(shè), 是為了使學(xué)生更好地理解和掌握運(yùn)用發(fā) Windows 程序設(shè)計(jì)的基本理
4、論、基本方法和基本技術(shù),強(qiáng)化程序設(shè)計(jì)能力。2.實(shí)驗(yàn)要求:1)最后給出實(shí)驗(yàn)報(bào)告。2)正確易讀,符合軟件工程的規(guī)范;a)強(qiáng)化程序設(shè)計(jì)能力。三、Windows 程序設(shè)計(jì)實(shí)驗(yàn)課程(實(shí)驗(yàn)學(xué)序?qū)嶒?yàn)名稱號數(shù)編號熟悉1 境實(shí)驗(yàn).專業(yè)文檔 .供參考.學(xué)習(xí).分享2 3 4 5 6 7 8 利 用9 單文檔與多文檔11 實(shí)驗(yàn)內(nèi)容安排:Visual C+6.0 開發(fā)環(huán)境實(shí)驗(yàn)2學(xué)時(shí))MSDN 幫助功能有完整的了Windows 應(yīng)用程序基本框架實(shí)驗(yàn)2學(xué)時(shí))Windows 應(yīng)用程序基2 Windows 繪圖試驗(yàn)2 鍵盤消息的響應(yīng)實(shí)驗(yàn)鼠標(biāo)消息的響應(yīng)實(shí)驗(yàn)4 控件 API 編程MFC2 2 綜合性實(shí)驗(yàn)架程序設(shè)計(jì)4 2 2 4 創(chuàng)
5、建資源6 GDI 文字輸2 3 4 5 6 7 8 利 用9 單文檔與多文檔11 實(shí)驗(yàn)內(nèi)容安排:Visual C+6.0 開發(fā)環(huán)境實(shí)驗(yàn)2學(xué)時(shí))MSDN 幫助功能有完整的了Windows 應(yīng)用程序基本框架實(shí)驗(yàn)2學(xué)時(shí))Windows 應(yīng)用程序基2 Windows 繪圖試驗(yàn)2 鍵盤消息的響應(yīng)實(shí)驗(yàn)鼠標(biāo)消息的響應(yīng)實(shí)驗(yàn)4 控件 API 編程MFC2 2 綜合性實(shí)驗(yàn)架程序設(shè)計(jì)4 2 2 4 創(chuàng)建資源6 GDI 文字輸Windows 框出基本鍵盤消基本鼠標(biāo)消資源編程文檔編程GDI 繪圖息響應(yīng)息響應(yīng)控件編程數(shù)據(jù)庫編程2 本框架實(shí)驗(yàn)3 文本的輸出方法與字4 體設(shè)置實(shí)驗(yàn)5 6 資源在 Windows 編程7 中的應(yīng)
6、用實(shí)驗(yàn)8 在 MFC 中創(chuàng)建應(yīng)用程9 序資源10 10 11 四、實(shí)驗(yàn)一( 驗(yàn)證性實(shí)驗(yàn)1、目的要求:了解 Visual C+6.0 的特點(diǎn),熟悉 Visual C+6.0 的開發(fā)環(huán)境。2、實(shí)驗(yàn)內(nèi)容:了解和熟悉開發(fā)環(huán)境,對各種菜單功能,工程文件管理和解。3、主要儀器設(shè)備及藥品Windows 2000+VC 6.0+MSDN 實(shí)驗(yàn)二(驗(yàn)證性實(shí)驗(yàn)1、目的要求:.專業(yè)文檔 .供參考.學(xué)習(xí).分享Winmain 和窗口函數(shù) WinProc,掌握消息驅(qū)Win32 工程,編寫一個(gè)包含Windows 繪圖試驗(yàn)4學(xué)時(shí))Windows 繪圖的基本方法和函數(shù)。5 Winmain 和窗口函數(shù) WinProc,掌握消息驅(qū)
7、Win32 工程,編寫一個(gè)包含Windows 繪圖試驗(yàn)4學(xué)時(shí))Windows 繪圖的基本方法和函數(shù)。5 個(gè)區(qū)域,并用白色到黑色線性變化的顏色填充這nCmdShow) returnreturn/ 消息循環(huán)/ 定義畫刷的句柄WinMain, WinProc 的5個(gè)區(qū)域,畫一條FALSE; FALSE; 編寫第一個(gè) Windows 程序,理解入口函數(shù)動(dòng)機(jī)制。2、實(shí)驗(yàn)內(nèi)容:使用 Win32 Application 模板建立一個(gè)基本 Windows 程序,并編譯、運(yùn)行,觀察結(jié)果。3、主要儀器設(shè)備及藥品Windows 2000+VC 6.0+MSDN 實(shí)驗(yàn)三(驗(yàn)證性實(shí)驗(yàn)1、目的要求:理解 DC 概念,掌握
8、坐標(biāo)映射的設(shè)置方法,熟悉2、實(shí)驗(yàn)內(nèi)容:運(yùn)用 Windows 提供的 GDI 函數(shù),完成窗口圖形輸出功能。1)將窗口劃分為斜線穿過這 5個(gè)區(qū)域;源代碼:#include #include #include long WINAP WndProc(HWN hWnd, UIN iMessage, UIN wParam, LON lParam); BOO InitWindowsClass( HINSTANC hInstance); BOO InitWindows( HINSTANC hInstance, int nCmdShow); / 主函數(shù)int WINAP WinMain( HINSTANCEhI
9、nstance , HINSTANCEhPrevInstance , LPSTRlpCmdLine, int MS Message; if (!InitWindowsClass( hInstance ) if (!InitWindows( hInstance , nCmdShow) while ( GetMessage(&Message, 0, 0, 0) TranslateMessage(&Message); DispatchMessage(&Message); return Message.wParam; long WINAP WndProc(HWNDhWnd, UINT iMessage
10、, UINT wParam, LONGlParam) HD hDC; / 定義設(shè)備環(huán)境句柄HBRUS hBrush; .專業(yè)文檔 .供參考.學(xué)習(xí).分享WHITE_BRUSH); LTGRAY_BRUSH); GRAY_BRUSH); DKGRAY_BRUSH); BLACK_BRUSH); / 創(chuàng)建畫筆/ 刪除畫筆/ 刪除畫刷WHITE_BRUSH); LTGRAY_BRUSH); GRAY_BRUSH); DKGRAY_BRUSH); BLACK_BRUSH); / 創(chuàng)建畫筆/ 刪除畫筆/ 刪除畫刷/ 結(jié)束繪圖HPE hPen; / 定義畫筆的句柄PAINTSTRUC PtStr; / 定義
11、指向包含繪圖信息的結(jié)構(gòu)體變量switch ( iMessage) / 處理消息 case WM_PAINT: / 處理繪圖消息MoveWindow(hWnd, 0, 0, 500,400, NULL); / 初始化窗口大小hDC = BeginPaint( hWnd, &PtStr); hPen = ( HPEN)GetStockObject( NULL_PEN); / 獲取系統(tǒng)定義的空畫筆SelectObject(hDC, hPen); / 選擇畫筆hBrush = ( HBRUSH)GetStockObject( BLACK_BRUSH); / 獲取系統(tǒng)定義的畫刷hPen = Create
12、Pen( PS_SOLID, 2, RGB(255, 0, 0); / 創(chuàng)建畫筆SelectObject(hDC, hPen); / 選擇畫筆/MoveToEx(hDC, 0, 150, NULL); LineTo(hDC, 750,150 );hBrush = ( HBRUSH)GetStockObject(SelectObject(hDC,hBrush); Rectangle(hDC,0,0,100,400); hBrush = ( HBRUSH)GetStockObject(SelectObject(hDC, hBrush); Rectangle(hDC, 100,0,200, 400)
13、; hBrush = ( HBRUSH)GetStockObject(SelectObject(hDC, hBrush); Rectangle(hDC,200,0,300, 400); hBrush = ( HBRUSH)GetStockObject(SelectObject(hDC, hBrush); Rectangle(hDC, 300,0,400, 400); hBrush = ( HBRUSH)GetStockObject(SelectObject(hDC, hBrush); Rectangle(hDC, 400,0,500, 400); hPen = CreatePen( PS_SO
14、LID, 2, RGB(255, 0, 0); SelectObject(hDC, hPen); / 選擇畫筆MoveToEx(hDC, 0, 0, NULL); LineTo(hDC, 500,400); DeleteObject(hPen); DeleteObject(hBrush); EndPaint( hWnd, &PtStr); return 0; case WM_DESTROY: / 結(jié)束應(yīng)用程序PostQuitMessage(0); .專業(yè)文檔 .供參考.學(xué)習(xí).分享HINSTANCEhInstance , int, / 顯示窗口TRUE; / 定義窗口類 WndClass; HB
15、RUSH)(GetStockObject(nCmdShow)HINSTANCEhInstance , int, / 顯示窗口TRUE; / 定義窗口類 WndClass; HBRUSH)(GetStockObject(nCmdShow) / 初始化窗口/ 生成窗口WHITE_BRUSH); return 0; default :/ 其他消息處理程序return (DefWindowProc(hWnd, iMessage, wParam, lParam); BOO InitWindows( HWN hWnd; hWnd = CreateWindow(WinFill填充示例程序 , WS_OVER
16、LAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance , NULL); if (!hWnd) return FALSE; ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); return BOO InitWindowsClass( HINSTANCEhInstance ) WNDCLASSWndClass.cbClsExtra = 0; WndClass.cbWndExtra = 0; WndClass.hbrBackground = (WndClass.hCu
17、rsor = LoadCursor(NULL, IDC_ARROW); WndClass.hIcon = LoadIcon(NULL, END); WndClass.hInstance = hInstance ; WndClass.lpfnWndProc = WndProc; WndClass.lpszClassName = WinFill ; WndClass.lpszMenuName = NULL; WndClass.style = CS_HREDRA | CS_VREDRAW; return RegisterClass (&WndClass); 截圖:.專業(yè)文檔 .供參考.學(xué)習(xí).分享同時(shí)
18、,圓的半徑在四分之一周期之0.2 倍至 0.6倍線性增長。Pi 3.1415926 lon同時(shí),圓的半徑在四分之一周期之0.2 倍至 0.6倍線性增長。Pi 3.1415926 long)(0.2*dfRange); WINAP WinMain( HINSTANCEhInstance , nCmdShow) MS Message; WNDCLAS WndClass; / 填寫屬性2)編寫一個(gè)程序,在屏幕上出現(xiàn)一個(gè)圓心沿正弦曲線軌跡移動(dòng)的實(shí)心圓,而且,每隔四分之一周期, 圓的填充色和圓的周邊顏色都發(fā)生變化,內(nèi)由正弦曲線幅值的源代碼:#include#include#include#include
19、#definelong WINAP WndProc(HWN hWnd, UIN iMessage, UIN wParam, LON lParam); double dfTheta = 0, dfRange = 100.0; / 正弦曲線的角度變量 .long i = 0, j = 0; long lCentreX = 0, lCentreY = 0, lRadious = (/ 定義圓心坐標(biāo)和圓半徑 .POIN lpSin100; / 定義正弦曲線的點(diǎn)坐標(biāo) .intHINSTANCEhPrevInstance , LPSTRlpCmdLine, int / 填寫窗口類屬性HWN hWnd; W
20、ndClass.style = 0;WndClass.lpfnWndProc = WndProc; .專業(yè)文檔 .供參考.學(xué)習(xí).分享WHITE_BRUSH); / 注冊窗口.return/ 窗口類名./ 無父窗口WHITE_BRUSH); / 注冊窗口.return/ 窗口類名./ 無父窗口./ 無主菜單./ 當(dāng)前實(shí)例句柄 ./ 顯示窗口./ 消息循環(huán)./ 定義設(shè)備環(huán)境句柄 .FALSE; WndClass.cbClsExtra = 0; WndClass.cbWndExtra = 0; WndClass.hInstance = hInstance ; WndClass.hCursor = L
21、oadCursor(NULL, IDC_ARROW); WndClass.hbrBackground = ( HBRUSH)GetStockObject(WndClass.lpszMenuName = NULL; WndClass.lpszClassName = SIN; WndClass.hIcon = LoadIcon(NULL, END); if (! RegisterClass (&WndClass) MessageBeep(0); hWnd = CreateWindow(SIN, 4_6, / 標(biāo)題名.WS_OVERLAPPEDWINDOW, / 帶標(biāo)題欄 ,最大/小按鈕的窗口CW_
22、USEDEFAULT, / 窗口左上角坐標(biāo) .0, CW_USEDEFAULT, / 采用缺省的寬度和高度 .0, NULL, NULL, hInstance , NULL); ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); / 更新并繪制用戶區(qū) .for ( int j = 0; j100; j+) / 生成正弦曲線的點(diǎn)坐標(biāo) . lpSinj.x = ( long)(j * 2 * Pi / 100 * 60); lpSinj.y = ( long)(dfRange*sin(j * 2 * Pi / 100); while ( GetMessa
23、ge(&Message, 0, 0, 0) TranslateMessage(&Message); DispatchMessage(&Message); return Message.wParam; long WINAP WndProc(HWNDhWnd, UINT iMessage, UINT wParam, LONGlParam) HD hDC; .專業(yè)文檔 .供參考.學(xué)習(xí).分享/ 定義畫刷句柄/ 定義畫筆句柄/ 定義包含繪圖信息的結(jié)構(gòu)體變量RGB(255, 0, 0); / / 定義畫刷句柄/ 定義畫筆句柄/ 定義包含繪圖信息的結(jié)構(gòu)體變量RGB(255, 0, 0); / 建新畫筆/ 選
24、入畫筆/ 繪制正弦曲線long)(dfRange*0.2 + i % 25 * dfRange*0.4 / 25); / 第二個(gè)1/4周期./ 第三個(gè)周期 .RGB(255, 255, 0); / 畫圓/ 計(jì)算半徑HBRUS hBrush; HPE hPen; PAINTSTRUC PtStr;switch ( iMessage) case WM_PAINT: / 處理繪圖消息hDC = BeginPaint( hWnd, &PtStr); / 獲得設(shè)備環(huán)境指針SetWindowOrgEx(hDC, -200, -200, NULL); / 設(shè)置原點(diǎn)坐標(biāo)hPen = CreatePen( PS
25、_DASH, 1, SelectObject(hDC, hPen); Polyline(hDC, lpSin, 100); if (i = 25) / 第一個(gè)1/4周期. hPen = CreatePen( PS_DASH, 1, RGB(255, 0, 0); hBrush = CreateHatchBrush( HS_BDIAGONAL, RGB(255, 0, 0); lRadious = ( else if (i = 50) hPen = CreatePen( PS_DASH, 1, RGB(0, 255, 0); hBrush = CreateHatchBrush( HS_DIAGC
26、ROSS, RGB(0, 255, 0); lRadious = ( long)(dfRange*0.2 + i % 25 * dfRange*0.4 / 25); else if (i = 75) hPen = CreatePen( PS_DASH, 1, RGB(0, 0, 255); hBrush = CreateHatchBrush( HS_CROSS, RGB(0, 0, 255); lRadious = ( long)(dfRange*0.2 + i % 25 * dfRange*0.4 / 25); else/ 第四個(gè)周期 . hPen = CreatePen( PS_DASH,
27、 1, hBrush = CreateHatchBrush( HS_VERTICAL, RGB(255, 255, 0); lRadious = ( long)(dfRange*0.2 + i % 25 * dfRange*0.4 / 25); SelectObject(hDC, hBrush); / 選入畫刷.SelectObject(hDC, hPen); / 選入畫筆.lCentreX = lpSini.x; / 圓心x坐標(biāo).lCentreY = lpSini.y; / 圓心y坐標(biāo).Ellipse(hDC, lCentreX - lRadious, lCentreY - lRadious
28、, lCentreX + lRadious, lCentreY + lRadious); i+; .專業(yè)文檔 .供參考.學(xué)習(xí).分享/ 刪除畫筆/ 刪除畫刷/ 刪除設(shè)備環(huán)境指針/ 停0.1/ 刪除畫筆/ 刪除畫刷/ 刪除設(shè)備環(huán)境指針/ 停0.1秒hWnd, NULL, 1); 文本的輸出方法與字體設(shè)置2學(xué)時(shí))學(xué)習(xí)字體格式的控制。26個(gè)英文字母,從左向右字母依次位置提高/ 刷新用戶區(qū)10 個(gè)像素單位,并且DeleteObject(hPen); DeleteObject(hBrush); EndPaint( hWnd, &PtStr); Sleep(100); if (i100) Invalidat
29、eRect(return 0; case WM_DESTROY: / 關(guān)閉窗口.PostQuitMessage(0); return 0; defaultreturn (DefWindowProc(hWnd, iMessage, wParam, lParam); return 0; 截圖:3、主要儀器設(shè)備及藥品Windows 2000+VC 6.0+MSDN 實(shí)驗(yàn)四(驗(yàn)證性實(shí)驗(yàn)1、目的要求:理解字體句柄的念, 熟悉 Windows 文字輸出的基本方法和函數(shù),2、實(shí)驗(yàn)內(nèi)容:(選做 1個(gè))1)在窗口中顯示出.專業(yè)文檔 .供參考.學(xué)習(xí).分享26個(gè)字母,字體從正常到斜體, 顏色從黑色到天 wParam
30、, LPARA lParam); nCmdShow) 26個(gè)字母,字體從正常到斜體, 顏色從黑色到天 wParam, LPARA lParam); nCmdShow) ; ; 顏色變?yōu)榧t色, 然后回到正常位置; 當(dāng)?shù)竭_(dá)最右端后改變方向從右向左依次變成紅色并位置提高 10個(gè)像素單位。 在窗口的第二行顯示藍(lán)色不斷變換。源代碼:#include #include #include #include LRESULTCALLBAC WndProc(HWN hwnd, UIN message, WPARAMBOO InitWindowsClass( HINSTANC hInstance); BOO Ini
31、tWindows( HINSTANC hInstance, int nCmdShow); / 主函數(shù)int WINAP WinMain( HINSTANCEhInstance , HINSTANCEhPrevInstance , LPSTRlpCmdLine, int MS Message; if (!InitWindowsClass( hInstance ) return FALSE; if (!InitWindows( hInstance , nCmdShow) return FALSE; while ( GetMessage(&Message, 0, 0, 0) / 消息循環(huán) Trans
32、lateMessage(&Message); DispatchMessage(&Message); return Message.wParam; / 消息處理函數(shù)LRESULTCALLBAC WndProc(HWNDhwnd, UINT message, WPARAMwParam, LPARAMlParam) HD hDC; / 設(shè)備句柄PAINTSTRUC ps; / 畫刷結(jié)構(gòu)int X = 0, Y = 0, i = 0, nCharlen = 26; static int nChar = 0; char lpsz_1 = abcdefghijklmnopqrstuvwxyzchar lp
33、sz_2 = abcdefghijklmnopqrstuvwxyzstatic BOO bLeft = FALSE, bRight = TRUE; TEXTMETRI tm; int j; .專業(yè)文檔 .供參考.學(xué)習(xí).分享/ 無效矩形區(qū)/ 消息處理函數(shù)/ 窗口創(chuàng)建hwnd, &rect, 1); / 繪制消息/ 創(chuàng)建一種新的邏輯字體RGB(255, 255, 255); / 無效矩形區(qū)/ 消息處理函數(shù)/ 窗口創(chuàng)建hwnd, &rect, 1); / 繪制消息/ 創(chuàng)建一種新的邏輯字體RGB(255, 255, 255); / 設(shè)置背景顏色/ 設(shè)置輸出字符的 Y坐標(biāo)/ 設(shè)置字體的顏色為黑色/ 設(shè)置
34、輸出字符的 X坐標(biāo)/ 輸出從第0個(gè)到第nChar-1個(gè)字符RGB(255, 0, 0);/ 設(shè)置文本顏色/ 設(shè)置字體的顏色為紅色SIZ size; RECTrect; HFON holdFont, hnewFont; switch ( message) case WM_CREATE: /SetTimer(hwnd,1,1,NULL);return 0; case WM_TIMER: InvalidateRect(return 0; case WM_PAINT: hnewFont = CreateFont(34, 0, 0, 0, 500, 0, 0, 0, GB2312_CHARSET, OU
35、T_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITC & FF_DONTCARE, 黑體); hDC = BeginPaint( hwnd, &ps); / 得到設(shè)備環(huán)境句柄GetClientRect( hwnd, &rect); / 得到需要繪制的客戶區(qū)holdFont = ( HFONT)SelectObject(hDC, hnewFont); / 選擇新的字體GetTextMetrics (hDC, &tm); SetTextColor(hDC, /SetBkColor(hDC,RGB(0,0,0); Y
36、 = tm.tmExternalLeading + 10; for (i = 0; inChar; i+) SetTextColor(hDC, RGB(0, 0, 0); X = X + tm.tmAveCharWidth * 2; TextOut(hDC, X, Y, &lpsz_1i, 1); SetTextColor(hDC, .專業(yè)文檔 .供參考.學(xué)習(xí).分享/ 設(shè)置輸出字符的 X,Y坐標(biāo)/ 提高10個(gè)像素/ 創(chuàng)建字體/ 選入字體RGB(255, 0, 0); / 輸出第nChar個(gè)字符RGB(0, 0, 0); / 設(shè)置輸出字符的 X,Y坐標(biāo)/ 提高10個(gè)像素/ 創(chuàng)建字體/ 選入字體R
37、GB(255, 0, 0); / 輸出第nChar個(gè)字符RGB(0, 0, 0); / 設(shè)置輸出字符的 X坐標(biāo)/ 輸出后面的字符/當(dāng)輸出到最后的一個(gè)字符時(shí)/ 改變紅色字移動(dòng)的方向?yàn)橄蜃? 當(dāng)輸出到第一個(gè)字時(shí)/ 改變紅色字移動(dòng)的方向?yàn)橄蛴襎RUE) nChar+; / 保存原來的字體格式/ 設(shè)置輸出字符的 Y坐標(biāo)/ 創(chuàng)建自定義字體/ 字體的高度/ 由系統(tǒng)根據(jù)高寬比選取字體最佳寬度值/ 文本的傾斜度為 0,表示水平/ 字體的傾斜度為 0/ 設(shè)置字體的顏色為黑色/ 設(shè)置字體的顏色為黑色X = X + tm.tmAveCharWidth * 2; Y = tm.tmExternalLeading; /
38、hF = CreateFont(hDC,40,0); /SelectObject(hDC,hF); SetTextColor(hDC, TextOut(hDC, X, Y, &lpsz_1nChar, 1);Y = tm.tmExternalLeading + 10; for (i = nChar + 1; inCharlen; i+) SetTextColor(hDC, X = X + tm.tmAveCharWidth * 2; TextOut(hDC, X, Y, &lpsz_1i, 1); if (nChar = nCharlen) bRight = FALSE; bLeft = TR
39、UE; else if (nChar = 0) bRight = TRUE; bLeft = FALSE; if (bRight = else nChar-; /*GetTextExtentPoint32(hDC,pstring,12,&size);Xchar=(rect.right-rect.left)/2-size.cx/2;Ychar=(rect.bottom-rect.top)/2-size.cy/2;TextOut(hdc,Xchar,Ychar,pstring,12);*/SelectObject(hDC, holdFont); X = 0; Y = 100; for (i = 0
40、; i26; i+) if (i % 2 = 0) hnewFont = CreateFont ( 34, 0, 0, 0, .專業(yè)文檔 .供參考.學(xué)習(xí).分享/ 字體的粗度, FW_HEAVY為最粗/ 非斜體字/ 無下劃線/ 無刪除線/ 輸出精度為缺省精度/ 剪裁精度為缺省精度/ 字體的粗度, FW_HEAVY為最粗/ 非斜體字/ 無下劃線/ 無刪除線/ 輸出精度為缺省精度/ 剪裁精度為缺省精度/ 輸出質(zhì)量為缺省值/ 字體名稱/ 將自定義字體選入設(shè)備環(huán)境RGB(0,0,0); / 設(shè)置輸出字符的 X坐標(biāo)/ 輸出從第0個(gè)到第nChar-1個(gè)字符/ 創(chuàng)建自定義字體/ 字體的高度/ 由系統(tǒng)根據(jù)高寬比
41、選取字體最佳寬度值/ 文本的傾斜度為 0,表示水平/ 字體的傾斜度為 0/ 字體的粗度, FW_HEAVY為最粗/ 非斜體字/ 無下劃線/ 無刪除線/ 輸出精度為缺省精度/ 剪裁精度為缺省精度/ 輸出質(zhì)量為缺省值/ 字體名稱/ 將自定義字體選入設(shè)備環(huán)境RGB(0, 0, 255); / 設(shè)置輸出字符的 X坐標(biāo)/ 輸出從第0個(gè)到第nChar-1個(gè)字符/ 刪除新的字體格式/ 結(jié)束繪制hwnd, &rect, 1); / 設(shè)置文本顏色/ 設(shè)置文本顏色500, 0, 0, 0, ANSI_CHARSET, / 表示所用的字符集為 ANSI_CHARSETOUT_DEFAULT_PRECIS, CLIP
42、_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH& FF_DONTCARE,/ 字間距和字體系列使用缺省值粗體字); SelectObject(hDC, hnewFont);SetTextColor(hDC, X = X + 50; TextOut(hDC, X, Y, &lpsz_2i, 1); else hnewFont = CreateFont ( 34, 0, 0, 0, 500, 1, 0, 0, ANSI_CHARSET, / 表示所用的字符集為 ANSI_CHARSETOUT_DEFAULT_PRECIS, CLIP_DEFAULT_
43、PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH& FF_DONTCARE,/ 字間距和字體系列使用缺省值粗體字); SelectObject(hDC, hnewFont);SetTextColor(hDC, X = X + 50; TextOut(hDC, X, Y, &lpsz_2i, 1); DeleteObject(hnewFont); EndPaint( hwnd, &ps); Sleep(100); InvalidateRect(.專業(yè)文檔 .供參考.學(xué)習(xí).分享/ 定義窗口類 WndClass; WHITE_BRUSH); RegisterClass (
44、&WndClass); / 顯示窗口/ 定義窗口類 WndClass; WHITE_BRUSH); RegisterClass (&WndClass); / 顯示窗口return 0; case WM_DESTROY: / 退出消息PostQuitMessage(0); return 0; return DefWindowProc(hwnd, message, wParam, lParam); BOO InitWindowsClass( HINSTANCEhInstance ) WNDCLASSWndClass.cbClsExtra = 0; WndClass.cbWndExtra = 0;
45、WndClass.hbrBackground = ( HBRUSH)(GetStockObject(WndClass.hCursor = LoadCursor(NULL, IDC_ARROW); WndClass.hIcon = LoadIcon(NULL, END); WndClass.hInstance = hInstance ; WndClass.lpfnWndProc = WndProc; WndClass.lpszClassName = WinFill ; WndClass.lpszMenuName = NULL; WndClass.style = CS_HREDRA | CS_VR
46、EDRAW; return BOO InitWindows( HINSTANCEhInstance , int nCmdShow)/ 初始化窗口 HWN hWnd; hWnd = CreateWindow(WinFill , / 生成窗口填充示例程序 , WS_OVERLAPPEDWINDOW, 20, 20, 950, 690, NULL, NULL, hInstance , NULL); if (!hWnd) return FALSE; ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); .專業(yè)文檔 .供參考.學(xué)習(xí).分享TRUE; VC 中顯示字
47、體與背景 ”,字體顏色為紅色,背景色40。nCmdShow) .Word文TRUE; VC 中顯示字體與背景 ”,字體顏色為紅色,背景色40。nCmdShow) return 截圖:2)編寫一個(gè)程序,在窗口中顯示“為黃色,字體為宋體,字高源代碼:#include #include #include y long WINAP WndProc( HWN hWnd, UIN iMessage, UIN wParam, LON lParam ); BOO InitWindowsClass( HINSTANC hInstance); BOO InitWindows( HINSTANC hInstance
48、, int nCmdShow); / 主函數(shù)int WINAP WinMain( HINSTANCEhInstance , HINSTANCEhPrevInstance , LPSTRlpCmdLine, int MS Message; if (!InitWindowsClass( hInstance ) return FALSE; if (!InitWindows( hInstance , nCmdShow) return FALSE; while ( GetMessage(&Message, 0, 0, 0) / 消息循環(huán) TranslateMessage(&Message); .專業(yè)文檔
49、 .供參考.學(xué)習(xí).分享/ 設(shè)備句柄/ 畫刷結(jié)構(gòu)VC中顯示字體與背景 ; / 無效矩形區(qū)/ / 設(shè)備句柄/ 畫刷結(jié)構(gòu)VC中顯示字體與背景 ; / 無效矩形區(qū)/ 消息處理函數(shù)/ 窗口創(chuàng)建/ 繪制消息/ 創(chuàng)建一種新的邏輯字體RGB(255, 0, 0); RGB(255, 255, 0); / 退出消息/ 設(shè)置文本顏色/ 設(shè)置背景顏色DispatchMessage(&Message); return Message.wParam; / 消息處理函數(shù)LRESULTCALLBAC WndProc(HWNDhwnd, UINT message, WPARAMwParam, LPARAMlParam) HD
50、 hdc; PAINTSTRUC ps; int Xchar, Ychar; SIZ size; LPCTST pstring = RECTrect; HFON holdFont, hnewFont; switch ( message) case WM_CREATE: return 0; case WM_PAINT: hnewFont = CreateFont(40, 0, 0, 0, 500, 0, 0, 0, GB2312_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITC & FF
51、_DONTCARE, 宋體); hdc = BeginPaint( hwnd, &ps); / 得到設(shè)備環(huán)境句柄GetClientRect( hwnd, &rect); / 得到需要繪制的客戶區(qū)holdFont = ( HFONT)SelectObject(hdc, hnewFont); / 選擇新的字體SetTextColor(hdc, SetBkColor(hdc, GetTextExtentPoint32 (hdc, pstring, 12, &size); Xchar = (rect.right - rect.left) / 2 - size.cx / 2; Ychar = (rect
52、.bottom - rect.top) / 2 - size.cy / 2; TextOut(hdc, Xchar, Ychar, pstring, 12); SelectObject(hdc, holdFont); / 保存原來的字體格式DeleteObject(hnewFont); / 刪除新的字體格式EndPaint( hwnd, &ps); / 結(jié)束繪制return 0; case WM_DESTROY: PostQuitMessage(0); return 0; .專業(yè)文檔 .供參考.學(xué)習(xí).分享DefWindowProc(hwnd, message, wParam, lParam);
53、 HINSTANCEhInstance ) WndClass; WHITE_BRUSH); ; HINSTANCEhInstancDefWindowProc(hwnd, message, wParam, lParam); HINSTANCEhInstance ) WndClass; WHITE_BRUSH); ; HINSTANCEhInstance , int, / 生成窗口/ 顯示窗口/ 定義窗口類nCmdShow)/ 初始化窗口default : return return 0; BOO InitWindowsClass( WNDCLASSWndClass.cbClsExtra = 0;
54、 WndClass.cbWndExtra = 0; WndClass.hbrBackground = ( HBRUSH)(GetStockObject(WndClass.hCursor = LoadCursor(NULL, IDC_ARROW); WndClass.hIcon = LoadIcon(NULL, END); WndClass.hInstance = hInstance ; WndClass.lpfnWndProc = WndProc; WndClass.lpszClassName = WinFillWndClass.lpszMenuName = NULL; WndClass.st
55、yle = CS_HREDRA | CS_VREDRAW; return RegisterClass (&WndClass); BOO InitWindows( HWN hWnd; hWnd = CreateWindow(WinFill填充示例程序 , WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance , NULL); if (!hWnd) return FALSE; ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); return TRUE;
56、 截圖:.專業(yè)文檔 .供參考.學(xué)習(xí).分享鍵盤消息的響應(yīng)實(shí)驗(yàn)2學(xué)時(shí))“You had hitted the CTRL key ”;單擊 鍵鍵盤消息的響應(yīng)實(shí)驗(yàn)2學(xué)時(shí))“You had hitted the CTRL key ”;單擊 鍵3、主要儀器設(shè)備及藥品Windows 2000+VC 6.0+MSDN 實(shí)驗(yàn)五(驗(yàn)證性實(shí)驗(yàn)1、目的要求:理解 Windows 程序響應(yīng)鍵盤操作的原理,熟悉鍵盤消息的響應(yīng)編程。2、實(shí)驗(yàn)內(nèi)容:(選做 1個(gè))1)設(shè)計(jì)一個(gè)窗口,在該窗口中練習(xí)鍵盤的響應(yīng),要求如下:單擊鍵盤上的向上箭頭時(shí),窗口中顯示 “You had hitted the up key”;單擊 鍵時(shí),窗口中顯
57、示 “You had hitted the SHIFT key”;單擊 鍵時(shí),窗口中顯示時(shí),窗口中顯示 “You had hitted the CTRL A key ”;單擊 鍵時(shí),窗口中顯示 “You had hitted the SHIFT B key ”。源代碼:#include #include #include long WINAP WndProc( HWN hWnd, UIN iMessage, UIN wParam, LON lParam ); BOO InitWindowsClass( HINSTANC hInstance); BOO InitWindows( HINSTANC
58、 hInstance, int nCmdShow); / 主函數(shù)int WINAP WinMain( .專業(yè)文檔 .供參考.學(xué)習(xí).分享char cCtrl = char cShift = ; ; / 當(dāng)按control 鍵時(shí),變量置為真char cCtrl = char cShift = ; ; / 當(dāng)按control 鍵時(shí),變量置為真You had hitted the Ctrl keyYou had hitted the SHIFT key; ; HINSTANCEhInstance , HINSTANCEhPrevInstance , LPSTRlpCmdLine, int nCmdSh
59、ow) MS Message; if (!InitWindowsClass( hInstance ) return FALSE; if (!InitWindows( hInstance , nCmdShow) return FALSE; while ( GetMessage(&Message, 0, 0, 0) / 消息循環(huán) TranslateMessage(&Message); DispatchMessage(&Message); return Message.wParam; / 消息處理函數(shù)long WINAP WndProc(HWNDhWnd, UINT iMessage, UINT w
60、Param, LONGlParam) HD hDC; / 定義設(shè)備環(huán)境句柄 .PAINTSTRUC ps; / 定義包含繪圖信息的結(jié)構(gòu)體變量HPE hPen; / 定義畫筆句柄。HBRUS hBrush; / 定義畫刷句柄/ 以下定義輸出的字符串。static char cUp = You had hitted the UP key ; staticstaticstatic char cCtrl_A = You had hitted the CTRL A keystatic char cShift_B = You had hitted the SHIFT B key/ 下面定義并初始化按鍵標(biāo)志
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 申請書秘書部
- 現(xiàn)代化教育設(shè)備管理與教學(xué)效率提升
- 知識(shí)產(chǎn)權(quán)在商業(yè)競爭中的戰(zhàn)略價(jià)值分析
- 四川省簡陽市2022年七年級《英語》下冊期中試卷與參考答案
- 成都市新都區(qū)2022年七年級《地理》上冊期末試卷與參考答案
- 新版人教PEP版三年級下冊英語課件 Unit 3 Part B 第1課時(shí)
- 2025年匙扣卷尺項(xiàng)目投資可行性研究分析報(bào)告
- 大學(xué)生校外住宿申請書
- 山東文化產(chǎn)業(yè)職業(yè)學(xué)院《人力資源管理綜合模擬實(shí)訓(xùn)一》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖州學(xué)院《電路與模擬電子技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024年美發(fā)師(高級技師)職業(yè)鑒定考試題庫(含答案)
- 寧波2025年浙江寧波市鄞州區(qū)衛(wèi)健系統(tǒng)其他事業(yè)單位招聘事業(yè)編制46人筆試歷年參考題庫附帶答案詳解
- 【七上HK數(shù)學(xué)】安徽省蚌埠市固鎮(zhèn)縣2024-2025學(xué)年七年級上學(xué)期1月期末試卷數(shù)學(xué)試題
- 電子物料基礎(chǔ)知識(shí)
- 2025屆江蘇省南京市鹽城市高三一模考試語文試題 課件
- 廣西出版?zhèn)髅郊瘓F(tuán)有限公司招聘筆試沖刺題2025
- 江蘇省南京市2024年中考英語試題(含解析)
- 外科圍手術(shù)期處理(外科學(xué)課件)
- 電力安全工作規(guī)程考試試題題庫
- 宮頸癌診療指南要點(diǎn)
- 兩個(gè)人合伙買攪拌車的合同
評論
0/150
提交評論