第一篇:Windows編程教案
Windows編程教案
第一課
最簡單的Windows程序(2學(xué)時)
Windows編程是一個很大的主題,涉及的方面也非常的多。Windows始于90年代,至今Windows編程的發(fā)展已經(jīng)非常成熟了,而單獨(dú)直接使用API的開發(fā)也是越來越少了。因此,市面上很少有泛泛的簡單入門級的Windows程序設(shè)計了。一個是系統(tǒng)級的Windows編程介紹,如Windows核心編程。一個是方向級的Windows編程介紹如Windows圖形編程,Windows網(wǎng)絡(luò)編程等等。我們這次課的主要參考用書是Windows核心編程,同時也參考了一些其他內(nèi)容。鑒于教材的價格較貴,同時也需要考慮我們自身的學(xué)習(xí)內(nèi)容不一定很多以及學(xué)時的原因,就沒有定教材??次业慕贪赴?。
(1)Win32 API API : Application Program Interface。應(yīng)用程序接口。API就是在進(jìn)行Windows編程時使用的函數(shù)庫。本課就是
Windows編程=API+C語言(或者C++語言)(2)開發(fā)環(huán)境
我校機(jī)器上安裝了VC++ 6.0。相信這是大家一直以來學(xué)習(xí)C,C++使用的開發(fā)環(huán)境。但VC60離我們實(shí)在太遠(yuǎn)了,它是一款90年代的產(chǎn)品,已經(jīng)近20年的歷史了。我們機(jī)器里還有VS2005 或 VS2008,那里面的C環(huán)境要比VC60強(qiáng)太多了,強(qiáng)烈建議大家使用更高級的平臺。本次授課的開發(fā)環(huán)境有兩個。一個是輕量級的DEV C++,一個是重量級的VS2010.簡單程序我們都將用DEV C++來實(shí)現(xiàn)。
DEV C++是一個非常小的C環(huán)境,但性能要優(yōu)于VC60,調(diào)試環(huán)境不如VC60。這個環(huán)境在我們的共享資源里有,大家可以下載安裝。安裝過程非常簡單,一直下一步即可。
這是其主界面。
(3)最簡單的Windows程序
提到最簡單的程序,幾乎所有的人都會想起經(jīng)典的HelloWorld。
這不是Windows程序,如果在以前這叫DOS程序,現(xiàn)在叫Windows控制臺應(yīng)用程序。它不算Windows程序,但它很簡單的就把Helloword顯示到屏幕上了。而Windows程序要想把HelloWorld顯示在屏幕上就確實(shí)不容易了。
3.1 訪問Helloworld網(wǎng)站,因?yàn)榘袶elloworld顯示在屏幕上并不容易,我們可以一點(diǎn)一點(diǎn)來,先讓Helloworld以文字形式出現(xiàn)在其他地方,這里我們通過訪問網(wǎng)站004km.cnE,HINSTANCE,LPSTR,int nShow)DefWindowProc(HWND,UINT,WPARAM,LPARAM)GetMessage(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax).如果得到WM_QUIT返回0 TranslateMessage(&MSG)DispathMessage(&MSG)BeginPaint(&PAINTSTRUCT)TextOut(HDC,INT,INT,LPSTR,INT)EndPaint(HWND,&PAINTSTRUCT)作業(yè):
自己建立應(yīng)用,在窗口100,100位置顯示HelloWorld 第三課 坐標(biāo)位置及大?。?學(xué)時)
在我們寫控制臺應(yīng)用的時候,不能自由的控制輸出顯示的位置。因此,沒有學(xué)習(xí)過這方面的內(nèi)容,現(xiàn)在我們創(chuàng)建了窗口,并且在窗口上顯示了Hello World。這個過程涉及到很多涉及位置和大小的因素,如窗口的大小,顯示的位置,文字顯示的位置。說到位置,就涉及定位,說到定位就要說坐標(biāo)系。在屏幕上顯示內(nèi)容涉及到坐標(biāo)空間的知識。在Windows應(yīng)用中坐標(biāo)空間分如下幾部分內(nèi)容
1、物理坐標(biāo)空間
物理坐標(biāo)空間,指的是物理設(shè)備上對應(yīng)的坐標(biāo)系。如顯示器
坐標(biāo)原點(diǎn)在左上角。如下是一個1024*768的屏幕物理坐標(biāo)(0,0)(1024,0)
(0,768)
2、設(shè)備坐標(biāo)空間
基于設(shè)備上下文指定的坐標(biāo)空間。如窗口內(nèi)顯示的文本,使用的坐標(biāo)就是基于窗口內(nèi)上下文的坐標(biāo)。
可以看到設(shè)備空間是物理空間體系的一個子空間。設(shè)備空間可以依賴于一個窗口。換句話可以把設(shè)備空間理解為在物理空間上顯示的一個對象,其子空間。下面我們通過一個小例子理解物理空間和設(shè)備空間
在窗口的標(biāo)題條,以設(shè)備坐標(biāo),和物理坐標(biāo)的形式顯示鼠標(biāo)在窗口內(nèi)的位置
WndProc處理消息循環(huán)
WM_MOUSEMOVE,鼠標(biāo)移動時消息標(biāo)識,是個整數(shù)。其參數(shù)lParam,的第16位代表設(shè)備坐標(biāo)中的X,高16位代表設(shè)備坐標(biāo)的Y。POINT 是結(jié)構(gòu)體。只有x,y兩個成員 ClientToScreen,將設(shè)備坐標(biāo)轉(zhuǎn)換為屏幕坐標(biāo)(物理坐標(biāo))sprintf:格式化字符串
SetWindowText:設(shè)Window標(biāo)題
3、頁面坐標(biāo)空間(邏輯坐標(biāo)空間的一種)
作用,可以任意指定坐標(biāo)原點(diǎn),坐標(biāo)軸方向,比例尺等信息??梢杂脕砼c設(shè)備無關(guān)的大小如厘米,毫米等。
頁面坐標(biāo)叫窗口,其表示有原點(diǎn)(X,Y),寬度,高度組成(WIDTH,HEIGHT)設(shè)備坐標(biāo)叫視口,其表示有原點(diǎn)(x,y),寬度,高度組成(width,height)
頁面坐標(biāo)和設(shè)備坐標(biāo)的變換關(guān)系,大寫為設(shè)備坐標(biāo),小寫為頁面坐標(biāo)
PX=X+(px-x)*WIDTH/width PY=Y+(py-y)*HEIGHT/height
px=x+(PX-X)*width/WIDTH py=y+(PY-Y)*heigh/HEIGHT
GDI函數(shù)使用頁面坐標(biāo),顯示出來時是設(shè)備坐標(biāo)
通過對窗口,是否對應(yīng)的四個參數(shù)的設(shè)置,可以實(shí)現(xiàn)特殊的變換。頁面坐標(biāo)是邏輯坐標(biāo)的一種。在這個例子中我們一直使用 MoveToEx(ps.hdc,0,0,NULL);
LineTo(ps.hdc,30,30);劃線,MoveToEx是把畫筆移動到指定位置(頁面坐標(biāo)),LineTo是從畫筆所在位置到目標(biāo)位置畫一條線。
在這個例子中,每次劃線前通過設(shè)置視口,窗口結(jié)果使劃線的結(jié)果不同。這種形式的坐標(biāo)轉(zhuǎn)換無法實(shí)現(xiàn)旋轉(zhuǎn)
4、世界坐標(biāo)空間(邏輯坐標(biāo)空間的另一種)功能:比頁面坐標(biāo)空間方便,可以實(shí)現(xiàn)旋轉(zhuǎn) 結(jié)構(gòu)體 XFORM{ FLOAT eM11, FLOAT eM12, FLOAT eM21, FLOAT eM21, FLOAT eDx, FLOAT eDy, } 世界坐標(biāo)到設(shè)備坐標(biāo)的變換。小寫到大寫。PX=eM11*px+eM21*py+eDx;PY=eM12*px+eM22*py+eDy;默認(rèn)為{1,0,0,1,0,0} 和設(shè)備坐標(biāo)相同 {1001dxdy} {mx00my00}縮放 {-100-100}映像
旋轉(zhuǎn){cos(a),sin(a),-sin(a),cos(a),0,0}順時針旋轉(zhuǎn)a度 {cos(a),-sin(a),sin(a),cos(a),0,0}逆時針旋轉(zhuǎn)a度
我們下面的例子通過Rectangle(ps.hdc,0,0,50,50);繪制50*50的矩形,用循環(huán)配合世界坐標(biāo)變換繪制特殊的圖形
循環(huán)20次,每次旋轉(zhuǎn)坐標(biāo)軸的方向,繪制正方形??偨Y(jié):
物理坐標(biāo)指的是屏幕坐標(biāo),不能改變坐標(biāo)軸 設(shè)備坐標(biāo)指的是窗口坐標(biāo),不能改變坐標(biāo)軸
頁面坐標(biāo)和世界坐標(biāo)均是邏輯坐標(biāo),可以改變坐標(biāo)軸,世界坐標(biāo)功能更強(qiáng),可以旋轉(zhuǎn)。理解這些概念的繪圖是很重要的。
相關(guān)函數(shù)
BOOL ClientToScreen(HWND hWnd, LPPOINT lpPoint);設(shè)備坐標(biāo)轉(zhuǎn)屏幕坐標(biāo)
BOOL ScreenToClient(HWND hWnd,LPPOINT lpPoint);屏幕坐標(biāo)轉(zhuǎn)設(shè)備坐標(biāo) int MapWindowPoints(HWND hWndFrom, HWND hWndTo, LPPOINT lpPoints, UINT cPoints);
各個窗口設(shè)備坐標(biāo)之間的轉(zhuǎn)換
BOOL SetWindowOrgEx(HDC hdc, int X,int Y,LPPOINT lpPoint);設(shè)置窗口的原點(diǎn)
SetViewportOrgEx(HDC hdc,int X,int Y,LPPOINT lpPoint);設(shè)置視口的原點(diǎn)
BOOL SetViewportExtEx(HDC hdc, int nXExtent, int nYExtent,LPSIZE lpSize);設(shè)置視口的width,height BOOL SetWindowExtEx(HDC hdc, int nXExtent,int nYExtent, 設(shè)置窗口的width,height SetMapMode設(shè)置頁面坐標(biāo)的映射模式 SetGraphicsMode設(shè)置世界坐標(biāo)的映射模式 Rectangle繪制矩形,并填充內(nèi)部 SetWorldTransform設(shè)置世界坐標(biāo)變換 LineTo:換線
MoveToEx:移動畫筆
SetWindowText設(shè)置窗口標(biāo)題
LPtoDP(hdc,LPPOINT,int)把邏輯坐標(biāo)點(diǎn)轉(zhuǎn)換為設(shè)備坐標(biāo)點(diǎn) 作業(yè):
使用movetoex,lineto,LPtoDP及世界坐標(biāo)變換,繪制正六邊形
LPSIZE lpSize);
提示:
畫一條水平線后,將坐標(biāo)原點(diǎn)移動到線的末尾,并將坐標(biāo)軸旋轉(zhuǎn)60度*n,重復(fù)上步 要將坐標(biāo)移動到線尾需要使用LPtoDP
第四課 色彩及繪制(6學(xué)時)
(1)畫點(diǎn)
像素:計算機(jī)屏幕上的一個點(diǎn)。是計算機(jī)屏幕顯示的最小單位。點(diǎn)的個數(shù)取決于計算機(jī)的分辨率。如1024*768,則屏幕由1024*768個點(diǎn)組成。每個點(diǎn)都可以獨(dú)立的顯示一個顏色。計算機(jī)能夠表示的顏色有256*256*256=16777216種。顏色的表示 COLORREF。定義顏色RGB COLORREF color=RGB(紅,綠,藍(lán))隨機(jī)繪制顏色點(diǎn)
需要#include
GetTickCount(): API函數(shù),得到系統(tǒng)開機(jī)后到現(xiàn)在的滴答數(shù),特點(diǎn)就是每次返回的結(jié)果不重復(fù)。
兩者的配合得到不重復(fù)的隨機(jī)數(shù)序列
rand得到函數(shù)
SetPixel設(shè)置某點(diǎn)的顏色
(2)畫線
在以前的例子里我們一直用1個像素寬的黑色實(shí)現(xiàn)來畫線?,F(xiàn)在我們學(xué)習(xí)創(chuàng)建畫筆,用畫筆來畫線。
步驟
1、創(chuàng)建畫筆CreatePen(畫筆類型,寬度,顏色)
2、將畫筆選入設(shè)備上下文SelectObject
3、用畫筆繪制
4、將畫筆選出設(shè)備
5、刪除創(chuàng)建的畫筆對象
SelectObject是將GDI對象畫筆選入設(shè)備上下文,并將當(dāng)前的選出返回。因此我們兩次使用SelectObject,最后一個將以前的畫筆選入,返回我們創(chuàng)建的,并在下一步刪除畫筆。
虛線只能支持寬度1.畫線函數(shù)
Polygon(HDC,LPPOINT,INT).連接指定點(diǎn),畫多邊形,封閉。如果畫4邊形則確認(rèn)3個點(diǎn)即可。
Polyline(HDC,LPPOINT,INT).連接指定點(diǎn),畫多邊,不封閉 MoveToEx:移動畫筆
LineTo:用當(dāng)前的畫筆劃線
Arc:畫圓弧 BOOL Arc(HDC hdc, int nLeftRect, int nTopRect, int nRightRect,int nBottomRect, int nXStartArc,int nYStartArc,int nXEndArc,int nYEndArc);前4個是畫圓弧的矩形,后四個指定了弧開始和結(jié)束的位置 作業(yè):畫一條正弦曲線
使用SexPixel,LineTo,MoveToEx實(shí)現(xiàn)
(3)畫面
畫面就是用畫刷來填充 步驟
1、創(chuàng)建畫刷CreateSolidBrush(顏色)
2、將畫刷選入設(shè)備上下文SelectObject
3、用畫刷填充
4、將畫刷選出設(shè)備
5、刪除創(chuàng)建的畫刷對象
用藍(lán)色畫刷填充矩形,矩形的邊框是黑色。CreateSolidBrush:創(chuàng)建顏色畫刷
Rectangle:繪制矩形,用當(dāng)前的Pen繪制邊框,用當(dāng)前的Brush來填充矩形內(nèi)部 FillRect:畫刷填充矩形。FillRect(hdc,&RECT,HBRUSH)
使用FillRect不繪制邊框,因?yàn)閰?shù)中有畫筆,也不用SelectObject了。Ellipse:橢圓,圓。畫邊框,填充 Pie:圓餅(4)位圖
將文件系統(tǒng)中的位圖顯示到窗口中。繪制位圖步驟
1、根據(jù)現(xiàn)有的設(shè)備上下文創(chuàng)建兼容的設(shè)備上下文
2、加載位圖
3、繪制圖像
4、刪除加載的位圖
5、刪除兼容的設(shè)備上下文
BitBlt是在設(shè)備上下文之間拷貝圖像的函數(shù),非常常用
在上一個列子的基礎(chǔ)上,得到位圖的大小并繪制實(shí)際大小的位圖 作業(yè):
在一個窗口上顯示一副位圖文件(*.bmp)。(5)字體和文本
創(chuàng)建邏輯字體并顯示文本 步驟
1、創(chuàng)建邏輯字體
2、選入字體
3、輸出文本
4、選出字體
5、刪除字體
另一個與文本繪制有關(guān)的功能更強(qiáng)的函數(shù)是DrawText 總結(jié):本課介紹了一些基本的繪圖操作,其中涉及了較多的函數(shù),這里只是介紹了基本的使用方式和原理。函數(shù) srand rand GetClientRect SetPixel LineTo MoveToEx CreatePen CreateSolidBrush CreateFontIndirect BitBlt SelectObject DeleteObject CreateCompatibleDC LoadImage Rectangle FillRect DeleteDC 等等。
第五課 常用控件的使用(6學(xué)時)
在上面的幾節(jié)課程中我們學(xué)習(xí)了如何建立Windows 應(yīng)用,并在圖形環(huán)境下繪制圖形。這些操作都是控制臺應(yīng)用中沒有的。本章我們介紹如何在窗口中加入按鈕等常規(guī)控件,并且處理它們。
一般控件種類,按鈕,列表組合,編輯,列表,滾動條,靜態(tài)文本??丶且环N特殊的窗口。這些特殊窗口的類已經(jīng)由Windows系統(tǒng)注冊了,不需要我們注冊。這些類的名字分別為。
BUTTON,COMBOBOX,EDIT,LISTBOX,SCROLLBAR,STATIC(1)創(chuàng)建
任何時候均可,但通常在WM_CREATE事件中處理
WM_CREATE是在窗口創(chuàng)建時觸發(fā) WM_DESTORY是在窗口銷毀時觸發(fā)
控件用CreateWindow創(chuàng)建,返回控件窗體的句柄,窗體的類型一定為WS_CHILDWINDOW。附加的類型以或關(guān)系疊加。具體要參見MSDN(2)操控
控制這些控件是通過向這些控件的窗體句柄發(fā)送特點(diǎn)消息來實(shí)現(xiàn)的 如 SendMessage(控件句柄,消息指,參數(shù)1,參數(shù)2)具體設(shè)置參見MSDN 在上面的例子,我們處理下拉列表的時候使用了SendMessage發(fā)送消息(3)反饋
我們操作控件會觸發(fā)控件的事件得到一些反饋,下面介紹如何得到這些反饋。總體上,我們把這些反饋過程叫通知。通知的過程是將反饋發(fā)送給父窗體,一般父窗體有兩個事件接收控件的反饋
WM_NOTIFY,WM_COMMAND。WM_COMMAND HIWORD(wParam)通知消息號 LOWORD(wParam)控件標(biāo)識 WM_NOTIFY wParam :控件標(biāo)識 lParam:NHMDR的指針
比如按鈕的單機(jī)對應(yīng)的事件是BN_CLICKED。該事件通過WM_COMMAND通知。
我們把上個例子補(bǔ)充完整,并且為每個控件指定ID,指定的方式是在(HMENU)的后面寫個整數(shù),原則上應(yīng)該不同。
HIWORD,得到一個字的高字節(jié)。LOWORD得到一個字的低字節(jié)。(4)通用控件
我們上面介紹的是基本的控件,除了這些基本控件外還有一些通用控件。這些控件的使用和處理和基本的控件差不多,但功能更強(qiáng)大。ANIMATE_CLASS : 動畫控件,播放AVI動畫 DATETIMEPICK_CLASS :日期時間下拉控件 HOTKEY_CLASS :定義熱鍵的控件 MONTHCAL_CLASS : 月份選擇控件 PROGRESS_CLASS :進(jìn)度條控件 REBARCLASSNAME :rebar控件 STATUSCLASSNAME:狀態(tài)條控件 TOOLBARCLASSNAME :工具條 TOOLTIPS_CLASS :提示控件 TRACKBAR_CLASS :軌跡條 UPDOWN_CLASS :上下箭頭
WC_COMBOBOXEX :組合框擴(kuò)展 WC_HEADER :頭控件
WC_IPADDRESS :IP地址控件 WC_LISTVIEW :listview控件
WC_PAGESCROLLER :頁滾動控件 WC_TABCONTROL :tabControl控件 WC_TREEVIEW :樹視圖控件
通用控件在使用前使用InitCommonControlsEx初始化。使用這些通用控件要include
頭部
這些控件和IE有關(guān)系,根據(jù)IE版本不同,控件的外觀和功能有區(qū)別。
(5)創(chuàng)建菜單
CreateMenu:創(chuàng)建一個菜單
CreatePopupMenu:創(chuàng)建一個子菜單 AppendMenu:向菜單增加項(xiàng)目 SetMenu:將菜單聯(lián)系到窗口
第六課 進(jìn)程及線程(2學(xué)時)
? 進(jìn)程:是一個正在運(yùn)行的程序的實(shí)例。由兩個部分組成
1、一個是操作系統(tǒng)用來管理進(jìn)行的內(nèi)核對象。內(nèi)核對象是系統(tǒng)用來存放關(guān)于進(jìn)程信息的地方。
2、地址空間,每個進(jìn)行都有自己的地址空間
進(jìn)程本身不執(zhí)行代碼,進(jìn)程要至少擁有一個線程,由線程來執(zhí)行代碼。每個線程都擁有自己的CPU寄存器和堆棧。當(dāng)創(chuàng)建一個進(jìn)程時系統(tǒng)會自動創(chuàng)建一個主線程。
CreateProcess創(chuàng)建進(jìn)程
內(nèi)部執(zhí)行細(xì)節(jié):1 創(chuàng)建一個小的結(jié)構(gòu)存放進(jìn)程信息分配地址空間
創(chuàng)建一個小的結(jié)構(gòu)存放線程信息
執(zhí)行C/C++啟動代碼,最終會調(diào)用WinMain或main。結(jié)束一個進(jìn)程 TerminateProcess
TerminateProcess 1 使用ToolHelp遍歷系統(tǒng)進(jìn)程
列舉系統(tǒng)全部的進(jìn)程
需要
#include
? 線程
線程由兩個部分組成 內(nèi)核對象 線程堆棧,用于維護(hù)執(zhí)行代碼時所有的函數(shù)參數(shù)和局部變量 進(jìn)程是活波的,進(jìn)程不執(zhí)行任何東西,它是線程的容器。線程在進(jìn)程的地址空間中執(zhí)行代碼。如果一個進(jìn)程擁有多個線程則這些線程共享進(jìn)程地址空間內(nèi)的代碼和數(shù)據(jù)。進(jìn)程的地址空間要比線程占用更多的系統(tǒng)資源,因此要更多的使用線程。每個線程必須有個入口點(diǎn)函數(shù),主線程是main,WinMain。如果要創(chuàng)建一個線程,則這個線程的函數(shù)原型是這樣的。DWORD WINAPI ThreadProc(PVOID pvParm){
return value;} 因?yàn)榫€程會共享全局變量,因此多線程應(yīng)該少使用全局變量 1 線程創(chuàng)建
線程的創(chuàng)建不能直接使用CreateThread API函數(shù)。而要使用C編譯環(huán)境自帶的創(chuàng)建進(jìn)程函數(shù)。
#include
unsigned uThreadid=0;uintptr_t hThread=
_beginthreadex(NULL, 0,ThreadProc,NULL,CREATE_SUSPENDED,&uThreadid);第3個參數(shù)是線程函數(shù)地址,第4個參數(shù)是傳遞到線程的LPVOID,第5個參數(shù)為0線程馬上運(yùn)行、CREATE_SUSPENDED需要激活才能運(yùn)行。最后一個保存線程的ID 進(jìn)程和線程ID是一個標(biāo)識。不重復(fù)。進(jìn)程和線程對象是系統(tǒng)對象,關(guān)閉這些對象對進(jìn)程和線程的運(yùn)行沒有影響。
第7課 線程的調(diào)度和同步(6學(xué)時)線程暫停:
創(chuàng)建時使用CREATE_SUSPENDED創(chuàng)建一個暫停的線程
使用SuspendThread暫停線程
長時間不使用窗體 恢復(fù)線程:
ResumeThread
ResumeThread和SuspendThread使用次數(shù)要對應(yīng)。
休眠線程 Sleep(毫秒)線程的同步是比較容易出錯的地方,要多多實(shí)踐和理解。參見線程沖突的例子。
每個線程對變量g累加10000次,創(chuàng)建6個線程,這是其中一次的運(yùn)行結(jié)果。可以看到結(jié)果不是60000.對線程沖突問題的解釋
一條C的g++對應(yīng)的匯編指令為3條 mov eax,[g] inc eax mov [g],eax
如果我們創(chuàng)建兩個線程,這兩個線程將共享上面的代碼。如果只有一個CPU的話,那同一時刻只能志執(zhí)行一條匯編指令。但Windows的調(diào)度機(jī)制可以保證代碼按順序執(zhí)行,但不能保證不被打斷。舉例 g=0 mov eax,[g] //1 eax=0 inc eax
//1 eax=1 mov [g],eax //1 g=1 eax=1 mov eax,[g] //2 eax=1 inc eax
//2 eax=2 mov [g],eax //2 g=2 eax=2 1和2兩個線程分別執(zhí)行上面的3行代碼,則g被加了兩次,得到2。但實(shí)際上這是多線程的特例。真實(shí)的情況是CPU下條要執(zhí)行那個線程的代碼是隨機(jī)的。如下
g=0 mov eax,[g] //1 eax=0 inc eax
//1 eax=1 mov eax,[g] //2 eax=0 inc eax
//2 eax=1 mov [g],eax //2 g=1 eax=1 mov [g],eax //1 g=1 eax=1
線程1在增加后沒有及時賦值給g,然后線程2執(zhí)行。最后g為1。這就是線程沒有同步導(dǎo)致的問題,也是我們程序中出現(xiàn)的問題。解決方法(1)原子操作函數(shù)
使用InterlockedExchangeAdd,加減
InterlockedExchange 賦值
InterlockedCompareExchange 比較賦值
使用這些函數(shù)加減變量,保證只有執(zhí)行完后其他進(jìn)程才能進(jìn)入。
結(jié)果是60000了,但是按理應(yīng)該輸出六次“線程運(yùn)行了結(jié)束了”。但只顯示兩次,其實(shí)每次的結(jié)果多不會一樣。這也是并發(fā)帶來的問題。
解決方法(2)關(guān)鍵代碼段
在使用關(guān)鍵段之前使用該函數(shù)
輸出了6次,但每次對應(yīng)的g值不一定以10000遞增。如果把進(jìn)入關(guān)鍵段的位置提前到最前面可以得到常規(guī)的理解
這時這6個進(jìn)程某種意義上沒有并發(fā)執(zhí)行。
局限:關(guān)鍵代碼段只能在一個進(jìn)程內(nèi)使用,沒有等待時長的限制容易死鎖。解決方法(3)內(nèi)核對象 具備通知狀態(tài)的內(nèi)核對象 進(jìn)程 線程 作業(yè)
文件修改通知 事件
可等待定時器 文件 信標(biāo)
控制臺輸入 互斥對象 舉個例子
取消注釋后,一次顯示一個。體現(xiàn)了該函數(shù)對線程的控制。
(1)事件控制
盡管WaitForSingleObject可以等待很多對象的反應(yīng),但其主要還是用來處理事件等對象。事件是一種內(nèi)核對象,有兩個狀態(tài),一個用于表示該事件是自動重置事件還是人工重置事件。人工重置事件等待該事件的線程都會得到通知,自動重置事件只有一個線程會得到通知。另一個是事件的通知狀態(tài)。一是未通知狀態(tài)線程等待,一個是已通知狀態(tài),線程運(yùn)行。CreateEvent(NULL,自動(false)還是手工(true),通知(true)未通知(false)。HANDLE CreateEvent(LPSECURITY_ATTRIBUTES lpEventAttributes,BOOL bManualReset,BOOL bInitialState,LPTSTR lpName);最后一個是為事件起個名字,同名事件不能建立兩次。保證同名事件只能建立一次,可以為空。SetEvent:設(shè)為已通知狀態(tài) ResetEvent:設(shè)為未通知狀態(tài)
OpenEvent:打開一個已經(jīng)存在的時間,返回Handle
創(chuàng)建自動通知,立即通知事件
對自動通知事件SetEvent有意義,對手工通知事件無意義。手工通知同時顯示6個窗口,自動通知一次顯示1個(2)信標(biāo)內(nèi)核對象
使用信標(biāo)可以確定讓幾個線程同時運(yùn)行
CreateSemaphore(NULL,初始數(shù),最大數(shù),名稱)OpenSemaphore
最多同時有3個線程運(yùn)行。(3)互斥對象
互斥對象和關(guān)鍵代碼段的作用相同,效率比關(guān)鍵代碼段低。但運(yùn)行不同進(jìn)程間使用互斥對象,同時可以設(shè)置最大的等待時長?;コ鈱ο蠛推渌麅?nèi)核對象的區(qū)別,互斥對象可以記錄調(diào)用的線程ID,一旦線程得到該對象同線程的其他地方的等待將不會等待。CreateMutex(NULL,初始等待,名稱)OpenMutex(0,NULL,名稱)ReleaseMutex(HANDLE),只能是否本線程得到的對象
(4)
第二篇:Windows編程知識點(diǎn)總結(jié)
1、基于MFC對話框程序的框架代碼主要由一下幾個部分組成:
A.應(yīng)用程序類
B.對話框類
C.資源文件
D.預(yù)編譯文件
2、Windows是建立在消息驅(qū)動機(jī)制上的。
3、模態(tài)對話框運(yùn)行機(jī)制?
當(dāng)模態(tài)對話框產(chǎn)生后,應(yīng)用程序沒有處理消息,唯一的解釋就是模態(tài)對話框產(chǎn)生后會屏蔽其他窗體消息。事實(shí)也正是如此,創(chuàng)建模態(tài)對話框后,應(yīng)用程序只會響應(yīng)該對話框的消息,知道應(yīng)用收到結(jié)束模態(tài)對話框窗體的消息后,才會把控制權(quán)交還給應(yīng)用程序。
4、非模態(tài)對話框
與模態(tài)對話框不同,非模態(tài)對話框不會壟斷用戶的輸入,用戶任然可以使用其他窗體。
5、屬性對話框主要分為兩個部分:
A.屬性頁
B.屬性對話框架
6、屬性頁只是對話框的一種形式。
7、控件的邏輯順序決定著軟件中需要使用TAB進(jìn)行焦點(diǎn)切換時的順序排列。
8、控件按鈕有四種基本類型:
A.下壓按鈕
B.復(fù)選按鈕
C.單選按鈕
D.自繪按鈕
9、按鈕控件會向父窗口發(fā)出控件通知消息
A.BN_CLICKED:鼠標(biāo)單擊消息
B.BN_DOUBLECLICKED:鼠標(biāo)雙擊擊消息
C.BN_SETFOCUS:獲取用戶輸入焦點(diǎn)
D.BN_KILLFOCUS:失去用戶輸入焦點(diǎn)
10、在MFC環(huán)境下,除了使用CButton類本身的成員函數(shù)來操作按鈕控件,還可以使用窗體相關(guān)類的成員函數(shù),使用這些函數(shù)可以根據(jù)按鈕ID直接進(jìn)行操作。
11、MFC的CEdit類封裝了編輯框控件的基本操作。
12、UPPERCASES設(shè)置大寫,lowerCase設(shè)置小寫,Number設(shè)置只能接受數(shù)字,Password設(shè)置顯示為*。
13、MFC的CListBox類封裝了列表框控件的基本操作。
14、AddString:添加字符串列表項(xiàng)
DeleteString:刪除字符串列表項(xiàng)
Dir:從當(dāng)前目錄向列表框添加文件名
FindString:在列表框中查找包含指定前綴的第一個列表項(xiàng)
FindStringExact:在列表框中查找與指定字符串匹配的列表項(xiàng)
InsertString:向列表框中插入一個列表項(xiàng)
ResetContentp:清空編輯框和列表框的所有內(nèi)容
Selectstring:在列表框中查找字符串
15、組合框有三種模式:
簡易式
下拉式
下拉列表式
16、組合框有兩種形式:
Dropdown樣式
Drop List樣式
17、MFC的CProgressCtrl類封裝了進(jìn)度條控件的基本操作。
18、tist->SetTimer(1,100,NULL)
設(shè)置計時器ID為1,每100ms觸發(fā)一次
19、tist->KillTimer(1)
關(guān)閉計時器120、列表控件有四種呈現(xiàn)方式:
圖標(biāo)視圖
小圖標(biāo)視圖
列表視圖
報表視圖
21、文檔視圖結(jié)構(gòu)是使用MFC開發(fā)基于文檔的應(yīng)用程序的基本框架,最主要的思想是數(shù)據(jù)的管理與顯示分離。
22視圖類CView23、使用AppWizard創(chuàng)建SDI和MDI的過程相似,主要區(qū)別是創(chuàng)建SDI時不生成CChildFrame類,CMainFrame的基類為CMainWnd;而創(chuàng)建MDI時會生成兩個框架類,一個是CMainFrame類,由CMDIFrameWnd類派生而來,另一個是CChildFrame類,由CMDIChildWnd類派生而來
24、文檔與視圖體系
一個文檔可以對應(yīng)多個視圖,而一個視圖只能對應(yīng)一個文檔
文檔與視圖的結(jié)構(gòu)的優(yōu)勢在于數(shù)據(jù)的管理與顯示分離,在開發(fā)文檔/視圖體系開發(fā)應(yīng)用過程時,涉及到:文檔模板、文檔、視圖、框架窗口
25、MFC的CView類是所有視圖類的基類,主要有兩大工能:
將與其相關(guān)聯(lián)文檔的數(shù)據(jù)呈現(xiàn)給用戶
接受用戶對數(shù)據(jù)的修改,并反饋給文檔
26、建立MFC單文檔應(yīng)用程序,實(shí)例項(xiàng)目名稱為“single”框架會自動生成4個類:
CSingleApp類:應(yīng)用程序類
CMainFrame類:框架類
CSingleDoc文檔類
CSingleView類:視圖類
27、在MFC中使用GDI 進(jìn)行繪畫操作一般會涉及兩類對象:
設(shè)備上下文對象
GDI對象
28、設(shè)備上下文,是一種windows數(shù)據(jù)結(jié)構(gòu),它包含與設(shè)備繪制屬性相關(guān)的信息。
29、主要有一下幾種GDI 對象:
CPen對象:用來繪制線條
CBrush對象:用來填充繪制對象的內(nèi)部
CBitmap對象:用來操作位圖對象
CFont對象:用來繪制文本
CPalette對象:用于應(yīng)用程序和色彩輸出設(shè)備之間的接口
30、使用GDI進(jìn)行圖形繪制的一般流程:
創(chuàng)建GDI對象
創(chuàng)建獲取得設(shè)備上下文對象
使用SelectObject把GDI對象選入設(shè)備上下文
使用圖形輸出函數(shù)在指定上下文中繪制圖形
31、畫刷其實(shí)是一個像素大小為8*8的位圖,用多個相同的位圖對封圖形的內(nèi)部進(jìn)行填充
32、位圖
位圖是描述圖形最簡單直觀的一種形式,把圖像橫向分為等間距的W列,縱向分為等間距的H列,于是這個圖形的大小被定義為分辨率W*H33、鍵盤上的每一個健都對應(yīng)一個唯一的掃描碼,在windows系統(tǒng)中為實(shí)現(xiàn)設(shè)備無關(guān)的要求,需要使用虛擬鍵值
34、當(dāng)有鍵盤事件發(fā)生時,設(shè)備驅(qū)動器首先獲取健的掃描碼,并轉(zhuǎn)換為虛擬鍵值
35、在應(yīng)用程序中響應(yīng)鍵盤消息有兩種方式:
響應(yīng)本進(jìn)程的鍵盤消息
響應(yīng)系統(tǒng)的鍵盤消息
36、keybd_event只是用于產(chǎn)生鍵盤事件,至于由誰來處理他并不關(guān)心。系統(tǒng)捕捉到鍵盤事件后,會轉(zhuǎn)化為鍵盤消息的形式派發(fā)給當(dāng)前系統(tǒng)中擁有鍵盤輸入焦點(diǎn)的應(yīng)用程序。SendMessage和PostMasseage的區(qū)別在于,PostMasseage首先把消息發(fā)到指定句柄所在線程的消息隊列再由線程派發(fā)。SendMessage是把消息直接發(fā)送的指定句柄的窗體或控件。而往往很多情況下。指定句柄是個控件。而對控件的消息消息處理一般都是定義在主對話框上的。除非對其進(jìn)行子類化,如果使用SendMessage,消息就無法到達(dá)主對話框因而無法達(dá)到預(yù)期的效果。
37、TCP協(xié)議是一個面向連接的、可靠的協(xié)議,UDP協(xié)議是一個不可靠的、無連接的協(xié)議
38、因特網(wǎng)控制報文協(xié)議(Internet Control Message Protocol,ICMP)
39、套接字是一種網(wǎng)絡(luò)編程接口,提供了一種網(wǎng)絡(luò)數(shù)據(jù)發(fā)送和接受機(jī)制,套接字是網(wǎng)絡(luò)通信的基礎(chǔ),一個套接字表示通信的一端,使用套接字可以實(shí)現(xiàn)數(shù)據(jù)包在網(wǎng)絡(luò)上的傳輸。
40、soket函數(shù),用來根據(jù)指定的地址協(xié)議簇、套接字類型和協(xié)議類型創(chuàng)建一個套接字。
listen函數(shù),監(jiān)聽遠(yuǎn)程連接
accept函數(shù),用來接受客戶端連接。
sendto函數(shù),用來向指定地址發(fā)送數(shù)據(jù)。
recv函數(shù),用來在已建立連接的套接字上接收數(shù)據(jù)。
recvfrom函數(shù),用來在指定套接字上接收數(shù)據(jù)。
setsockopt函數(shù),用來設(shè)置套接字屬性。
41、進(jìn)程是一個正在運(yùn)行的程序的實(shí)例,有兩部分組成:
一個操作系統(tǒng)用來管理進(jìn)程的內(nèi)核對象。
創(chuàng)建時系統(tǒng)所分配的資源,主要是內(nèi)存地址單元。
41、進(jìn)程地址空間作為一個載體。包含進(jìn)城的所有數(shù)據(jù)和代碼以及堆和棧。為線程的運(yùn)行提供保障。
42、進(jìn)程是靜態(tài)的43、線程也有兩個部分組成:
線程內(nèi)核對象;線程堆棧。
44、線程是動態(tài)的、可執(zhí)行的、它總是在某個進(jìn)程的環(huán)境中創(chuàng)建的。
45、每個線程都是運(yùn)行在其所屬進(jìn)程的地址空間,因此線程只能訪問本進(jìn)程的地址空間,而其他進(jìn)程對其是不可見的46、所謂‘頁’,只是操作系統(tǒng)為了更好的管理地址空間所產(chǎn)生的一個邏輯上的概念,把一個固定長度的地址空間作為一個頁,通常為4kb,系統(tǒng)在在對地址空間進(jìn)行管理時,把每4kb的空間作為一個單位,最終形成內(nèi)存管理的多級索引結(jié)構(gòu)。
47、物理存儲器和進(jìn)程虛擬地址空間的映射是無序的,每一個進(jìn)程虛擬地址空間也只能由一個物理存儲器頁來映射。
48、“地址轉(zhuǎn)換機(jī)構(gòu)”就是負(fù)責(zé)他們彼此之間的關(guān)聯(lián)。
49、虛擬內(nèi)存也有三種基本狀態(tài):
空閑:地址空間沒有被占用,不能使用
保留:地址空間沒有被占用,但還沒有與物理存儲器相關(guān)聯(lián),不能使用。
提交:且已經(jīng)與物理存儲器相關(guān)聯(lián),可以使用。
50、內(nèi)存映射文件
內(nèi)存映射文件可以在進(jìn)程中保留一個地址空間區(qū)域,并把磁盤文件提交給該區(qū)域。一旦映射成功,就可以在內(nèi)存中直接操作文件,而不再需要使用readfile、writefile等文件操作API。
51、情況下會使用內(nèi)存映射文件:
系統(tǒng)使用內(nèi)存映射文件加載可執(zhí)行模塊(.exe)和動態(tài)鏈接(DDL)
操作數(shù)據(jù)文件
共享內(nèi)存
52、消息傳遞
消息傳遞機(jī)制并不以進(jìn)程為界限,處理消息的是窗體,而與是否在同一進(jìn)程無關(guān)。因而在進(jìn)程間使用消息傳遞作為通信手段有個前提,即都是窗體應(yīng)用程序。
53、共享內(nèi)存的原理
使用內(nèi)存共享機(jī)制,在任何一個進(jìn)程內(nèi)創(chuàng)建內(nèi)存映射,卻能夠在其他多個進(jìn)程中使用。這些進(jìn)程共享的是物理內(nèi)存器的同一個頁面,把這些物理內(nèi)存映射到虛擬內(nèi)存時各個進(jìn)程的虛擬地址不一定相同。當(dāng)一個進(jìn)程將數(shù)據(jù)寫入共享內(nèi)存時,其他進(jìn)程可以立即獲取數(shù)據(jù)變更情況,顯然這種共享內(nèi)存的方式是完全可以滿足在進(jìn)程間進(jìn)行大數(shù)據(jù)快速傳輸任務(wù)要求的。
54、與內(nèi)存映射磁盤文件一樣,共享內(nèi)存的本質(zhì)也是內(nèi)存映射機(jī)制。
55、使用系統(tǒng)頁文件支持的內(nèi)存映射文件,及共享內(nèi)存。
56、進(jìn)程間通信的三種基本方法:匿名管道、命名管道、郵槽
57、管道是用于進(jìn)程間通信的共享內(nèi)存區(qū)域。創(chuàng)建管道的進(jìn)程稱為管道服務(wù)器,而連接這兩個管道的進(jìn)程稱為管道客戶端,一個進(jìn)程向管道寫入信息,另外一個進(jìn)程從管道讀取信息
58、匿名管道
匿名管道是基于字符和半雙工的,一般用于程序輸入輸出的重定向。如果需要獲取一個基于控制臺窗口應(yīng)用程序的輸出,此時就可以是用匿名管道,首先使用CreatePipe函數(shù)創(chuàng)建匿名管道。
59、命名管道的特征:
命名管道是雙向的,進(jìn)程間可以使用同一管道進(jìn)行交互
命名管道不但可以面向字節(jié)流,還可以面向消息。所以讀取進(jìn)行可以讀取寫進(jìn)程發(fā)送的不同長度的消息
多個獨(dú)立的管道實(shí)例可以用同一個名稱來命名。
命名管道可以用于網(wǎng)絡(luò)間兩個進(jìn)程的通信,而其實(shí)現(xiàn)過程與本地進(jìn)程通信完全一致
60、創(chuàng)建命名管道使用CreateNamedPipe函數(shù)
61、郵槽是實(shí)現(xiàn)單通道的進(jìn)程間通信的通信方式。創(chuàng)建郵槽的進(jìn)程稱為郵槽服務(wù)器,向郵槽發(fā)送消息的進(jìn)程稱為郵槽客戶端
60、創(chuàng)建郵槽使用CreateMailslot函數(shù)
61、windows剪貼板是一種比較簡單同時也是開銷比較小的進(jìn)程間通信方式。
62、剪貼板通信機(jī)制
windows系統(tǒng)支持剪貼板IPC的基本機(jī)制室友系統(tǒng)預(yù)留的一塊全局共享內(nèi)存,可用于被各個進(jìn)程暫時存儲數(shù)據(jù)。寫入進(jìn)程首先穿件一個全局內(nèi)存塊,并將數(shù)據(jù)寫到該內(nèi)存塊;接受數(shù)據(jù)的進(jìn)程通過剪貼板機(jī)制獲取此內(nèi)存塊的句柄,并完成對該內(nèi)存塊數(shù)據(jù)的讀取。
63、剪貼板通信有5種基本情況:
文本剪貼板
位圖剪貼板
自定義格式
延遲提交
多項(xiàng)數(shù)據(jù)
63、進(jìn)程同步可分為兩大類:
訪問共享資源,多個進(jìn)程訪問進(jìn)程共享資源時,需要確保資源不受破壞。
事件通知,一個線程完成某項(xiàng)任務(wù)后通知其他線程。
64、原子訪問,是指線程對共享資源的獨(dú)占式訪問。
65、關(guān)鍵代碼段,是指在執(zhí)行前首先去的對共享資源的訪問權(quán),然后讓代碼以原子操作方式執(zhí)行來訪問共享資源的一種方法。
66、內(nèi)核對象等待函數(shù),其所等待的也正是內(nèi)核對象的受信狀態(tài)。
67、內(nèi)核對象本質(zhì)上只是一個內(nèi)存塊。
68、內(nèi)核對象是操作系統(tǒng)對資源進(jìn)行管理的單位。
69、內(nèi)核對象有兩種狀態(tài):已通知狀態(tài)、未通知狀態(tài)
70、在所有內(nèi)核對象中,事件內(nèi)核對象是最基本的對象,事件內(nèi)核對象有兩種狀態(tài):已通知狀態(tài)、未通知狀態(tài)。在多線程環(huán)境先經(jīng)常使用事件內(nèi)核對象的這種特性實(shí)現(xiàn)線程同步。
71、事件內(nèi)核對象有兩種基本類型:手動重置事件、自動重置事件。
72、等待定時器內(nèi)核對象是可以在某個指定時間或者以規(guī)定的間隔發(fā)出通知信號的內(nèi)核對象,一般在某個線程需要定時執(zhí)行某項(xiàng)功能時用這種內(nèi)核對項(xiàng)
73、信標(biāo)內(nèi)核對項(xiàng)常用于在多線程環(huán)境下控制某類資源的使用,使用信標(biāo)內(nèi)核對象可以讓系統(tǒng)自動地維護(hù)資源的數(shù)量,并合理的控制線程對資源的訪問情況。
74、信標(biāo)的出色之處在于它們能夠以原子操作方式來執(zhí)行測試和設(shè)置操作,當(dāng)向信標(biāo)申請一個資源時,操作系統(tǒng)就要檢驗(yàn)是否有這個資源可供使用,同時將可用資源的數(shù)量遞減,而不讓另一個線程加以干擾。只有當(dāng)資源數(shù)量遞減后,系統(tǒng)才允許另一個線程申請對資源的訪問權(quán)。
75、如果線程需要訪問該資源就要先獲取互斥對象,所有線程都應(yīng)遵循這個規(guī)則。
76、動態(tài)鏈接庫(DLL)是Windows操作系統(tǒng)的基礎(chǔ),所有API函數(shù)都包含在DLL中。應(yīng)用程序并不是只有一個可執(zhí)行程序,而是由一個可執(zhí)行模塊和若干個DLL模塊組成。當(dāng)執(zhí)行應(yīng)用程序時,系統(tǒng)會把與可執(zhí)行模塊相鏈接的DLL模塊加載到當(dāng)前進(jìn)程地址空間。
77、動態(tài)鏈接庫(DLL)的最大特性是支持動態(tài)載入。
78、要產(chǎn)生可執(zhí)行文件有兩個步驟:
1)編譯過程。編譯源碼,為每個C/C++源文件生成一個.obj模塊,由編譯器完成。
2)鏈接過程。把應(yīng)用程序的各個.obj模塊鏈接起來產(chǎn)生.exe文件,有鏈接器完成。
79、DLL隱式鏈接,是指在鏈接過程中,把應(yīng)用程序所需要DLL模塊的名字和輸入符號都記錄下來,使得應(yīng)用程序在運(yùn)行時可以動態(tài)載入該DLL。
80、與隱式鏈接相比,顯示加載DLL主要有以下幾個特性:
1)顯示加載的DLL并不會在應(yīng)用程序初始化時就加載,而是在運(yùn)行時根據(jù)需要調(diào)用LoadLibrary或LoadLibraryEx函數(shù)來加載。
2)在應(yīng)用程序輸入表中沒有記錄。
3)隱式鏈接的前提是需要有DLL所對應(yīng)的lib文件,如果沒有l(wèi)ib文件就無法進(jìn)行隱式鏈接。顯示加載就沒有這個限制。
81、DllMain函數(shù)是DLL的可選入口。
82、線程本地存儲器(TLS)的主要作用是可以避免多個線程同時訪問同一全局或者靜態(tài)變量時導(dǎo)致的沖突。
83、TLS有兩種使用方法:靜態(tài)TLS和動態(tài)TLS。
84、結(jié)構(gòu)異常處理有三種基本的使用方法,分別是結(jié)束異常程序、異常處理程序和頂層異常處理。
85結(jié)構(gòu)化異常處理(SEH)是被作為一種系統(tǒng)機(jī)制引入到操作系統(tǒng)中的。
86、可執(zhí)行文件格式(PE),其格式中得分?jǐn)?shù)據(jù)結(jié)構(gòu)通常定義在winnt.h中。
第三篇:Windows編程_實(shí)驗(yàn)2指導(dǎo)
Windows編程/附件資料2
實(shí)驗(yàn)2MFC 框架程序的分析認(rèn)知與編程實(shí)踐(4學(xué)時)
一、實(shí)驗(yàn)?zāi)康模?/p>
熟悉在Visual C++ 6.0 IDE中編輯、編譯、調(diào)試和運(yùn)行一個MFC應(yīng)用程序的基本思路;理解并掌握利用MFC開發(fā)應(yīng)用程序的一般步驟和過程;加深對MFC框架程序的特性認(rèn)識,掌握其應(yīng)用方法。了解構(gòu)件式的軟件開發(fā)思想;提高實(shí)際動手編制WinApp的能力和分析問題、解決問題的能力。
二、實(shí)驗(yàn)內(nèi)容:
1、分析理解題:利用MFC AppWizard分別創(chuàng)建最基本的基于對話框的應(yīng)用程序,單文檔應(yīng)用程序和多文檔應(yīng)用程序;并從類/文件/資源等視圖角度分析比較它們各自所自動擁有的類(基類)/文件(主要是.cpp文件)/資源的異同,回答其后(即四所列)思考題;要求在實(shí)驗(yàn)報告中反應(yīng)分析比較情況及你的認(rèn)知理解點(diǎn)滴。(必做)
2、程序設(shè)計題:以MFC編程方式,編寫并實(shí)現(xiàn)一個簡易計算器功能的應(yīng)用程序。其界面架構(gòu)形式和具體內(nèi)容自我設(shè)計,原則:架構(gòu)美觀、布局合理,內(nèi)容實(shí)用,具有可計算特性。
3、以MFC編程方式,編寫并實(shí)現(xiàn)一個SDI界面的“奧運(yùn)五環(huán)”繪圖應(yīng)用程序。(提高)提示:編寫在窗口客戶區(qū)上“繪制一張笑臉”的WinApp。
1)若用SDK API方式編程,則其WM_PAINT消息的響應(yīng)代碼為:
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
hPen=CreatePen(PS_SOLID,5,RGB(255,0,0));
SelectObject(hdc,hPen);
Ellipse(hdc,275,170,425,320);
Arc(hdc,360,215,410,240,410,225,360,225);
Arc(hdc,290,215,340,240,340,225,290,225);
Arc(hdc,320,240,380,300,320,270,380,270);
EndPaint(hwnd,&ps);
return 0;
2)若以MFC方式編程,則可利用MFC AppWizard建立一個SDI界面的應(yīng)用程序框架,然后在其視類的OnDraw()中加入如下代碼也可。
CPen pen,*oldpen;
pen.CreatePen(PS_SOLID,2,RGB(255,0,0));
計算機(jī)科學(xué)系XYP編制2011-5-18第1 頁
oldpen=pDC->SelectObject(&pen);
pDC->Ellipse(275,170,425,320);
pDC->Arc(360,215,410,240,410,225,360,225);
pDC->Arc(290,215,340,240,340,225,290,225);
pDC->Arc(320,240,380,300,320,270,380,270);
pDC->SelectObject(oldpen);
三、實(shí)驗(yàn)要求:
通過本次實(shí)驗(yàn),要求同學(xué)們能對利用MFC AppWizard、ClassWizard等實(shí)用工具編寫WinApp的方法、步驟有一個較為全面的了解,并注意理解由MFC AppWizard所生成的WinApp框架的組織架構(gòu)和作用;深刻理解在此基礎(chǔ)上開發(fā)WinApp的主要工作是“填充框架和添加必要的實(shí)現(xiàn)代碼”的含義,切實(shí)做到用理論指導(dǎo)實(shí)踐,以實(shí)踐促進(jìn)理論,提高實(shí)際動手能力和再學(xué)習(xí)的能力。具體要求如下:
1、實(shí)驗(yàn)前認(rèn)真準(zhǔn)備、仔細(xì)計劃,查找相關(guān)資料,寫出預(yù)做報告,促進(jìn)理性思維能力;
2、實(shí)驗(yàn)中以理性實(shí)踐的態(tài)度,積極思考,認(rèn)真領(lǐng)悟?qū)嶒?yàn)過程出現(xiàn)的各種實(shí)驗(yàn)現(xiàn)象,注意總結(jié)積累經(jīng)驗(yàn),完成實(shí)驗(yàn)要求,達(dá)到實(shí)驗(yàn)?zāi)繕?biāo),提高應(yīng)對問題、解決問題的能力;
3、實(shí)驗(yàn)后按要求及時、認(rèn)真地完成實(shí)驗(yàn)報告,按時提交。
特別強(qiáng)調(diào),注意實(shí)驗(yàn)報告內(nèi)容的完整性、真實(shí)性和個異特點(diǎn),使我們的兩個能力:動手和持續(xù)學(xué)習(xí)能力真正得到提高。
四、思考題:
1.在MFC應(yīng)用程序中,至少必須包含幾個類?它們分別是什么類?
2.由MFC AppWizard生成的應(yīng)用程序,都有哪些主要文件?包含哪些類及相關(guān)類的對應(yīng)功能和它們之間的關(guān)系怎樣?
3.控件使用中應(yīng)特別注意哪些問題?
4.在使用編輯框時,應(yīng)注意哪幾點(diǎn)?
5.ClassWizard使用中,應(yīng)關(guān)注的主要問題是什么?注意哪些問題?
溫馨小貼示:
1.MFC應(yīng)用程序必須包含的兩個基本類是CWinApp類和CFrameWnd類。CWinApp類替代了API應(yīng)用程序中的主函數(shù)WinMain()功能,封裝了與應(yīng)用程序相關(guān)的程序初始化InitApplication()和InitInstance()、消息循環(huán)Run()和程序結(jié)束ExitInstance()等功能;CFrameWnd類替代了窗口函數(shù)WndProc()的功能,封裝了消息處理和窗口銷毀等功能。
2.MFC應(yīng)用程序消息處理的路徑為:應(yīng)用程序從CWinApp派生對象,其成員函數(shù)Run()調(diào)用
CWinThread::Run(),通過GetMessage(),TranslateMessage()和DispatchMessage()進(jìn)行消息循環(huán)。每個窗口對象都使用相同的稱為AfxWndProc()的全局函數(shù),AfxWndProc()調(diào)用OnWndMsg()處理消息。OnWndMsg()負(fù)責(zé)將收到的消息分為三大類:窗口消息、命令消息和控件消息,再分發(fā)給不同的消息處理函數(shù)去處理。
3.MFC應(yīng)用程序的啟動順序:①建立、初始化CWinApp對象,該對象是全局的且只能有一個,名為theApp;②在InitInstance()函數(shù)中,創(chuàng)建文檔模板,執(zhí)行MFC框架默認(rèn)的命令行參數(shù),根椐分解的命令行信息,啟動不同類型的任務(wù),動態(tài)建立文檔、視圖、框架,并對文檔、視圖、框架進(jìn)行初始化;③顯示與更新窗口;④啟動消息循環(huán)。
五、參考書籍:
1.《Visual C++ 應(yīng)用教程》·鄭阿奇,丁有和 編著·人民郵電出版社2008.10
2.《Visual C++ 實(shí)用教程》·周進(jìn)等 編著·人民郵電出版社2008.5
3.《Windows 程序設(shè)計教程》·楊祥金等 編著·清華大學(xué)出版社·2007.4
4.《Windows可視化程序設(shè)計》·劉振安主編·機(jī)械工業(yè)出版社·2007.1
5.《Visual C++ 程序設(shè)計—基礎(chǔ)與實(shí)例分析》·朱晴婷等 編著·清華大學(xué)出版社2004.3
6.《Visual C++ 6.0實(shí)用教程》·揚(yáng)永國 主編·清華大學(xué)出版社·2004.1
7.《C++及Windows可視化程序設(shè)計》·劉振安編著·清華大學(xué)出版社·2003.7
8.《Windows C程序設(shè)計入門與提高》·柳永新等 編著·清華大學(xué)出版社·1999.7
肖云萍編寫
第四篇:WINDOWS教案
WINDOWSXP教案
一、桌面的操作
1、桌面元素的構(gòu)成
2、桌面屬性的設(shè)置:右擊桌面空白---“屬性”—“主題”(為桌面選擇一種主題)“桌面”(選擇一種背景并選擇其位置,利用“自定義桌面”按鈕讓一些系統(tǒng)圖標(biāo)出現(xiàn)或消失,可以修改系統(tǒng)圖標(biāo)的圖標(biāo)樣式)“屏幕保護(hù)程序”(選擇一種屏保和其其等待時間)“外觀”(利用“高級”按鈕來修改桌面元素的外觀,例:修改活動窗口標(biāo)題欄的顏色;利用“效果”按鈕來修改菜單的過渡效果,還可以改成大圖標(biāo))“設(shè)置”(設(shè)置分辨率、和色彩位數(shù))
3、在桌面上新建文件夾和空白文件(1)新建文件夾:右擊桌面空白區(qū)—“新建”—“文件夾”—輸入文件夾名—回車(ENTER)
(2)新建空白文件:右擊桌面空白區(qū)—“新建”—“文本文檔”—輸入新文件名(如廣告.TXT)—回車
4、在桌面上刪除文件或文件夾
右擊桌面上要刪除的文件或文件夾—“刪除”(如果要真正刪除要先按住SHIFT鍵)--“是”按鈕
5、任務(wù)欄操作:(1)利用任務(wù)欄進(jìn)行窗口切換
(2)利用任務(wù)欄排列窗口(右擊任務(wù)欄空白區(qū)—選擇一種種排列方式)
(3)任務(wù)欄屬性設(shè)置(右擊—“屬性”—打勾或去掉勾)
(4)快速啟動按鈕的使用
(5)任務(wù)組(利用任務(wù)組按鈕去打開組中某一文件或取消任務(wù)組)
(6)時鐘:查看系統(tǒng)日期;修改系統(tǒng)日期和時間(注意一定要按“確定”按鈕)
(7)語言指示器:
中西文切換:CTRL+空格 中文輸入法的切換:CTRL+SHIFT 全角和半角切換:SHIFT+空格 中西文標(biāo)點(diǎn)符號切換:CTRL+.活動鍵盤:右擊活動鍵盤—選擇符號集合(如希臘字母αβαβΑΒ≥≤∵∴∽≌)—用鼠標(biāo)或鍵盤輸入題目所需字母或符號(如:≌∵)!@#:
6、開始菜單的設(shè)置:經(jīng)典菜單和現(xiàn)代菜單的切換、設(shè)置(1)利用“開始”菜單打開或新建OFFICE文檔(2)利用“開始”—“程序”來打開或運(yùn)行某程序(3)“開始”—“程序”—“附件”
畫圖:畫一些基本圖形(SHIFT畫正圓或正方形),線條顏色,填充顏色,反色處理,旋轉(zhuǎn)!放入剪貼板(先選中),保存 計算器:“標(biāo)準(zhǔn)型”和“科學(xué)型”轉(zhuǎn)換;計算某個數(shù)的幾次方;將一種進(jìn)制數(shù)轉(zhuǎn)換成另一種進(jìn)制數(shù) 窗口
命令提示符:打開命令提示符窗口;修改提示符窗口字體(可以通過屬性修改)(4)“文檔”:可以利用它來打開最近使用過的某個文檔(5)“開始”菜單屬性設(shè)置(右擊“開始”按鈕—“屬性”—選擇“開始菜單”標(biāo)簽 經(jīng)典菜單和常規(guī)菜單轉(zhuǎn)換 常規(guī)菜單中“自定義”:圖標(biāo)大小、程序數(shù)目,兩個設(shè)置,菜單項(xiàng)目顯示方式(如“控制面板”以菜單方式顯示)(6)幫助和支持: 打開“幫助和支持”:“開始”—“幫助和支持” F1鍵
在“我的電腦”窗口—“幫助”—“幫助和支持中心”
尋找?guī)椭捍蜷_幫助---“索引”—在健入要查找的關(guān)鍵字下面的空白框里輸入內(nèi)容(如:磁盤清理程序)--點(diǎn)“顯示“按鈕—在出現(xiàn)的對話框中選中要看的內(nèi)容(如:使用磁盤清理程序)--再點(diǎn)“顯示”按鈕
利用對話框右上角的問號進(jìn)行幫助 打開“幫助和支持”窗口
二、窗口操作
1、窗口標(biāo)題欄上按鈕的使用:最大化、最小化、還原、關(guān)閉、控制菜單(注意:用雙擊“控制菜單”或ALT+F4都可以關(guān)閉窗口)
2、窗口元素的介紹 利用ALT+菜單后面的字母來打開菜單(如:ALT+F可以打開文件菜單)利用信息區(qū)改變位置或者進(jìn)行某項(xiàng)操作
3、打開一個窗口:右擊圖標(biāo)—“打開”或者雙擊
4、工具欄的使用
“查看”菜單—“工具欄”—“標(biāo)準(zhǔn)按鈕”(前面打上勾則有工具欄相反則無)狀態(tài)欄和地址欄操作也是一樣
5、窗口的移動:一定要到位,要拖住標(biāo)題欄
6、活動窗口的激活
7、窗口的大小
8、窗口的排列
9、查看菜單:圖標(biāo)的顯示方式(工具欄上也有,右擊空白區(qū)也有);圖標(biāo)排列;刷新
10、“工具”—“文件夾選項(xiàng)”—“常規(guī)”標(biāo)簽進(jìn)行窗口和文件夾的一些設(shè)置
三、文件和文件夾操作
1、新建文件和文件夾
注意建立文件或文件夾的地址;用“文件”菜單也可以新建
2、重命名文件和文件夾
右擊對象或單擊“文件”菜單—“重命名”—輸入新名—回車
3、文件和文件夾的復(fù)制
找到要復(fù)制的文件或文件夾并選中—在右擊或“編輯”菜單中點(diǎn)“復(fù)制”—找到目的地---“編輯”或右擊菜單中“粘貼”
4、文件和文件夾的移動
找到要移動的文件或文件夾并選中—在右擊或“編輯”菜單中點(diǎn)“剪切”—找到目的地---“編輯”或右擊菜單中“粘貼”
5、選中操作:
(1)選中連續(xù)區(qū)域的文件:單擊第一個,按住SHIFT后再單擊最后一個文件
(2)不連續(xù)區(qū)域的文件:單擊第一個,按住CTRL鍵后單擊其它文件;注意:CTRL鍵也可以用來取消選中(3)全部選中:“編輯”—“全部選定”或用CTRL+A(4)反向選擇:“編輯”—“反向選定”
6、文件和文件夾的刪除
右擊要刪除的文件或文件夾—“刪除”—“是”
7、文件和文件夾的還原:
打開“回收站”窗口—選中要還原的文件或文件夾—右擊—“還原”
6、文件和文件夾的屬性設(shè)置
7、文件和文件夾的還原
8、文件夾選項(xiàng)的設(shè)置
9、文件類型
10、文件的打開方式
11、利用資源管理器來進(jìn)行文件和文件夾操作
四、回收站的設(shè)置
1、清空回收站:打開“回收站”窗口—“文件”—“清空回收站” 右擊回收站圖標(biāo)—“清空回收站”
2、回收站屬性的設(shè)置 回收站在各驅(qū)動器所占比例設(shè)置 是否要刪除確認(rèn)對話框 設(shè)置刪除=SHIFT+刪除
五、應(yīng)用程序的使用
1、利用開始菜單的程序菜單運(yùn)行應(yīng)用程序
2、“開始”—“運(yùn)行”—在空白框中輸入要運(yùn)行程序的完整的文件標(biāo)識符—“確定”
3、在資源管理器中運(yùn)行應(yīng)用程序
4、利用桌面圖標(biāo)運(yùn)行程序
六、快捷方式的操作
1、為應(yīng)用程序建立快捷方式
請為應(yīng)用程序C:WINDOWSSYSTEM32MSPICTURE.EXE創(chuàng)建名為“畫圖”的快捷方式 計算器C:WINDOWSSYSTEM32CALC.EXE 畫筆C:WINDOWSSYSTEM32MSPAINT.EXE 記事本
C:WINDOWSSYSTEM32NOTEPAD.EXE
右擊桌面空白處—“新建”—“快捷方式”在空白框內(nèi)輸入要建立快捷方式的程序的完整標(biāo)識符---“下一步”—在空白框內(nèi)輸入快捷方式的名稱—“完成”
2、找到要建立快捷方式的文件或文件夾—右擊—“創(chuàng)建快捷方式”
3、找到要建立快捷方式的文件或文件夾—右擊—“發(fā)送”—“桌面快捷方式”
4、快捷方式屬性的設(shè)置 右擊某快捷方式—“屬性”
設(shè)置快捷鍵(默認(rèn)CTRL+ALT+字母或符號)只要輸入一個字符再確定就可以了 改變運(yùn)行方式(常規(guī)、最小化、最大化)
在屬性對話框中點(diǎn)“更改圖標(biāo)”按鈕—在最上面的空白處輸入圖標(biāo)庫文件C:WINDOWSSYSTEM32SHELL32.DLL---找到要修改的圖標(biāo)(如一棵樹)--“確定”—“確定”
七、剪貼板的使用
1、剪貼板的概念
在文件復(fù)制和文件移動中也用到了剪貼板
2、整個屏幕的保存
按一下PRINT SCREEN(PRTSC)鍵
3、活動窗口的保存
按下ALT+PRINT SCREEN(注意:要先將要抓的窗口變?yōu)榛顒哟翱冢?/p>
八、查找文件
1、通配符
2、查找條件的輸入
九、磁盤管理 軟盤管理:
格式化:右擊盤符—格式化—進(jìn)行“完全格式化”或“快速格式化”選擇;選擇是否復(fù)制系統(tǒng)文件;給磁盤加上盤符—點(diǎn)擊“開始”按鈕---等到出現(xiàn)信息框即可;
可以為軟盤添加卷標(biāo)(2)磁盤復(fù)制:
右擊軟盤盤符---“磁盤復(fù)制”---在出現(xiàn)的對話框上點(diǎn)擊“開始”按鈕—到綠色方格向右跑到中間位置即可
2、硬盤管理:(1)屬性設(shè)置:
右擊某盤符—“屬性”或“共享與安全”—可以設(shè)置卷標(biāo)、“磁盤清理”、“開始檢查”、“磁盤整理”、“磁盤備份”---“確定” 另一種方式:
“開始”—“程序”—“附件”—“系統(tǒng)工具”—“磁盤檢查”—在出現(xiàn)的對話框中選擇要檢查的盤符—選擇檢查的方式(如:標(biāo)準(zhǔn)檢查)--“確定” 注意:這種方式還可以進(jìn)行“磁盤清理”和“磁盤碎片整理”(2)共享和安全的設(shè)置:
例題:請將D盤設(shè)置為共享,共享名為:LIU;訪問方式為只讀;密碼為RSBN 右擊D盤盤符—“共享與安全”—在“共享為”前打上點(diǎn),在下面的空白框內(nèi)輸入共享名(如LIU)--在訪問方式下的“只讀”前打點(diǎn)(根據(jù)題意也可以在“完全訪問”前打點(diǎn))--輸入只讀密碼(如:RSBN注意大小寫,一般輸入兩次)--“確定”(1)
十、控制面板的使用
1、打開:“開始”—“設(shè)置”—“控制面板”
打開“我的電腦”窗口后在信息區(qū)中找到“控制面板”
2、視圖的切換:經(jīng)典視圖和分類視圖的切換,通過信息左上部的切換項(xiàng)來進(jìn)行切換
3、文件夾選項(xiàng)、日期和時間、開始菜單和任務(wù)欄、顯示
4、打印機(jī)及傳真:“開始”—“設(shè)置”—“打印機(jī)和傳真”(1)添加打印機(jī)驅(qū)動程序 右打印機(jī)窗口左上部信息區(qū)點(diǎn)“添加打印機(jī)”—選擇“本地打印機(jī)”或“網(wǎng)絡(luò)打印機(jī)”—“下一步”—將端口設(shè)置為“LPT1”—“下一步”—選擇生產(chǎn)廠家(如“EPSON”)--選擇打印機(jī)型號(如“LQ—1600K”)--“下一步”—設(shè)置打印機(jī)名—設(shè)置是否為默認(rèn)打印機(jī)—“下一步”—設(shè)置是否打印測試頁—“完成”
(2)設(shè)置默認(rèn)打印機(jī):右擊某打印機(jī)程序—“設(shè)為默認(rèn)打印機(jī)”(3)設(shè)置“脫機(jī)打印”或“聯(lián)機(jī)打印”(通過右擊某打印機(jī))
5、電源選項(xiàng):設(shè)置電源使用方案(如:一直開著)
6、區(qū)域和時間設(shè)置
“區(qū)域選項(xiàng)”標(biāo)簽—“自定義”按鈕—修改數(shù)字格式(小數(shù)點(diǎn)后精確位數(shù),負(fù)數(shù)格式)、貨幣符號、時間日期格式、排序(發(fā)音和筆劃)
7、鼠標(biāo):主要和次要按鈕的切換
鼠標(biāo)指針方案的修改
8、添加和刪除程序
(1)刪除一個舊程序:點(diǎn)左側(cè)“添加/刪除程序”按鈕—在右側(cè)的列表中找到要刪除的程序并選中—點(diǎn)該程序右下角的“更改/刪除”按鈕
(2)添加一個新程序:點(diǎn)左側(cè)的“添加新程序”—點(diǎn)窗口右上角的“CD或軟盤”—在出現(xiàn)的窗口空白框內(nèi)輸入要安裝的軟件的完整標(biāo)識符—“完成“
(3)添加或刪除一個WINDOWSXP組件
點(diǎn)左側(cè)第三個按鈕—在列表中找到要刪除或添加的組件打上勾或去掉勾(如:“傳真服務(wù)“)—“從磁盤安裝”
9、系統(tǒng):通過系統(tǒng)這個圖標(biāo)給計算機(jī)加一個名字
10、用戶帳戶:(1)創(chuàng)建一個新帳戶:輸入帳戶名—選擇帳戶類型(2)更改帳戶:名稱、圖標(biāo)、類型、密碼(3)注銷一個帳戶或切換切換到另一帳戶 11.本地安全策略設(shè)置(1)帳戶策略
“控制面板”----“性能和維護(hù)”----“管理工具”----“本地安全策略”—“帳戶策略” A.密碼策略:密碼必須符合復(fù)雜性要求。密碼長度最小值。密碼最長(或最短)存留期 B.帳戶鎖定策略:帳戶鎖定閥值(0—999),賬戶鎖定時間(0—99999)(2)本地策略:“本地策略”—“用戶權(quán)利指派” A.更改系統(tǒng)時間B。拒絕本地登錄(3)本地組策略設(shè)置 A.打開組策略:“開始”—“運(yùn)行”“—GPEDIT。MSC B.使用組策略:“用戶配置“—”管理模板“—”桌面“(4)微軟管理控制臺:
“開始”—“運(yùn)行”—“MMC”—“確定” A.添加組策略管理單元
12、字體:向字體庫中添加一個已在剪貼板中的字體文件(用“粘貼“就可以);從當(dāng)前字體庫中刪除某字體(如:黑體)
輸入法屬性修改在右擊語言指示器—“設(shè)置”
十一。網(wǎng)絡(luò)設(shè)置與使用
1.設(shè)置本地連接(1)顯示本地連接
(2)查看本地連接的狀態(tài):“本地連接”—“文件”—“狀態(tài)”(3)設(shè)置本地連接:右擊“本地連接”—“屬性” 2.家庭或小型辦公網(wǎng)絡(luò):(1)創(chuàng)建家庭或小型辦公網(wǎng)絡(luò)
“控制面板”—“網(wǎng)絡(luò)和INTERNET連接”—“網(wǎng)絡(luò)安裝向?qū)А?3.網(wǎng)絡(luò)資源共享(1)共享文件夾
(2)通過網(wǎng)上鄰居瀏覽網(wǎng)絡(luò)資源(3)映射網(wǎng)絡(luò)資源
(4)創(chuàng)建網(wǎng)絡(luò)資源的快捷方式 4.連接INTERNET(1)建立撥號連接:“控制面板”—“網(wǎng)絡(luò)和INTERNET連接”—“設(shè)置或更改您的INTERNET連接”—“建立連接”----“下一步”—“下一步”—“手動設(shè)置我的連接”—“下一步”—“用撥號調(diào)制解調(diào)器連接”—“下一步”—輸入ISP(INTERNET服務(wù)提供商),如:263—“下一步”—輸入ISP的電話號碼,如:962632—“下一步”—輸入INTERNET帳戶信息。如:用戶名263,密碼:263—“下一步”—選中“在我的桌面上添加一個到些連接的快捷方式”—“完成”
(2)建立寬帶連接:只是在選擇連接方式時選寬帶即可。5.INTERNET EXPLORER(1)啟動IE(2)瀏覽網(wǎng)頁(3)使用收藏夾(4)查看歷史記錄(5)“工具”—“INTERNET選項(xiàng)”或右擊IE圖標(biāo)—“屬性“ 6.安全中心(1)防火墻:“控制面板”—“網(wǎng)絡(luò)和INTERNET連接”—“WINDOWS防火墻” 啟用,配置。使用安全日志(“高級”—“安全日志記錄”)(2)自動更新:“安全中心”—“管理安全設(shè)置”
十二。多媒體娛樂
1,錄音機(jī)
(1)錄制聲音:(2)播放聲音
(3)混合聲音文件:打開需要混入聲音的文件—將游標(biāo)移至需混入的位置—“編輯“菜單—”與文件混音“—”打開“混入文件”
(4)編輯聲音文件 A.刪除部分聲音文件:“編輯”
B.將一個文件手稿到另一文件中“編輯”—“插入文件” C.調(diào)整文件質(zhì)量“文件”—“屬性” D.修改文件的效果“效果”菜單
(5)將聲音添加或鏈接到文檔“編輯”—“復(fù)制”
2.WINDOWS
MEDIA
PLAYER(1)啟動:“開始”—“程序”—“娛樂”—“WINDOWS MEDIA PLAYER“(2)改變顯示模式:完整,外觀,最小播放機(jī);使用“查看”菜單(3)設(shè)置;“工具”—“選項(xiàng)”(4)播放媒體文件:“播放”或“文件”—“打開”;播放選項(xiàng)調(diào)整。改變界面(“查看”—“正在播放”--)(5)媒體庫:“功能任務(wù)欄”中“媒體庫”;添加刪除文件(6)管理播放列表:A。創(chuàng)建播放列表:“文件”—“新建播放列表”
“媒體庫”—“播放列表”--“新建播放列表” B.將媒體文件或包含媒體文件夾添加到列表中:
在“我的電腦”中選中要進(jìn)入列表的文件并右擊—“添加到播放列表中”
3.WINDOWS MOVIE MAKER
第五篇:編程教案
常用編程指令的應(yīng)用
車削加工編程一般包含X和Z坐標(biāo)運(yùn)動及繞Z軸旋轉(zhuǎn)的轉(zhuǎn)角坐標(biāo)C。
(1)快速定位(G00或G0)刀具以點(diǎn)位控制方式從當(dāng)前所在位置快速移動到指令給出的目標(biāo)位置。
指令格式:G00 X(U)Z(W);(2)直線插補(bǔ)(G01或G1)
指令格式:G01 X(U)Z(W)F ;
圖1 快速定位 圖2 直線插補(bǔ)
G00 X40.0 Z56.0; G01 X40.0 Z20.1 F0.2;
/絕對坐標(biāo),直徑編程; /絕對坐標(biāo),直徑編程,切削進(jìn)給率0.2mm/r G00 U-60.0 W-30 G01 U20.0 W-25.9 F0.2;
/增量坐標(biāo),直徑編程 /增量坐標(biāo),直徑編程,切削進(jìn)給率0.2mm/r(3)圓弧插補(bǔ)(G02或G2,G03或G3)1)指令格式: G02 X(U)_Z(W)_I_K_F_ ; G02 X(U)Z(W)R F ;
G03 X(U)_Z(W)_I_K_F_ ; G03 X(U)Z(W)R F ;
2)指令功能: 3)指令說明: ①G02為順時針圓弧插補(bǔ)指令,G03為逆時針圓弧插補(bǔ)指令。圓弧的順、逆方向判斷見圖3左圖,朝著與圓弧所在平面相垂直的坐標(biāo)軸的負(fù)方向看,順時針為G02,逆時針為G03,圖3右圖分別表示了車床前置刀架和后置刀架對圓弧順與逆方向的判斷;
圖3 圓弧的順逆方向
②如圖4,采用絕對坐標(biāo)編程,X、Z為圓弧終點(diǎn)坐標(biāo)值;采用增量坐標(biāo)編程,U、W為圓弧終點(diǎn)相對圓弧起點(diǎn)的坐標(biāo)增量,R是圓弧半徑,當(dāng)圓弧所對圓心角為0°~180°時,R取正值;當(dāng)圓心角為180°~360°時,R取負(fù)值。I、K為 圓心在X、Z軸方向上相對圓弧起點(diǎn)的坐標(biāo)增量(用半徑值表示),I、K為零時可以省略。
圖4 圓弧絕對坐標(biāo),相對坐標(biāo)
圖5 圓弧插補(bǔ)
G02 X50.0 Z30.0 I25.0 F0.3; G03 X87.98 Z50.0 I-30.0 K-40.0 F0.3;
G02 U20.0 W-20.0 I25.0 F0.3; /絕對坐標(biāo),直徑編程
G02 X50.Z30.0 R25.0 F0.3; G03 U37.98 W-30.0 I-30.0 K-40.0 F0.3; G02 U20.0 W-20.0 R25.0 F0.3; /相對坐標(biāo),直徑編程
(4)主軸轉(zhuǎn)速設(shè)置(S)車床主軸的轉(zhuǎn)速(r/min)為:
式中υ為圓周切削速度,單位缺省為m/min、D為工件的外徑,單位為mm。
例如,工件的外徑為200mm,要求的切削速度為300m/min,經(jīng)計算可得
因此主軸轉(zhuǎn)速應(yīng)為478r/min,表示為S478。(5)主軸速度控制指令
數(shù)控車削加工時,按需要可以設(shè)置恒切削速度(例如,為保證車削后工件的表面粗糙度一致,應(yīng)設(shè)置恒切削速度),車削過程中數(shù)控系統(tǒng)根據(jù)車削時工件不同位置處的直徑計算主軸的轉(zhuǎn)速。
恒切削速度設(shè)置方法如下:G96 S ; 其中S后面數(shù)字的單位為r/min。
設(shè)置恒切削速度后,如果不需要時可以取消,其方式如下:G97 S ; 其中S后面數(shù)字的單位為r/min。
在設(shè)置恒切削速度后,由于主軸的轉(zhuǎn)速在工件不同截面上是變化的,為防止主軸轉(zhuǎn)速過高而發(fā)生危險,在設(shè)置恒切削速度前,可以將主軸最高轉(zhuǎn)速設(shè)置在某一個最高值。切削過程中當(dāng)執(zhí)行恒切削速度時,主軸最高轉(zhuǎn)速將被限制在這個最高值。設(shè)置方法如下:G50 S ; 其中S的單位為r/min。
圖6 主軸速度控制
例如:在刀具T01切削外形時用G96設(shè)置恒切削速度為200m/min,而在鉆頭T02鉆中心孔時用G97取消恒切削速度,并設(shè)置主軸轉(zhuǎn)速為1100r/min。這兩部分的程序頭如下:
G50 S2500 T0101 M08; /G50限定最高主軸轉(zhuǎn)速為2500r/min;
G96 S200 M03; / G96設(shè)置恒切削速度為200m/min,主軸順時針轉(zhuǎn)動 G00 X48.0 Z3.0; / 快速走到點(diǎn)(48.0,3.0)G01 Z-27.1 F0.3; /車削外形 G00 Ul.0 Z3.0; /快速退回 T0202; /調(diào)02號刀具
G97 Sll00 M03; /G97取消恒切削速度,設(shè)置主軸轉(zhuǎn)速為ll00r/min G00 X0.0 Z5.0 M08; /快速走到點(diǎn)(0,5.0),冷卻液打開 G01 Z-5.0 F0.12; /鉆中心孔(6)進(jìn)給率和進(jìn)給速度設(shè)置指令
在數(shù)控車削中有兩種切削進(jìn)給模式設(shè)置方法,即進(jìn)給率(每轉(zhuǎn)進(jìn)給模式)和進(jìn)給速度(每分鐘進(jìn)給模式)。
1)進(jìn)給率,單位為mm/r,其指令為: G99; / 進(jìn)給率轉(zhuǎn)換指令,G01 X Z F ; / F的單位為mm/r 2)進(jìn)給速度,單位為mm/min,其指令為: G98; / 進(jìn)給速度轉(zhuǎn)換指令
G01 X Z F ; / F的單位為mm/min
圖7 進(jìn)給率和進(jìn)給速度
a:G99 G01 Z-27.1 F0.3;b:G98 G01 Z-10.0 F80;表示進(jìn)給率為0.3mm/r 表示進(jìn)給速度為80mm/min CNC系統(tǒng)缺省進(jìn)給模式是進(jìn)給率,即每轉(zhuǎn)進(jìn)給模式。(7)工件原點(diǎn)設(shè)置
工件坐標(biāo)系的原點(diǎn)有兩種設(shè)置方法。
1)用G50指令進(jìn)行工件原點(diǎn)設(shè)置,分以下兩種設(shè)置情況:
圖8 工件原點(diǎn)設(shè)置 ①坐標(biāo)原點(diǎn)設(shè)置在卡盤端面
如圖8a所示,這種情況下z坐標(biāo)是正值。工件原點(diǎn)設(shè)置在卡盤端面:
G50 X85.Z210.;/* 將刀尖當(dāng)前位置的坐標(biāo)值定為工件坐標(biāo)系中的一點(diǎn)(85.,210.)。②坐標(biāo)原點(diǎn)設(shè)置在零件右端面
如圖8b所示,這種情況下Z坐標(biāo)值是負(fù)值。工件原點(diǎn)設(shè)置在工件右端面:G50 X85.0 Z90.0; 則刀尖當(dāng)前位置即為工件坐標(biāo)系原點(diǎn)。(8)端面及外圓車削加工
端面及外圓的車削加工要用到插補(bǔ)指令G01。
為正確地編寫數(shù)控程序,應(yīng)在編寫程序前根據(jù)工件的情況選擇工件原點(diǎn)。確定好工件原點(diǎn)后,還必須確定刀具的起始點(diǎn)。
編程時還應(yīng)考慮車削外圓的始點(diǎn)和端面車削的始點(diǎn),這兩點(diǎn)的確定應(yīng)結(jié)合考慮工件的毛坯情況。如果毛坯余量較大,應(yīng)進(jìn)行多次粗車,最后進(jìn)行一次精車,因而每次的車削始點(diǎn)都不相同。
圖9 確定車削原點(diǎn)
a)工件原點(diǎn)在左端面時 b)工件原點(diǎn)在右端面時 1)工件原點(diǎn)在左端面 o0001 /* 程序編號o0001 N0 G50 X85.0 Z210.0; /* 設(shè)置工件原點(diǎn)在左端面 N1 G30 U0 W0; /* 返回第二參考點(diǎn)
N2 G50 S1500 T0101 M08; /* 限制最高主軸轉(zhuǎn)速為1500r/min,調(diào)01號刀具,M08為打開冷卻液
N3 G96 S200 M03; /* 指定恒切削速度為200m/min N4 G00 X40.4 Z153.0; /* 快速走到外圓粗車始點(diǎn) N5 G01 Z40.2 F0.3; /* 以進(jìn)給率0.3mm/r車削外圓 N6 X60.4; /* 臺階車削
N7 Z20.0; /*φ60.4mm處長度為20.0mm的一段外圓 N8 G00 X62.0 Z150.2; /* 刀具快速退到點(diǎn)(62.0,150.2)N9 X41.0; /*刀具快速走到點(diǎn)(41.0,150.2)N10 G01 X-1.6; /* 車削右端面
N1l G00 Zl52.0; /* 刀具快速退到點(diǎn)(-1.6,152.0)N12 G30 U0 W0; /* 直接回第二參考點(diǎn)以進(jìn)行換刀 N13(Finishing); /*精車開始,括號為程序說明
N14 G50 S1500 T0202; /*限制最高主軸轉(zhuǎn)速為1500r/min,調(diào)02號刀具 N15 G96 S250; /* 指定恒切削速度為250m/min N16 G00 X40.0 Z153.0 ;/*快速走到外圓精車始點(diǎn)(40.0,153)N17 G42 G01 Z151.0 F0.15;/*調(diào)刀尖半徑補(bǔ)償,右偏 N18 Z40.0; /*φ40.4mm一段外圓的精車 N19 X60.0; /*臺階精車
N20 Z20.0; /*φ60.0mm處長度為20.0mm外圓的精車 N21 G40 G00 X62.0 Z150.0; /*取消刀補(bǔ) N22 X41.0; /*刀具快速走到點(diǎn)(41.0,150.0)N23 G41 G01 X40.0; /*調(diào)刀尖半徑補(bǔ)償,左偏 N24 G01 X-1.6; /*精車右端面
N25 G40 G00 Zl52.0 M09; /*取消刀補(bǔ),切削液關(guān)
N26 G30 U0 W0 M05; /*返回第二參考點(diǎn),主軸停止 N27 M30; /*程序結(jié)束 2)工件原點(diǎn)在右端面:工件原點(diǎn)設(shè)置在右端面與設(shè)置在左端面的區(qū)別僅在于Z坐標(biāo)為負(fù)值,程序編寫過程完全相同。O0002 ; /* 程序編號
N0 G50 X85.0 Z90.0 /* 設(shè)置工件原點(diǎn)在右端面 N2 G30 U0 W0; /* 返回第二參考點(diǎn)
N4 G50 S1500 T0101 M08; /* 限制最高主軸轉(zhuǎn)速 N6 G96 S200 M03; /* 指定恒切削速度為 200m/min,主軸逆時針旋轉(zhuǎn)
N8 G00 X30.4 Z3.0; /*快速走到點(diǎn)(30.4,3.0)N10 G01 W-33.0 F0.3; /*以進(jìn)給率0.3mm/r粗車φ30.4處外圓 N12 U30.0 W-50.0; /*粗車錐面
N14 W-10.0; /*粗車φ60.4mm處長度為10的一段外圓 N16 G00 Ul.6 W90.2;/*刀具快速走到點(diǎn)(62.0,0.2)N18 U-31.0; /*刀具快速走到點(diǎn)(3l,0.2)N20 G01 U-32.6; /*粗車端面
N22 G00 W2.0; /*刀具快速走到點(diǎn)(-1.6,2)N24 G30 U0 W0; /*返回第二參考點(diǎn) N26(Finishing); /*精車開始
N28 G50 S1500 T0202;/*設(shè)置主軸最高轉(zhuǎn)速1500r/min,調(diào)2號刀具 N30 G96 S250; /* 指定恒切削速度為250m/min N32 G00 X30.0 Z3.0;/*刀具快速走到精車始點(diǎn)(30.0,3.0)N34 G42 G01 W-2.0 F0.15;/*調(diào)刀尖半徑補(bǔ)償,右偏 N36 W-31.0; /*精車ф30.4mm處外圓 N38 U30.0 W-50.0; /*精車錐面
N40 W-10.0; /*精車ф60.0mm處外圓
N42 G40 G00 U2.0 W90.0; /*取消刀補(bǔ),刀具快速走到點(diǎn)(62,0.0)N44 U-31.0; /*刀具快速走到點(diǎn)(31,0.0)N46 G41 G01 U-1.0; /*調(diào)刀尖半徑補(bǔ)償,左偏
N48 G01 U-32.6; /*精車端面
N50 G40 G00 W2.0 M09; /*取消刀補(bǔ),刀具快速走到點(diǎn)(1.6,2.0)N52 G30 U0 W0 M30; /*返回參考點(diǎn),程序結(jié)束 實(shí)例:
如圖10所示零件
圖10 數(shù)控車削綜合編程實(shí)例
N0050 G01 X32 Z0;N0110 G02 X16 Z-15 R2;N0060 G01 X-0.5;N0120 G01 X20;
N0070 G00 Z1;N0130 G01 Z35;N0080 G00 X10;N0140 X26;N0090 G01 X12 Z1;N0150 Z50;N0100 G01 X12 Z1;N0160 X32;為1500r/min,調(diào)1號刀具,M08為打開冷卻液在這種情況下,如果設(shè)置指令寫成: G50 X0 Z0;
G02、G03指令表示刀具以F進(jìn)給速度從圓弧起點(diǎn)向圓弧終點(diǎn)進(jìn)行圓弧插補(bǔ)。刀具以一定的進(jìn)給速度從當(dāng)前所在位置沿直線移動到指令給出的目標(biāo)位置。
2.循環(huán)加工指令
當(dāng)車削加工余量較大,需要多次進(jìn)刀切削加工時,可采用循環(huán)指令編寫加工程序,這樣可減少程序段的數(shù)量,縮短編程時間和提高數(shù)控機(jī)床工作效率。根據(jù)刀具切削加工的循環(huán)路線不同,循環(huán)指令可分為單一固定循環(huán)指令和多重復(fù)合循環(huán)指令。(1)單一固定循環(huán)指令
對于加工幾何形狀簡單、刀具走刀路線單一的工件,可采用固定循環(huán)指令編程,即只需用一條指令、一個程序段完成刀具的多步動作。固定循環(huán)指令中刀具的運(yùn)動分四步:進(jìn)刀、切削、退刀與返回。
1)外圓切削循環(huán)指令(G90)
指令格式 : G90 X(U)_ Z(W)_ R_ F_ 指令功能: 實(shí)現(xiàn)外圓切削循環(huán)和錐面切削循環(huán)。
刀具從循環(huán)起點(diǎn)按圖11與圖12所示走刀路線,最后返回到循環(huán)起點(diǎn),圖中虛線表示按R快速移動,實(shí)線表示按F指定的工件進(jìn)給速度移動。
圖11 外圓切削循環(huán)
圖12 錐面切削循環(huán)
指令說明: ① X、Z 表示切削終點(diǎn)坐標(biāo)值;
② U、W 表示切削終點(diǎn)相對循環(huán)起點(diǎn)的坐標(biāo)分量;
③ R 表示切削始點(diǎn)與切削終點(diǎn)在X軸方向的坐標(biāo)增量(半徑值),外圓切削循環(huán)時R為零,可省略;
④F表示進(jìn)給速度。例題 如圖13所示,運(yùn)用外圓切削循環(huán)指令編程。
G90 X40 Z20 F30
A-B-C-D-A X30
A-E-F-D-A X20
A-G-H-D-A
圖13 外圓切削循環(huán)例題
例題 如圖14所示,運(yùn)用錐面切削循環(huán)指令編程。
G90 X40 Z20 R-5 F30 A-B-C-D-A X30
A-E-F-D-A X20
A-G-H-D-A
圖14 錐面切削循環(huán)例題
2)端面切削循環(huán)指令(G94)
指令格式: G94 X(U)_ Z(W)_ R_ F_ 指令功能: 實(shí)現(xiàn)端面切削循環(huán)和帶錐度的端面切削循環(huán)。
刀具從循環(huán)起點(diǎn),按圖15與圖16所示走刀路線,最后返回到循環(huán)起點(diǎn),圖中虛線表示按R快速移動,實(shí)線按F指定的進(jìn)給速度移動。
圖15 端面切削循環(huán) 圖16 帶錐度的端面切削循環(huán)
① X、Z表示端平面切削終點(diǎn)坐標(biāo)值;
② U、W表示端面切削終點(diǎn)相對循環(huán)起點(diǎn)的坐標(biāo)分量;
③ R 表示端面切削始點(diǎn)至切削終點(diǎn)位移在Z軸方向的坐標(biāo)增量,端面切削循環(huán)時R為零,可省略;
④ F表示進(jìn)給速度。
例題: 如圖17所示,運(yùn)用端面切削循環(huán)指令編程。
G94 X20 Z16 F30
A-B-C-D-A Z13
A-E-F-D-A Z10
A-G-H-D-A
圖17 端面切削循環(huán)例題 圖18 帶錐度的端面切削循環(huán)例題
例題: 如圖18所示,運(yùn)用帶錐度端面切削循環(huán)指令編程。
G94 X20 Z34 R-4 F30
A-B-C-D-A Z32
A-E-F-D-A Z29
A-G-H-D-A(2)多重復(fù)合循環(huán)指令(G70——G76)運(yùn)用這組G代碼,可以加工形狀較復(fù)雜的零件,編程時只須指定精加工路線、徑向軸向精車留量和粗加工背吃刀量,系統(tǒng)會自動計算出粗加工路線和加工次數(shù),因此編程效率更高。
在這組指令中,G71、G72、G73是粗車加工指令,G70是G71、G72、G73粗加工后的精加工指令,G74 是深孔鉆削固定循環(huán)指令,G75 是切槽固定循環(huán)指令,G76是螺紋加工固定循環(huán)指令。
1)外圓粗加工復(fù)合循環(huán)(G71)指令格式 : G71 UΔd Re G71 Pns Qnf UΔu WΔw Ff Ss Tt
指令功能: 切除棒料毛坯大部分加工余量,切削是沿平行Z軸方向進(jìn)行,如圖19所示。A為循環(huán)起點(diǎn),A-A'-B為精加工路線。
圖19 外圓粗加工復(fù)合循環(huán) 圖20 端面粗加工復(fù)合循環(huán) 指令說明:①Δd表示每次切削深度(半徑值),無正負(fù)號; ② e表示退刀量(半徑值),無正負(fù)號;
③ ns表示精加工路線第一個程序段的順序號; ④ nf表示精加工路線最后一個程序段的順序號;
⑤ Δu表示X方向的精加工余量,直徑值;
例題 :如圖21所示,運(yùn)用外圓粗加工循環(huán)指令編程。
圖21 外圓粗加工復(fù)合循環(huán)例題 N010 G50 X150 Z100 N020 G00 X41 Z0 N030 G71 U2 R1 N040 G71 P50 Q120 U0.5 W0.2 F100 N050 G01 X0 Z0 N060 G03 X11 W-5.5 R5.5 N070 G01 W-10 N080 X17 W-10 N090 W-15 N100 G02 X29 W-7.348 R7.5 N110 G01 W-12.652 N120 X41 N130 G70 P50 Q120 F30
2)端面粗加工復(fù)合循環(huán)(G72)指令格式: G72 WΔd Re
G72 Pns Qnf UΔu WΔw Ff Ss Tt
指令功能: 除切削是沿平行X軸方向進(jìn)行外,該指令功能與G71相同,如圖20所示。指令說明 :
Δd、e、ns、nf、Δu、Δw的含義與G71相同。例題:如圖22,運(yùn)用端面粗加工循環(huán)指令編程。
圖22 端面粗加工復(fù)合循環(huán)例題 圖23 固定形狀切削復(fù)合循環(huán) N010 G50 X150 Z100 N020 G00 X41 Z1 N030 G72 W1 R1 N040 G72 P50 Q80 U0.1 W0.2 F100 N050 G00 X41 Z-31 N060 G01 X20 Z-20 N070 Z-2 N080 X14 Z1 N090 G70 P50 Q80 F30 3)固定形狀切削復(fù)合循環(huán)(G73)指令格式: G73 UΔi WΔk Rd G73 Pns Qnf UΔu WΔw Ff Ss Tt
指令功能:適合加工鑄造、鍛造成形的一類工件,見圖23所示。指令說明: Δi 表示X軸向總退刀量(半徑值); ΔK 表示Z軸向總退刀量; d 表示循環(huán)次數(shù);
ns 表示精加工路線第一個程序段的順序號; nf 表示精加工路線最后一個程序段的順序號; Δu 表示X方向的精加工余量(直徑值); Δw 表示Z方向的精加工余量。
①固定形狀切削復(fù)合循環(huán)指令的特點(diǎn):
a.刀具軌跡平行于工件的輪廓,故適合加工鑄造和鍛造成形的坯料;b.背吃刀量分別通過X軸方向總退刀量Δi和Z軸方向總退刀量ΔK除以循環(huán)次數(shù)d求得;c.總退刀量Δi與ΔK值的設(shè)定與工件的切削深度有關(guān)。
②使用固定形狀切削復(fù)合循環(huán)指令,首先要確定換刀點(diǎn)、循環(huán)點(diǎn)A、切削始點(diǎn)A’和切削終點(diǎn)B的坐標(biāo)位置。分析上圖,A點(diǎn)為循環(huán)點(diǎn),A’→B是工件的輪廓線,A→A’→B為刀具的精加工路線,粗加工時刀具從A點(diǎn)后退至C點(diǎn),后退距離分別為Δi+Δu /2,Δk+Δw,這樣粗加工循環(huán)之后自動留出精加工余量Δu /
2、Δw。
③順序號ns至nf之間的程序段描述刀具切削加工的路線。例題: 如圖14所示,運(yùn)用固定形狀切削復(fù)合循環(huán)指令編程。
圖24 固定形狀切削復(fù)合循環(huán)例題 圖25 復(fù)合固定循環(huán)舉例
N010 G50 X100 Z100 N020 G00 X50 Z10 N030 G73 U18 W5 R10 N040 G73 P50 Q100 U0.5 W0.5 F100 N050 G01 X0 Z1 N060 G03 X12 W-6 R6 N070 G01 W-10 N080 X20 W-15 N090 W-13 N100 G02 X34 W-7 R7 N110 G70 P50 Q100 F30 4)精車復(fù)合循環(huán)(G70)指令格式: G70 Pns Qnf
指令功能:用G71、G72、G73指令粗加工完畢后,可用精加工循環(huán)指令,使刀具進(jìn)行A-A`-B的精加工,(如圖24)
指令說明:
ns表示指定精加工路線第一個程序段的順序號; nf表示指定精加工路線最后一個程序段的順序號;
G70~G73循環(huán)指令調(diào)用N(ns)至N(nf)之間程序段,其中程序段中不能調(diào)用子程序。5)復(fù)合固定循環(huán)舉例(G71與G70編程)
加工圖25所示零件,其毛坯為棒料。工藝設(shè)計參數(shù)為:粗加工時切深為7mm,進(jìn)給速度0.3mm/r,主軸轉(zhuǎn)速500r/min;X向(直徑上)精加工余量為4 mm,z向精加工余量為2mm,進(jìn)給速度為0.15mm/r,主軸轉(zhuǎn)速800mm/min。程序設(shè)計如下: N01 G50 X200.0 Z220.0;N02 G00 X160.0 Z180.0 M03 S800;N03 G71 P04 Q10 U4.0 W2.0 D7.0 F0.3 S500;N04 G00 X40.0 S800;N05 G01 W-40.0 F0.15;N06 X60.0 W-30.0;N07 W-20.0;N08 X100.0 W-10.0;N09 W-20.0;N10 X140.0 W-20.0;N11 G70 P04 Q10;N12 G00 X200.0 Z220.0;N13 M05;N14 M30;3.螺紋加工自動循環(huán)指令
(1)單行程螺紋切削指令G32(G33,G34)指令格式 : G32 X(U)_ Z(W)_ F_
指令功能:切削加工圓柱螺紋、圓錐螺紋和平面螺紋。指令說明:
格式中的X(U)、Z(W)為螺紋中點(diǎn)坐標(biāo),F(xiàn)為以螺紋長度L給出的每轉(zhuǎn)進(jìn)給率。L表示螺紋導(dǎo)程,對于圓錐螺紋(圖26),其斜角α在45°以下時,螺紋導(dǎo)程以Z軸方向指定;斜角α在45°~90°時,以X軸方向指定。
①圓柱螺紋切削加工時,X、U值可以省略,格式為: G32 Z(W)_ F _ ; ②端面螺紋切削加工時,Z、W值可以省略,格式為: G32 X(U)_ F_;
③螺紋切削應(yīng)注意在兩端設(shè)置足夠的升速進(jìn)刀段δ1和降速退刀段δ2,即在程序設(shè)計時,應(yīng)將車刀的切入、切出、返回均應(yīng)編入程序中。
圖26 螺紋切削 圖27 螺紋切削應(yīng)用 螺紋切削例題: 如圖27所示,走刀路線為A-B-C-D-A,切削圓錐螺紋,螺紋導(dǎo)程為4mm , δ1 = 3mm,δ2 = 2mm,每次背吃刀量為1mm,切削深度為2mm。G00 X16 G32 X44 W-45 F4 G00 X50 W45 X14 G32 X42 W-45 F4 G00 X50 W45(2)螺紋切削循環(huán)指令(G92)
指令格式 : G92 X(U)_ Z(W)_ R_ F_ 指令功能: 切削圓柱螺紋和錐螺紋,刀具從循環(huán)起點(diǎn),按圖28與圖29所示走刀路線,最后返回到循環(huán)起點(diǎn),圖中虛線表示按R快速移動,實(shí)線按F指定的進(jìn)給速度移動。
圖28 切削圓柱螺紋 圖29 切削錐螺紋 指令說明:
①X、Z表示螺紋終點(diǎn)坐標(biāo)值;②U、W表示螺紋終點(diǎn)相對循環(huán)起點(diǎn)的坐標(biāo)分量;
③R表示錐螺紋始點(diǎn)與終點(diǎn)在X軸方向的坐標(biāo)增量(半徑值),圓柱螺紋切削循環(huán)時R為零,可省略;
④F表示螺紋導(dǎo)程。
例題: 如圖30所示,運(yùn)用圓柱螺紋切削循環(huán)指令編程。
圖30 切削圓柱螺紋例題 圖31 切削錐螺紋例題 G50 X100 Z50 G97 S300 T0101 M03 G00 X35 Z3 G92 X29.2 Z-21 F1.5 X28.6 X28.2 X28.04 G00 X100 Z50 T0000 M05 M02
例題 : 如圖31所示,運(yùn)用錐螺紋切削循環(huán)指令編程。G50 X100 Z50 G97 S300 T0101 M03 G00 X80 Z2 G92 X49.6 Z-48 R-5 F2 X48.7 X48.1 X47.5 X47.1 X47 G00 X100 Z50 T0000 M05 M02
(3)螺紋切削復(fù)合循環(huán)(G76)
指令格式 : G76 Pm r a QΔdmin Rd G76 X(U)_ Z(W)_Ri Pk QΔd Ff
指令功能:該螺紋切削循環(huán)的工藝性比較合理,編程效率較高,螺紋切削循環(huán)路線及進(jìn)刀方法如圖32所示。
圖32 螺紋切削復(fù)合循環(huán)路線及進(jìn)刀法 指令說明:
②r表示斜向退刀量單位數(shù),或螺紋尾端倒角值,在0.0f—9.9f之間,以0.1f為一單位,(即為0.1的整數(shù)倍),用00—99兩位數(shù)字指定,(其中f為螺紋導(dǎo)程); ③a表示刀尖角度;從80°、60°、55°、30°、29°、0°六個角度選擇;
④Δdmin:表示最小切削深度,當(dāng)計算深度小于Δdmin,則取Δdmin作為切削深度; ⑤d:表示精加工余量,用半徑編程指定;Δd :表示第一次粗切深(半徑值); ⑥X、Z:表示螺紋終點(diǎn)的坐標(biāo)值; ⑦U:表示增量坐標(biāo)值; ⑧W:表示增量坐標(biāo)值;
⑨I:表示錐螺紋的半徑差,若I=0,則為直螺紋; ⑩k:表示螺紋高度(X方向半徑值); G76螺紋車削實(shí)例
圖33所示為零件軸上 的一段直螺紋,螺紋高度為3.68,螺距為6,螺紋尾端倒角為1.1L,刀尖角為60°,第一次車削深度1.8,最小車削深度0.1,精車余量0.2,精車削次數(shù)1次,螺紋車削前先精車削外圓柱面,其數(shù)控程序如下:
圖33 螺紋切削多次循環(huán)G76指令編程實(shí)例 O0028 /程序編號
N0 G50 X80.0 Z130.0;/設(shè)置工件原點(diǎn)在左端面 N2 G30 U0 W0;/返回第二參考點(diǎn)
N4 G96 S200 T0101 M08 M03;/指定切削速度為200m/min,調(diào)外圓車刀 N6 G00 X68.0 Z132.0;/快速走到外圓車削起點(diǎn)(68.0,132.0)N7 G42 G01 Z130.0 F0.2;N8 Z29.0 F0.2;/外圓車削 N9 G40 G00 U10.0;N10 G30 U0 W0;N12 G97 S800 T0202 M08 M03;/取消恒切削速度,指定主軸轉(zhuǎn)速800r/min,調(diào)螺紋車刀 N14 G00 X80.0 Z130.0;/快速走到螺紋車削循環(huán)始點(diǎn)(80.0,130.0)N16 G76 P011160 Q0.1 R0.2;/循環(huán)車削螺紋 N18 G76 X60.64 Z25.0 P3.68 Q1.8 F6.0;N20 G30 U0 W0 M09;N22 M30;①m表示精車重復(fù)次數(shù),從1—99;