第六講子窗口控制_第1頁(yè)
第六講子窗口控制_第2頁(yè)
第六講子窗口控制_第3頁(yè)
第六講子窗口控制_第4頁(yè)
第六講子窗口控制_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第六講:子窗口控制控制(控件)是一種特殊的子窗口,也屬于某個(gè)窗口類,這個(gè)窗口類或者是已經(jīng)預(yù)先定義好的,或者是由擁有者(開發(fā)者)定義。窗口類以及對(duì)應(yīng)的窗口過(guò)程定義了控制的屬性,包括其外觀、行為、目的等。應(yīng)用程序既可以通過(guò)在調(diào)用CreateWindowEx時(shí)指定窗口類的類名來(lái)單獨(dú)創(chuàng)建一個(gè)控制,也可以在對(duì)話框模板中指定一些控制,然后由系統(tǒng)為其創(chuàng)建。預(yù)定義控制:操作系統(tǒng)為一些控制提供了已經(jīng)定義好的窗口類及對(duì)應(yīng)的窗口過(guò)程。屬于這些窗口類的控制稱為預(yù)定義控制。類名說(shuō)明BUTTON按鈕COMBOBOX組合框EDIT編輯框LISTBOX列表框RichEditRichEdit 1.0RICHEDIT_CLASS

2、RichEdit 2.0或3.0SCROLLBAR滾動(dòng)條STATIC靜態(tài)控件表一、系統(tǒng)預(yù)定義的控制每個(gè)預(yù)定義控制窗口類都有一組相關(guān)的控制樣式,使它們?cè)趹?yīng)用程序中展現(xiàn)出不同的外觀和行為,例如BUTTON窗口類支持push buttons, radio buttons, check boxes, group boxes等樣式;每個(gè)預(yù)定義控制窗口類同時(shí)還有一組相關(guān)的通知和控制消息,應(yīng)用程序通過(guò)這些消息確定用戶何時(shí)及怎樣對(duì)這些控制進(jìn)行輸入。通知消息:當(dāng)系統(tǒng)為對(duì)話框創(chuàng)建了控制時(shí),這些控制就成為對(duì)話框的子窗口;當(dāng)應(yīng)用程序創(chuàng)建控制時(shí),這些控制就成為由應(yīng)用程序指定的某個(gè)窗口的子窗口。這些子窗口控制接收到用戶的

3、輸入時(shí),會(huì)向其父窗口發(fā)送通知消息。應(yīng)用程序通過(guò)這些消息來(lái)確定用戶想讓它們完成什么工作。例如,當(dāng)用戶點(diǎn)擊push button時(shí),按鈕會(huì)向父窗口發(fā)送BN_CLICKED消息。這些通知消息以WM_COMMAND形式出現(xiàn),消息中包含子窗口控制標(biāo)識(shí)和通知碼。參數(shù)說(shuō)明LOWORD(wParam)子窗口ID號(hào)HIWORD(wParam)通知碼,告訴父窗口到底發(fā)生了什么變化,通知碼和控件的類型以及事件相關(guān),系統(tǒng)對(duì)每一類控件的每個(gè)事件的通知碼都有明確的定義,用一個(gè)系統(tǒng)定義的整常量來(lái)表示LParam子窗口句柄表二、WM_COMMAND通知消息子窗口控制標(biāo)識(shí)是一個(gè)由應(yīng)用程序指定的唯一ID,用以代表這個(gè)控制,這個(gè)標(biāo)

4、識(shí)既可以在CreateWindowEx的hMenu參數(shù)中指定,也可以在DLGITEMTEMPLATEEX結(jié)構(gòu)的id成元中指定。由于控制本身并不知道其自身的標(biāo)識(shí),在向父窗口發(fā)送通知消息之前,必須查詢其自身標(biāo)識(shí)。以下是經(jīng)常用到的與子窗口標(biāo)識(shí)相關(guān)的API:知道子窗口ID號(hào)和父窗口句柄,找子窗口句柄:hwndChild=GetDlgItem(hwndParent,id);知道子窗句柄, 找子窗口ID:id=GetWindowLong(hwndChild,GWL_ID);id=GetDlgCtrlID(hwndChild);知道子窗句柄, 找父窗口句柄:hwndParent =GetParent(hwn

5、dChild);控制消息:應(yīng)用程序可以利用SendMessage向子控制發(fā)送消息,來(lái)指導(dǎo)子窗口控制完成特定的任務(wù)。每種控制消息的目的和功能是與特定控制的窗口類相關(guān)的,并且由窗口類對(duì)應(yīng)的窗口過(guò)程定義。控制消息既可以是預(yù)先定義好的如WM_GETTEXT和 WM_GETDLGCODE等,也可以由應(yīng)用程序自定義。通常情況下,對(duì)于由應(yīng)用程序創(chuàng)建的控制,窗口過(guò)程應(yīng)當(dāng)處理如下消息:消息說(shuō)明WM_GETDLGCODEProcess if the control uses the ENTER, ESC, TAB, or arrow keys. The IsDialogMessage function sends

6、 this message to controls in a dialog box to determine whether to process the keys or pass them to the control.WM_GETFONTProcess if the WM_SETFONT message is also processed.WM_GETTEXTProcess if the control text is not the same as the title specified by the CreateWindowEx function.WM_GETTEXTLENGTH同上W

7、M_SETTEXT同上WM_SETFOCUSProcess if the control displays a caret, a focus rectangle, or another item to indicate that it has the input focus.WM_KILLFOCUS同上WM_SETFONTProcess if the control displays text. The system sends this message when creating a dialog box that has the DS_SETFONT style.對(duì)于由應(yīng)用程序自定義的控制

8、消息,必須通過(guò)調(diào)用SendMessage或SendDlgItemMessage來(lái)顯式發(fā)送給控制。每條消息的標(biāo)識(shí)ID必須唯一并且不能與已知的其它窗口消息ID相沖突,自定義消息一般以WM_USER開始加上某個(gè)數(shù)值。自定義控制:應(yīng)用程序可以創(chuàng)建自定義控制,以實(shí)現(xiàn)預(yù)定義控制不支持的功能,Windows提供三種創(chuàng)建自定義控制的方式。1、 利用所有者繪制控制按鈕、列表框和組合框都可以采用所有者繪制樣式,以使得它們?cè)趯⒁焕L制時(shí),會(huì)把消息發(fā)送給父窗口,應(yīng)用程序接收到這些消息時(shí),可以進(jìn)行自定義繪制,以改變這些控制的外觀。例如,在列表框中每個(gè)元素之前都顯示一個(gè)小位圖。2、 窗口子類化子類化一個(gè)預(yù)定義控制是創(chuàng)建自

9、定義控制的另一種方式。子類化窗口過(guò)程可以通過(guò)處理控制的某些特定消息來(lái)改變其行為,而其它未處理的消息仍然轉(zhuǎn)發(fā)給原來(lái)的窗口過(guò)程。例如,應(yīng)用程序可以處理編輯框的WM_PAINT消息來(lái)顯示不同的字體和字號(hào)。3、 應(yīng)用程序自定義窗口類自定義控制窗口類與普通窗口類一樣,需要指定類名及實(shí)現(xiàn)對(duì)應(yīng)的窗口過(guò)程,然后可以在CreateWindowEx的參數(shù)中指定類名,或者在對(duì)話框模板中指定類名。對(duì)于這種自定義控制,其對(duì)應(yīng)的窗口過(guò)程最少需要對(duì)其繪制,如果想接收輸入,還需要處理鼠標(biāo)和鍵盤消息,并且向父窗口發(fā)送通知消息。按鈕:按鈕的樣式包括BS_CHECKBOX、BS_DEFPUSHBUTTON、BS_GROUPBOX、

10、BS_PUSHBUTTON、BS_RADIOBUTTON、BS_AUTOCHECKBOX、BS_3STATE等。按鈕接受用戶輸入或?qū)⒁M(jìn)行繪制時(shí)向父窗口發(fā)送BN_CLICKED、BN_PAINT、BN_DISABLE、BN_PUSHED、BN_UNPUSHED、BN_DBLCLK、BN_SETFOCUS、BN_KILLFOCUS 、WM_CTLCOLORBTN等消息。父窗口向按鈕發(fā)送BM_GETCHECK、BM_SETCHECK、BM_GETSTATE、BM_SETSTATE、BM_SETSTYLE、BM_CLICK、BM_GETIMAGE、BM_SETIMAGE等消息來(lái)改變按鈕的外觀或行為。

11、所有者繪制按鈕:使用BS_OWNERDRAW風(fēng)格創(chuàng)建的按鈕,在需要重新繪制其窗口時(shí)會(huì)向它的父窗口發(fā)送一個(gè)WM_DRAWITEM消息,如:當(dāng)按鈕被創(chuàng)建時(shí);當(dāng)按鈕被按下或者被釋放時(shí);當(dāng)按鈕被得到或者失去輸入焦點(diǎn)時(shí);當(dāng)按鈕的客戶區(qū)有無(wú)效區(qū)域時(shí)。WM_DRAWITEM消息的第二個(gè)參數(shù)lParam是一個(gè)指向系統(tǒng)定義的DRAWITEMSTRUCT結(jié)構(gòu)的指針,該結(jié)構(gòu)包含的部分成員如下:typedef struct tagDRAWITEMSTRUCT UINT CtlID; /控件的ID號(hào) UINT itemState; /當(dāng)前窗口的視覺狀態(tài) HDC hDC; /控件窗口的設(shè)備環(huán)境描述表句柄 RECT rcI

12、tem; /控件窗口的繪圖區(qū)域 DRAWITEMSTRUCT;所有者繪制按鈕舉例:The parent window of an owner-drawn button typically responds to at least three messages for the button: WM_INITDIALOG WM_COMMAND WM_DRAWITEM When you must paint an owner-drawn button, the system sends the parent window a WM_DRAWITEM message whose lParam para

13、meter is a pointer to a DRAWITEMSTRUCT structure. Use this structure with all owner-drawn controls to provide the application with the information it requires to paint the control. The itemAction and itemState members of the DRAWITEMSTRUCT structure define how to paint an owner-drawn button. The fol

14、lowing example shows how to process WM_INITDIALOG, WM_DRAWITEM, and WM_COMMAND messages for owner-drawn buttons. This example demonstrates how to draw one of two bitmaps for a control, depending on whether the control is selected. You would typically use the wParam parameter of the WM_DRAWITEM messa

15、ge to identify the control; in this example, only one control is assumed. BOOL CALLBACK OwnDrawProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) HDC hdcMem; LPDRAWITEMSTRUCT lpdis; switch (message) case WM_INITDIALOG: / hinst, hbm1 and hbm2 are defined globally. hbm1 = LoadBitmap(HANDLE) h

16、inst, OwnBit1); hbm2 = LoadBitmap(HANDLE) hinst, OwnBit2); return TRUE; case WM_DRAWITEM: lpdis = (LPDRAWITEMSTRUCT) lParam; hdcMem = CreateCompatibleDC(lpdis-hDC); if (lpdis-itemState & ODS_SELECTED) / if selected SelectObject(hdcMem, hbm2); else SelectObject(hdcMem, hbm1); / Destination StretchBlt

17、( lpdis-hDC, / destination DC lpdis-rcItem.left, / x upper left lpdis-rcItem.top, / y upper left / The next two lines specify the width and / height. lpdis-rcItem.right - lpdis-rcItem.left, lpdis-rcItem.bottom - lpdis-rcItem.top, hdcMem, / source device context 0, 0, / x and y upper left 32, / sourc

18、e bitmap width 32, / source bitmap height SRCCOPY); / raster operation DeleteDC(hdcMem); return TRUE; case WM_COMMAND: if (wParam = IDOK | wParam = IDCANCEL) EndDialog(hDlg, TRUE); return TRUE; if (HIWORD(wParam) = BN_CLICKED) switch (LOWORD(wParam) case IDC_OWNERDRAW: / application-defined processi

19、ng break; break; case WM_DESTROY: DeleteObject(hbm1); / delete bitmaps DeleteObject(hbm2); break; return FALSE; UNREFERENCED_PARAMETER(lParam); 靜態(tài)類控件:靜態(tài)類控件主要用于顯示靜態(tài)文字串和圖形,該類控件既不鼠標(biāo)和鍵盤輸入,也不向父窗口發(fā)送WM_COMMAND消息。只捕獲WM_NCHITTEST消息,并向下(父窗口)傳遞HTTRANSPARENT值。如果對(duì)其進(jìn)行繪制,需要處理WM_CTLCOLORSTATIC消息。靜態(tài)類控件窗口背景涂色消息WM_CTL

20、COLORSTATIC:每當(dāng)靜態(tài)類控件窗口需要被重畫時(shí),靜態(tài)類控件就向父窗口發(fā)送WM_CTLCOLORSTATIC消息。若在編程時(shí)處理此消息,一定用如下三條語(yǔ)句設(shè)置在靜態(tài)控件窗口輸出文本的前景色和背景色、以及系統(tǒng)用于涂靜態(tài)控件窗口客戶區(qū)的刷子。SetTextColor (HDC) wParam, crPrimi % 3) ; SetBkColor(HDC)wParam,GetSysColor(COLOR_BTNHIGHLIGHT); return (LRESULT) hBrushStatic ;消息參數(shù)wParam: 靜態(tài)類控件窗口的設(shè)備環(huán)境描述表句柄;lParam: 靜態(tài)類控件窗口的窗口句柄

21、。靜態(tài)類控件風(fēng)格包括SS_BLACKRECT、SS_GRAYRECT、SS_WHITERECT、SS_BLACKFRAME、SS_GRAYFRAME SS_WHITEFRAME、SS_CENTER、SS_LEFT、SS_RIGHT等。滾動(dòng)條類控件: 滾動(dòng)條類控件風(fēng)格包括SBS_VERT和SBS_HORZ。當(dāng)對(duì)在父窗口的客戶區(qū)創(chuàng)建的滾動(dòng)條控件進(jìn)行操作時(shí),滾動(dòng)條控件不向父窗口發(fā)送WM_COMMAND消息,而是發(fā)送WM_HSCROLL消息或WM_VSCROLL消息。WM_HSCROLL消息或WM_VSCROLL消息參數(shù):窗口滾動(dòng)條:lParam=0;滾動(dòng)條控件:lparam=滾動(dòng)條控件窗口句柄Ctr

22、lhwnd;wParam參數(shù)的解釋對(duì)窗口滾動(dòng)條和滾動(dòng)條類控件都相同。設(shè)置滾動(dòng)條類控件的范圍和滾動(dòng)框的位置函數(shù)包括:SetScrollRange (hwndScroll, SB_CTL, iMin, iMax, bRedraw) ;SetScrollPos (hwndScroll, SB_CTL, iPos, bRedraw) ;SetScrollInfo (hwndScroll, SB_CTL, &si, bRedraw) ;當(dāng)使用鼠標(biāo)點(diǎn)擊滾動(dòng)條控件時(shí),如果想使?jié)L動(dòng)條控件能獲得輸入焦點(diǎn),必須把窗口風(fēng)格WS_TABSTOP包含在CreateWindow()函數(shù)的窗口風(fēng)格中。滾動(dòng)條控件窗口背景涂色

23、消息WM_CTLCOLORSCROLLBAR:每當(dāng)滾動(dòng)條控件窗口需要被重畫時(shí),滾動(dòng)條控件就向父窗口發(fā)送WM_CTLCOLORSCROLLBAR消息。若在編程時(shí)處理此消息,一定用return語(yǔ)句返回一個(gè)刷子,系統(tǒng)用這個(gè)刷子涂滾動(dòng)條控件窗口。消息參數(shù)wParam: 滾動(dòng)條控件窗口的設(shè)備環(huán)境描述表句柄;lParam: 滾動(dòng)條控件窗口的窗口句柄。窗口子類化技術(shù)(subclassing):當(dāng)應(yīng)用程序創(chuàng)建了一個(gè)窗口,系統(tǒng)為其分配一塊內(nèi)存,用來(lái)存儲(chǔ)特定的窗口信息,包括處理消息的窗口過(guò)程。當(dāng)系統(tǒng)需要向窗口傳遞消息時(shí),會(huì)在這塊內(nèi)存中搜索對(duì)應(yīng)的窗口過(guò)程地址,然后進(jìn)行消息投遞。窗口子類化技術(shù)允許應(yīng)用程序?qū)⒁l(fā)送到

24、特定窗口的消息,提前進(jìn)行解釋或處理,以達(dá)到修改或監(jiān)視窗口行為的目的。例如,可以通過(guò)這一技術(shù)阻止某個(gè)編輯框控件接受特定的字符。窗口子類化用自己定義的窗口過(guò)程函數(shù)去取代控件原有的窗口過(guò)程函數(shù),因此自定義的窗口過(guò)程可以接收屬于控件的全部消息。對(duì)于某個(gè)特定的消息,自定義窗口過(guò)程既可以將其直接傳遞給原來(lái)的窗口過(guò)程,也可以對(duì)消息進(jìn)行修改,然后再將其直接傳遞給原來(lái)的窗口過(guò)程,還可以自己對(duì)消息進(jìn)行處理,而不再繼續(xù)向下傳遞。函數(shù)SetWindowLong(hwnd,GWL_WNDPROC, (LONG) WndProc)可用于為窗口hwnd設(shè)置新的窗口過(guò)程函數(shù)WndProc,其中GWL_WNDPROC是系統(tǒng)定義

25、的整型常數(shù),WNDPROC是系統(tǒng)定義的數(shù)據(jù)類型,用于定義指向窗口過(guò)程函數(shù)的指針,該函數(shù)的返回值是指向窗口hwnd原來(lái)窗口過(guò)程函數(shù)的指針。窗口超類化技術(shù)(superclassing):窗口超類化與窗口子類化相似,都是用一個(gè)新的窗口過(guò)程來(lái)取代原有的窗口過(guò)程,以改變窗口的行為。窗口超類化根據(jù)已有的標(biāo)準(zhǔn)控件的窗口類信息(GetClassInfo),進(jìn)行修改,包括類名、窗口過(guò)程地址、實(shí)例句柄,保留其它部分不變,然后重新注冊(cè)一個(gè)窗口類,并用于創(chuàng)建后續(xù)的子窗口。為了實(shí)現(xiàn)只接受特定字符的多個(gè)編輯框控件,既可以為每個(gè)編輯框進(jìn)行子類化,也可以使用超類化一次性完成。子類化超類化只有少數(shù)窗口需要修改時(shí)才使用此一技術(shù)需

26、要改變同類別的多個(gè)窗口行為時(shí)不需注冊(cè)新類別必須注冊(cè)新的窗口類別在subclassing 之前必須先產(chǎn)生窗口superclassing 之前不需先產(chǎn)生窗口Subclassed 窗口無(wú)法攔截窗口初始化消息(WM_NCCREATE 和WM_CREATE)Superclassed 窗口可以攔截窗口初始化消息(WM_NCCREATE 和WM_CREATE窗口子類化與超類化的區(qū)別滾動(dòng)條舉例:/*- COLORS1.C - Colors Using Scroll Bars (c) Charles Petzold, 1998 -*/#include LRESULT CALLBACK WndProc (HWND

27、, UINT, WPARAM, LPARAM) ;LRESULT CALLBACK ScrollProc (HWND, UINT, WPARAM, LPARAM) ;int idFocus ;WNDPROC OldScroll3 ;int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) static TCHAR szAppName = TEXT (Colors1) ; HWND hwnd ; MSG msg ; WNDCLASS wndclass ; wndc

28、lass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground = CreateSolidBrush

29、 (0) ; wndclass.lpszMenuName = NULL ; wndclass.lpszClassName = szAppName ; if (!RegisterClass (&wndclass) MessageBox (NULL, TEXT (This program requires Windows NT!), szAppName, MB_ICONERROR) ; return 0 ; hwnd = CreateWindow (szAppName, TEXT (Color Scroll), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USED

30、EFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL) ; ShowWindow (hwnd, iCmdShow) ; UpdateWindow (hwnd) ; while (GetMessage (&msg, NULL, 0, 0) TranslateMessage (&msg) ; DispatchMessage (&msg) ; return msg.wParam ;LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM

31、 lParam) static COLORREF crPrim3 = RGB (255, 0, 0), RGB (0, 255, 0), RGB (0, 0, 255) ; static HBRUSH hBrush3, hBrushStatic ; static HWND hwndScroll3, hwndLabel3, hwndValue3, hwndRect ; static int color3, cyChar ; static RECT rcColor ; static TCHAR * szColorLabel = TEXT (Red), TEXT (Green), TEXT (Blu

32、e) ; HINSTANCE hInstance ; int i, cxClient, cyClient ; TCHAR szBuffer10 ; switch (message) case WM_CREATE : hInstance = (HINSTANCE) GetWindowLong (hwnd, GWL_HINSTANCE) ; / Create the white-rectangle window against which the / scroll bars will be positioned. The child window ID is 9. hwndRect = Creat

33、eWindow (TEXT (static), NULL, WS_CHILD | WS_VISIBLE | SS_WHITERECT, 0, 0, 0, 0, hwnd, (HMENU) 9, hInstance, NULL) ; for (i = 0 ; i 3 ; i+) / The three scroll bars have IDs 0, 1, and 2, with / scroll bar ranges from 0 through 255. hwndScrolli = CreateWindow (TEXT (scrollbar), NULL, WS_CHILD | WS_VISI

34、BLE | WS_TABSTOP | SBS_VERT, 0, 0, 0, 0, hwnd, (HMENU) i, hInstance, NULL) ; SetScrollRange (hwndScrolli, SB_CTL, 0, 255, FALSE) ; SetScrollPos (hwndScrolli, SB_CTL, 0, FALSE) ; / The three color-name labels have IDs 3, 4, and 5, / and text strings Red, Green, and Blue. hwndLabel i = CreateWindow (T

35、EXT (static), szColorLabeli, WS_CHILD | WS_VISIBLE | SS_CENTER, 0, 0, 0, 0, hwnd, (HMENU) (i + 3), hInstance, NULL) ; / The three color-value text fields have IDs 6, 7, / and 8, and initial text strings of 0. hwndValue i = CreateWindow (TEXT (static), TEXT (0), WS_CHILD | WS_VISIBLE | SS_CENTER, 0,

36、0, 0, 0, hwnd, (HMENU) (i + 6), hInstance, NULL) ; OldScrolli = (WNDPROC) SetWindowLong (hwndScrolli, GWL_WNDPROC, (LONG) ScrollProc) ; hBrushi = CreateSolidBrush (crPrimi) ; hBrushStatic = CreateSolidBrush ( GetSysColor (COLOR_BTNHIGHLIGHT) ; cyChar = HIWORD (GetDialogBaseUnits () ; return 0 ; case

37、 WM_SIZE : cxClient = LOWORD (lParam) ; cyClient = HIWORD (lParam) ; SetRect (&rcColor, cxClient / 2, 0, cxClient, cyClient) ; MoveWindow (hwndRect, 0, 0, cxClient / 2, cyClient, TRUE) ; for (i = 0 ; i = 3 & i = 8) / static text controls SetTextColor (HDC) wParam, crPrimi % 3) ; SetBkColor (HDC) wPa

38、ram, GetSysColor (COLOR_BTNHIGHLIGHT); return (LRESULT) hBrushStatic ; break ; case WM_SYSCOLORCHANGE : DeleteObject (hBrushStatic) ; hBrushStatic = CreateSolidBrush (GetSysColor (COLOR_BTNHIGHLIGHT) ; return 0 ; case WM_DESTROY : DeleteObject (HBRUSH) SetClassLong (hwnd, GCL_HBRBACKGROUND, (LONG) G

39、etStockObject (WHITE_BRUSH) ; for (i = 0 ; i 3 ; i+) DeleteObject (hBrushi) ; DeleteObject (hBrushStatic) ; PostQuitMessage (0) ; return 0 ; return DefWindowProc (hwnd, message, wParam, lParam) ; LRESULT CALLBACK ScrollProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) int id = GetWindowLong (hwnd, GWL_ID) ; switch (message) case WM_KEYDOWN : if (wParam = VK_TAB) SetFocus (GetDlgItem (GetParent (hwnd), (id + (

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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)論