VisualC編程主講教師唐龍教授計算機(jī)科學(xué)與技術(shù)課件_第1頁
VisualC編程主講教師唐龍教授計算機(jī)科學(xué)與技術(shù)課件_第2頁
VisualC編程主講教師唐龍教授計算機(jī)科學(xué)與技術(shù)課件_第3頁
VisualC編程主講教師唐龍教授計算機(jī)科學(xué)與技術(shù)課件_第4頁
VisualC編程主講教師唐龍教授計算機(jī)科學(xué)與技術(shù)課件_第5頁
已閱讀5頁,還剩113頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

面向?qū)ο笈c可視化

程序設(shè)計

--VisualC++編程

主講教師:

唐龍教授

(計算機(jī)科學(xué)與技術(shù)系)

黃維通博士

(計算機(jī)與信息管理中心)

清華大學(xué)

2001年2月11/30/20221面向?qū)ο笈c可視化

程序設(shè)計

--VisualC++編程第八章

Windows的

標(biāo)準(zhǔn)控件11/30/20222第八章

Windows的

標(biāo)準(zhǔn)控件11/30/20222內(nèi)容提要控件的基本概念常用子窗口操作函數(shù)按鈕控件滾動條控件靜態(tài)控件列表框控件編輯框控件組合框控件11/30/20223內(nèi)容提要控件的基本概念11/30/20223§8.1.

控件的基本概念11/30/20224§8.1.

控件的基本概念11/30/202241.控件是用戶交互的操作對象界面的主要組成之一,用戶交互的操作對象。具有窗口屬性,可用ShowWindows()和MoveWindows()等窗口管理函數(shù)來顯示或隱藏控件、改變控件的位置、尺寸以及其它操作。系統(tǒng)預(yù)定義標(biāo)準(zhǔn)控件的窗口類:BUTTON 按鈕控件COMBOBOX 組合框控件EDIT 編輯框控件LISTBOX 列表框控件SCROLLBAR 滾動條控件STATIC 靜態(tài)控件11/30/202251.控件是用戶交互的操作對象界面的主要組成之一,用戶交互的操2.控件的創(chuàng)建控件以兩種形式存在:依附于對話框;獨立的子窗口。兩種創(chuàng)建方法:啟動話框時,系統(tǒng)為對話框創(chuàng)建其中的控件,如按鈕控件。調(diào)用CreateWindows()或CreateWindowsEx()函數(shù)創(chuàng)建獨立的子窗口控件。創(chuàng)建時必須指定控件的窗口類控件的窗口類可在應(yīng)用程序中定義并注冊或由系統(tǒng)預(yù)定義。11/30/202262.控件的創(chuàng)建控件以兩種形式存在:11/30/202263.控件的消息傳遞子窗口控件向其父窗口發(fā)送WM_COMNAND消息,其中wParamc參數(shù)包含子窗口的ID;IParam參數(shù)包含子窗口的句柄和通知代碼。通知代碼通報了子窗口控件操作,例如:BN_CLICKED——在按鈕子窗口中單擊EN_HSCROLL——在編輯子窗口中激活水平滾動條……(參見教材P186,表8-2)滾動條控件,不發(fā)送WM_COMNAND消息,發(fā)送WM_HSCROLL或WM_VSCROLL消息。11/30/202273.控件的消息傳遞子窗口控件向其父窗口發(fā)送WM_COMNANwParam與lParam包含的相關(guān)信息,其含義取決控件消息4.向控件傳遞的消息調(diào)用函數(shù)SendMessage向子窗口發(fā)送消息,staticLRESULTSendMessage(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam);例如,用戶單擊按鈕時,向該按鈕發(fā)為設(shè)置按鈕選中消息BM_SETCHECK,其形式為:SendMessage(hwndRadioButton,BM_SETCHECK,1,0);調(diào)用函數(shù)SendDlgItemMessage向指定的對話框控件發(fā)送消息,其形式為:

SendDlgItemMessage(hdlg,ID,message,wParam,lParam);11/30/20228wParam與lParam包含的相關(guān)信息,其含義取決控件消息§8.2.

常用子窗口操作函數(shù)

11/30/20229§8.2.

常用子窗口操作函數(shù)

11/30/202291.EnableWindow函數(shù)功能:激活或禁止窗口。BOOLEnableWindow(HWNDhwnd,BOOLbEnable)Ture:激活False:禁止2.MoveWindow函數(shù)功能:移動或改變窗口的大小。BOOLMoveWindow(HWNDhwnd,

intX,intY, //窗口位置

intnWidth, //窗口寬度intnHeight, //窗口高度BOOLbReprint //表明窗口移動后是否重畫)窗口的大小窗口位置11/30/2022101.EnableWindow函數(shù)BOOLEnableWin3.SetWindowText功能:設(shè)置窗口的標(biāo)題或文本。BOOLSetWindowText(HWNDhwnd,LPCTSTR

lpszString)設(shè)置的文本內(nèi)容4.GetWindowText函數(shù)功能:獲取指定窗口標(biāo)題或文本,返回值為所取得文本的字節(jié)數(shù)。intGetWindowText(HWNDhwnd,LPSTRlpszString,intnMax)字符串緩沖區(qū)字符串最大長度11/30/2022113.SetWindowTextBOOLSetWindowT[請注意]

相應(yīng)于

SetWindowText和GetWindowText函數(shù)的調(diào)用,對于對話框控件,應(yīng)分別改用SetDlgItemText和GetDlgItemText函數(shù)的調(diào)用。BOOL

SetDlgItemText(HWNDhdlg,intID,LPCTSTRlpszString)Int

GetDlgItemText(HWNDhdlg,intID,LPSTRlpszString, intnMax)5.DestroyWindow函數(shù)功能:關(guān)閉窗口。關(guān)閉父窗口,同時關(guān)閉其子窗口。BOOLDestroyWindow(HWNDhwnd)11/30/202212[請注意]相應(yīng)于SetWindowText和GetWin§8.3.

按鈕控件11/30/202213§8.3.

按鈕控件11/30/2022131.按鈕控件的分類普通按鈕和默認(rèn)按鈕圓按鈕單選按鈕:編程確保互斥性自動按鈕:自動實現(xiàn)互斥性復(fù)選框按鈕組框:按鈕分組11/30/2022141.按鈕控件的分類普通按鈕和默認(rèn)按鈕11/30/2022142.按鈕控件的創(chuàng)建按鈕控件的創(chuàng)建方式在對話框中定義控件創(chuàng)建控件型的子窗口,包括兩個步驟:創(chuàng)建并注冊一個窗口類的實例創(chuàng)建并顯示窗口實例11/30/2022152.按鈕控件的創(chuàng)建按鈕控件的創(chuàng)建方式11/30/202215(1)在對話框定義中創(chuàng)建控件,其一般形式為:

Control-type

[Title,]ID,X,Y,

nWidth,nHeight

[,Style]控件類型控件標(biāo)題或內(nèi)容控件的寬度與高度控件起始坐標(biāo)控件樣式按鈕控件樣式BS_PUSHBUTTON 普通按鈕BS_DEFPUSHBUTTON 默認(rèn)按鈕BS_RADIOBUTTON 單選按鈕BS_CHKCKBOX 復(fù)選框BS_OWNERDRAW 自繪按鈕BS_TEXT 帶文本按鈕BS_ICON 帶圖標(biāo)按鈕BS_BITMAP 帶位圖按鈕BS_CENTER 按鈕上文本居中BS_LEFT 按鈕上文本左對齊BS_RIGHT 按鈕上文本右對齊BS_USERBUTTON 用戶定義按鈕11/30/202216(1)在對話框定義中創(chuàng)建控件,其一般形式為:控件類型控件標(biāo)(2)創(chuàng)建按鈕子窗口控件調(diào)用CreateWindow函數(shù)創(chuàng)建子窗口滾動條控件,其形式如下:CreateWindow(“BUTTON”, //預(yù)定義按鈕窗口類名lTitle,//按鈕標(biāo)題(文本或位圖)

WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON…,//樣式X,Y,nWidth,nHeight, //按鈕始坐標(biāo)、寬度與高度hwndParant, //父其窗口的句柄ID, //按鈕標(biāo)識 hInstance, //應(yīng)用程序當(dāng)前實例句柄NULL);11/30/202217(2)創(chuàng)建按鈕子窗口控件11/30/202217(2)創(chuàng)建滾動條子窗口控件(續(xù))調(diào)用CreateWindowEx函數(shù)創(chuàng)建擴(kuò)展的子窗口控件,它與CreateWindow函數(shù)創(chuàng)建的子窗口控件的差別,只是多一些擴(kuò)展樣式的選擇。此函數(shù)原型如下:CreateWindowEx(DRORDdwExstyle //擴(kuò)展的窗口類名LPCTSTRlpClassName,//已注冊窗口類指針LPCTSTRlpWindowName,//窗口名稱指針DRORDdwstyle, //窗口樣式intX,Y,nWidth,nHeight,//滾動框始坐標(biāo)、寬度與高度HWNDhwndParant, //父其窗口的句柄HMEUNhMeun, //滾動條標(biāo)識/菜單的句柄 HINSTANCEhInstance,//應(yīng)用程序當(dāng)前實例句柄NULL);11/30/202218(2)創(chuàng)建滾動條子窗口控件(續(xù))11/30/2022183.按鈕控件向應(yīng)用程序傳遞消息當(dāng)用戶與控件交互操作時,控件向其父窗口發(fā)送WM_COMMAND消息,其wParam參數(shù):低字節(jié)包含控件的標(biāo)識值(ID);高字節(jié)中包含控件向父窗口發(fā)出的通知代碼。按鈕控件的通知代碼:BN_CLICKED 單擊按鈕BN_DOUBLECLICKED雙擊按鈕BN_SETFOCUS 按鈕獲得輸入焦點BN_KILLFOCUS 按鈕失去輸入焦點11/30/2022193.按鈕控件向應(yīng)用程序傳遞消息當(dāng)用戶與控件交互操作時,控件向4.應(yīng)用程序向按鈕控件傳遞消息調(diào)用函數(shù)SendMessage向按鈕控件發(fā)出消息,其格式:SendMessage(hwnd,message,wParam,lParam);發(fā)出的消息字參數(shù)確定動作BM_GETCHECK 獲取選中狀態(tài)BM_SETCHECK 設(shè)置/取消選中狀態(tài)BM_GETSTYLE 獲取樣式BM_SETSTYLE 設(shè)置樣式BM_SETSTATE 設(shè)置狀態(tài)BM_GETIMAGE 獲取按鈕圖標(biāo)或位圖句柄BM_SETIMAGE 設(shè)置按鈕圖標(biāo)或位圖句柄11/30/2022204.應(yīng)用程序向按鈕控件傳遞消息調(diào)用函數(shù)SendMessage4.應(yīng)用程序向按鈕控件傳遞消息(續(xù))對同樣的消息,字參數(shù)不同,動作也不同,例如,設(shè)置/取消選中標(biāo)志,若字參數(shù)應(yīng)取1,則設(shè)置標(biāo)志

SendMessage(hwnd,BM_SETCHECK,1,0);若字參數(shù)應(yīng)取0,則設(shè)置標(biāo)志

SendMessage(hwnd,BM_SETCHECK,0,0);相應(yīng)于對話框按鈕控件,則改調(diào)用函數(shù)SendDlgItemMessage(hdlg,ID,message,wParam,lParam);11/30/2022214.應(yīng)用程序向按鈕控件傳遞消息(續(xù))對同樣的消息,字參數(shù)不同5.按鈕控件示例【例8-1】創(chuàng)建如右上圖的按鈕控件系列,當(dāng)單擊每一個按鈕后,就出現(xiàn)如右下圖所示的響應(yīng)。[注]程序清單參見教材p192-19711/30/2022225.按鈕控件示例【例8-1】創(chuàng)建如右上圖的按鈕控件系列,當(dāng)單§8.4.

滾動條控件11/30/202223§8.4.

滾動條控件11/30/2022231.滾動條控件的功能與分類滾動條控件的功能——當(dāng)應(yīng)用程序顯示的內(nèi)容超過窗口的范圍時,用戶可通過拖動滾動條遍歷整個窗口內(nèi)容。滾動條分為垂直與水平滾動條,分別實現(xiàn)窗口內(nèi)容縱向和橫向的滾動。11/30/2022241.滾動條控件的功能與分類滾動條控件的功能——當(dāng)應(yīng)用程序顯2.滾動條控件的創(chuàng)建三種創(chuàng)建方法:創(chuàng)建窗口滾動條;創(chuàng)建滾動條子窗口控件;創(chuàng)建對話框中的滾動條控件。(1)創(chuàng)建窗口滾動條創(chuàng)建樣式為WS_VSCROLL和WS_HSCROLL的窗口,其形式如下:hwnd=CreateWindow(lpszClassName,lpszTitle,

WS_OVERLAPPEDWINDOW|WS_VSCROLL|WS_HSCROLL,

hInstance,NULL);11/30/2022252.滾動條控件的創(chuàng)建三種創(chuàng)建方法:(1)創(chuàng)建窗口滾動條11(2)創(chuàng)建滾動條子窗口控件調(diào)用CreateWindow創(chuàng)建子窗口滾動條控件,其形式如下:CreateWindow(“SCROLLBAR”, //預(yù)定義窗口類名lpszScrollTitle,//標(biāo)題,常為NULL

WS_CHILD|WS_VISIBLE…,//樣式X,Y,nWidth,nHeight, //滾動框始坐標(biāo)、寬度與高度hwndParant, //父其窗口的句柄ID, //滾動條標(biāo)識 hInstance, //應(yīng)用程序當(dāng)前實例句柄NULL);滾動條樣式除窗口類樣式外,常用的還有SBS_VERT和SBS_HORZ

11/30/202226(2)創(chuàng)建滾動條子窗口控件11/30/202226(3)創(chuàng)建對話框中的滾動條控件對話框的定義中完成創(chuàng)建操作,一般形式如下:SCROLLBARID,X,Y,nWidth,nHeight,[style];11/30/202227(3)創(chuàng)建對話框中的滾動條控件11/30/2022273.滾動條控件發(fā)送的消息滾動操作時,該控件向應(yīng)用程序發(fā)送相應(yīng)的WM_VSCROLL或WM_HSCROLL消息。消息字參數(shù)wParam低字節(jié)為滾動條動作標(biāo)識:SB_TOP

到滾動條頂端或右端SB_BOTTOM

到滾動條底端或左端SB_RIGHT

滾動到右邊 SB_LEFT

滾動到左邊

SB_PAGEUP

向上滾動一頁

……SB_LINERIGHT 向右滾動一行SB_THUMBPOSTION

滾動框移到新位置SB_THUMBTRACK

滾動框條被拖動SB_ENDSCROLL

滾動條到最終位置11/30/2022283.滾動條控件發(fā)送的消息滾動操作時,該控件向應(yīng)用程序發(fā)送相(1)SetScrollRange:設(shè)置滾動條的滾動范圍

intSetScrollRange(HWNDhwnd,intnBar, //滾動條特性標(biāo)識

intnMaxPos, //滾動條最大滾動位置intnMinPos, //滾動條最小滾動位置

BOOLbRedraw) //當(dāng)滾動條改變時是否重繪;非0表示重繪

SB_CTL為控件滾動條SB_HORZ為窗口水平滾動條SB_VERT為窗口垂直滾動條(2)SetScrollPos:設(shè)置滾動塊的位置

intSetScrollPos(HWNDhwnd,intnBar,//滾動條的特性標(biāo)識intnPos,//滾動塊的位置

BOOLbRedraw)//當(dāng)滾動條改變時是否重繪;4.常用滾動條操作函數(shù)11/30/202229(1)SetScrollRange:設(shè)置滾動條的滾動范圍i(3)GetSystemMetrics:獲取系統(tǒng)提供的滾動條尺寸如:獲取系統(tǒng)水平滾動條的高度:GetSystemMetrics(SM_CYHSCROLL);(4)GetScrollpos:獲取滾動塊的位置intGetScrollPos(

HWNDhwnd, //窗口句柄,同SetScrollRange函數(shù)

intnBar);//滾動條特性標(biāo)識

(5)GetScrollRange:獲取滾動條的滾動范圍BOOLGetScrollRange(HWNDhwnd,intnBar,LPINTlpMinPos, //接收最小位置的整形變量的地址LPINTlpMaxPos); //接收最大位置的整形變量的地址11/30/202230(3)GetSystemMetrics:獲取系統(tǒng)提供的滾動條5.滾動控件示例【例8-2】一個帶滾動條的顏色框,拉動滾動條,使其顯示的區(qū)域產(chǎn)生變化,同時,通過設(shè)置顏色,來改變顏色框的顏色。[注]程序清單參見教材p201-21111/30/2022315.滾動控件示例【例8-2】一個帶滾動條的顏色框,拉動滾動§8.5.

靜態(tài)控件11/30/202232§8.5.

靜態(tài)控件11/30/2022321.靜態(tài)控件及其特點靜態(tài)控件是一種包含正文或圖形的小窗口。通常用于標(biāo)記其他控件或控件組。特點:一般情況下,不接受用戶輸入,也不發(fā)消息??稍O(shè)置具有超文本功能,能響應(yīng)用戶輸入,向應(yīng)用程序發(fā)消息。11/30/2022331.靜態(tài)控件及其特點靜態(tài)控件是一種包含正文或圖形的小窗口。2.靜態(tài)控件的創(chuàng)建創(chuàng)建靜態(tài)控件方法:創(chuàng)建靜態(tài)控件子窗口:創(chuàng)建對話框中靜態(tài)控件。(1)創(chuàng)建靜態(tài)控件子窗口CreateWindow( “STATIC”,∥預(yù)定義窗口類名lpszStaticTitle,∥靜態(tài)控件標(biāo)題WS_CHILD|WS_VISIBLE|WS_BORDER|…,∥樣式X,Y,nWidth,nHeight,∥靜態(tài)控件起始坐標(biāo)及寬度與高度hwndParant,∥擁有該靜態(tài)控件的窗口句柄ID,∥靜態(tài)控件標(biāo)識HInstance,∥應(yīng)用程序當(dāng)前實例句柄NULL)11/30/2022342.靜態(tài)控件的創(chuàng)建創(chuàng)建靜態(tài)控件方法:(1)創(chuàng)建靜態(tài)控件子窗(2)創(chuàng)建對話框中靜態(tài)控件Static-Type

Tilte,ID,X,Y,nWidth,nHeight,[,style]類型關(guān)鍵字LTEXT(左對齊)RTEXT(右對齊)CTEX(居中)標(biāo)題(文本或位圖等)起始坐標(biāo)樣式選項SS_LEFT 左對齊文本SS_RIGHT 右對齊文本 SS_CENTER 文本居中 SS_ICON 包含位圖 SS_CENTEIMAGE 位圖居中SS_NOTIFY 單擊時,發(fā)消息SS_USERITEM 用戶定義寬度高度11/30/202235(2)創(chuàng)建對話框中靜態(tài)控件類型關(guān)鍵字標(biāo)題(文本起始坐標(biāo)樣式3.靜態(tài)控件消息發(fā)送僅當(dāng)樣式選項設(shè)為SS_NOTIFY,靜態(tài)控件 被單擊時,向其父窗口發(fā)WM_COMMAND消息,lParam包含靜態(tài)控件句柄wParam低字節(jié)包含靜態(tài)控件ID,高字節(jié)包含通知碼,其含義:STN_CLICKED 單擊靜態(tài)控件STN_ENABLE 激話靜態(tài)控件STN_DBLCLK 雙擊靜態(tài)控件STN_DISABLE 禁止靜態(tài)控件11/30/2022363.靜態(tài)控件消息發(fā)送僅當(dāng)樣式選項設(shè)為SS_NOTIFY,靜態(tài)4.靜態(tài)控件應(yīng)用舉例【例8-3】位圖靜態(tài)控件的創(chuàng)建,消息的強(qiáng)制生成與處理,當(dāng)單擊位圖時,就報告該位圖的尺寸[注]程序清單參見教材p212-21511/30/2022374.靜態(tài)控件應(yīng)用舉例【例8-3】位圖靜態(tài)控件的創(chuàng)建,消息的強(qiáng)§8.6.

列表框控件11/30/202238§8.6.

列表框控件11/30/2022381.列表框控件的特點列表框是集中顯示同類內(nèi)容的子窗口,例如,顯示同類型文件等。特點:提供大量的可選項,需要時自動顯示滾動條;可設(shè)置單選或多選功能;單擊列表項,以“反相”顯示表示被選中;再次單擊該項,恢復(fù)為非選中狀態(tài)。11/30/2022391.列表框控件的特點列表框是集中顯示同類內(nèi)容的子窗口,例如2.列表框控件的創(chuàng)建創(chuàng)建列表框控件方法:創(chuàng)建列表框控件子窗口:創(chuàng)建作為對話框控件的列表框。(1)創(chuàng)建列表框控件子窗口CreateWindow( “LISTBOX”,∥預(yù)定義窗口類名NULL,∥列表框一般無標(biāo)題WS_CHILD|WS_VISIBLE|WS_BORDER|…,∥樣式X,Y,nWidth,nHeight,∥列表框起始坐標(biāo)及寬度與高度hwndParant,∥其父窗口句柄ID,∥列表框標(biāo)識HInstance,∥應(yīng)用程序當(dāng)前實例句柄NULL);11/30/2022402.列表框控件的創(chuàng)建創(chuàng)建列表框控件方法:(1)創(chuàng)建列表框控件(2)創(chuàng)建作為對話框控件的列表框LISTBOXID,X,Y,nWidth,nHeight,[,style]控件類型關(guān)鍵字起始坐標(biāo)樣式選項LBS_NOTIFY 可向父窗口發(fā)消息LBS_SORT 按字母順序排練表項LBS_MULYPLESEL多選列表框 LBS_EXTENDEDSEL擴(kuò)展多選列表框 LBS_NOREDRAW 列表框改變時步重畫LBS_STANDARD 標(biāo)準(zhǔn)樣式寬度高度11/30/202241(2)創(chuàng)建作為對話框控件的列表框控件類型起始坐標(biāo)樣式選3.列表框向應(yīng)用程序傳遞消息列表框向應(yīng)用程序發(fā)出WM_COMMAND消息;消息字參數(shù)wParam含義:低字節(jié)為控件標(biāo)識值高字節(jié)為標(biāo)識列表框動作的消息通知碼。消息通知碼含義:LBN_SELCHANGE 用戶選擇已發(fā)生改變 LBN_DBLCLK 雙擊 LBN_SELCANCLE 選擇被取消 LBN_SETFOCUS 列表框收到輸入焦點 LBN_KILLFOCUS 列表框失去輸入焦點11/30/2022423.列表框向應(yīng)用程序傳遞消息列表框向應(yīng)用程序發(fā)出WM_COM4.應(yīng)用程序向列表框傳遞消息調(diào)用函數(shù)SendMessage或SendDlgItemMessage向列表框發(fā)送各種消息。索引號的使用列表項由索引值指定,首項缺省索引號為0,末項為-1發(fā)送LB_GETCURSEL消息獲取當(dāng)前選中的索引號。多選列表框消息發(fā)送可選取多個項,發(fā)送LB_GETSELCOUNT消息獲取選中的項數(shù);發(fā)送LB_GETSEL消息獲取指定項的選中狀態(tài)發(fā)送LB_DIR消息以顯示文件目錄。11/30/2022434.應(yīng)用程序向列表框傳遞消息調(diào)用函數(shù)SendMessage或列表框傳遞消息LB_ADDFILE 在文件列表中加入指定文件LB_GETTEXT 獲取指定項文本 LB_ADDSTRING 在列表框中加入列表項LB_GETTEXTLEN 獲取指定項長高 LB_DELETESTRING 在列表框中刪除列表項LB_GETTOPINDEX 獲取列表框中第一項的索引值 LB_DIR 在列表框中列出指定文件LB_INSERTSTRING 在列表框的指定位置加入一項 LB_FINDSTRING 在列表框中查找指定項LB_RESETCONTENT 清空列表框 LB_GETCOUNT 獲取多選列表框中的項數(shù)LB_SETSEL 設(shè)置多選列表框中指定項的選中狀態(tài) LB_GETCURSEL 獲取列表框中當(dāng)前選中項的索引值LB_SETCURSEL 設(shè)置單選列表框中指定項的選中狀態(tài) LB_GETSEL 獲取列表框中指定項的選中狀態(tài)LB_SETTOPINDEX 設(shè)置列表框中第一項的索引值 LB_GETSELCOUNT 獲取多選列表框中選中的項數(shù) 11/30/202244列表框傳遞消息11/30/2022445.列表框應(yīng)用舉例【例8-4】創(chuàng)建常用的單選列表框,在該列表框中列出文件目錄.[注]程序清單參見教材p218-22111/30/2022455.列表框應(yīng)用舉例【例8-4】創(chuàng)建常用的單選列表框,在該列§8.7.

編輯框控件11/30/202246§8.7.

編輯框控件11/30/2022461.編輯框控件及其特點編輯框的主要作用在于接收用戶鍵盤輸入功能特點:可自動轉(zhuǎn)換用戶輸入,如大小寫轉(zhuǎn)換等;可使用通配符,如*代替用戶輸入;支持多行編輯。11/30/2022471.編輯框控件及其特點編輯框的主要作用在于接收用戶鍵盤輸入2.編輯框控件的創(chuàng)建創(chuàng)建編輯框子窗口控件CreateWindow(“EDIT”, ∥預(yù)定義窗口類名NULL, ∥編輯框一般無標(biāo)題WS_CHILD|WS_VISIBLE|…,∥樣式X,Y,nWidth,nHeight, ∥起始坐標(biāo),寬度與高度hwndParant,∥其父窗口句柄ID,∥編輯框標(biāo)識hInstance,∥應(yīng)用程序當(dāng)前實例句柄NULL)創(chuàng)建對話框中編輯框控件EDITTEXTID,X,Y,nWidth,nHeight,[,style]11/30/2022482.編輯框控件的創(chuàng)建創(chuàng)建編輯框子窗口控件11/30/2023.編輯框向應(yīng)用程序傳遞消息編輯框向應(yīng)用程序發(fā)送WM_COMMAND消息;消息字參數(shù)wParam的含義:低字節(jié)為控件標(biāo)識:高字節(jié)為標(biāo)識編輯框動作的消息通知碼。消息通知碼含義:EN_SETFOCUS 編輯框取得輸入焦點EN_KILLFOCUS 編輯框失去輸入焦點EN_CHANGE 編輯框內(nèi)容發(fā)生改變 EN_UPDATE 編輯框內(nèi)容被更改EN_MAXTEXT 輸入已達(dá)到最大字節(jié)數(shù)EN_HSCROLL 編輯框內(nèi)容水平滾動EN_VSCROLL 編輯框內(nèi)容垂直滾動 11/30/2022493.編輯框向應(yīng)用程序傳遞消息編輯框向應(yīng)用程序發(fā)送WM_COM4.應(yīng)用程序向編輯框傳遞消息調(diào)用SendMessage和SendDlgItemMessage向編輯框發(fā)送各種消息常見編輯框消息及其含義:EM_GETRECT 獲取編輯框矩形尺寸EM_SETRECT 設(shè)置編輯框矩形尺寸EM_LINESCROLL 設(shè)置滾動條滾動步長EM_GETHANDLE 獲取輸入緩沖區(qū)句柄EM_SETHANDLE 設(shè)置輸入緩沖區(qū)句柄EM_LINELENGTH 獲取文本行長度EM_GETFONT 獲取編輯框使用的字體 …...EM_GETSEL 獲取編輯框中的選中的文本EM_SETSEL 設(shè)置編輯框中的選中的文本11/30/2022504.應(yīng)用程序向編輯框傳遞消息調(diào)用SendMessage和Se5.編輯框控件應(yīng)用舉例【例8-5】包含編輯框控件的“乘法器”。輸入框中輸入一個數(shù),單擊“×”,再輸入另一個數(shù),在結(jié)果輸出框中輸出結(jié)果。[注]程序清單參見教材p223-22811/30/2022515.編輯框控件應(yīng)用舉例【例8-5】包含編輯框控件的“乘§8.8.

組合框控件11/30/202252§8.8.

組合框控件11/30/2022521.組合框控件的特點使用單一控件不能完全滿足與用戶交互的需要,組合兩種預(yù)定義窗口成為組合框。對話框及與靜態(tài)文本和編輯框組合是最常見的組合框。組合框中的列表框常隱藏于編輯框下,單擊編輯框右側(cè)箭頭時被彈出。11/30/2022531.組合框控件的特點使用單一控件不能完全滿足與用戶交互的需2.組合框控件的創(chuàng)建創(chuàng)建組合框子窗口CreateWindow(“COMBOBOX”, ∥預(yù)定義窗口類名NULL, ∥組合框一般無標(biāo)題CBS_DROPDOWN|…, ∥樣式X,Y,nWidth,nHeight, ∥起始坐標(biāo),寬度與高度hwndParant,∥其父窗口句柄ID,∥組合框標(biāo)識hInstance,∥應(yīng)用程序當(dāng)前實例句柄NULL)創(chuàng)建作為對話框控件的組合框COMBOBOXID,X,Y,nWidth,nHeight,[,style]11/30/2022542.組合框控件的創(chuàng)建創(chuàng)建組合框子窗口11/30/2022543.組合框向應(yīng)用程序傳遞消息組合框向應(yīng)用程序發(fā)送WM_COMMAND消息;消息字參數(shù)wParam的含義:低字節(jié)為控件標(biāo)識:高字節(jié)為標(biāo)識組合框動作的消息通知碼。消息通知碼含義:CBN_SELCHANGE 其列表框選中項發(fā)生改變 CBN_DBLCLK 雙擊CBN_SETFOCUS 組合框取得輸入焦點CBN_KILLFOCUS 組合框失去輸入焦點CBN_EDITCHANGE 其編輯框中文本發(fā)生改變CBN_EDITUPDATE 其編輯框中顯示修改的文本CBN_DROPDOWN 其列表框?qū)⑾吕瑿BN_CLOSEUPL 其列表框?qū)㈦[藏 11/30/2022553.組合框向應(yīng)用程序傳遞消息組合框向應(yīng)用程序發(fā)送WM_COM4.應(yīng)用程序向組合框傳遞消息調(diào)用SendMessage和SendDlgItemMessage向組合框發(fā)送各種消息常見編輯框消息及其含義:CB_SHOWDROPDOWN 顯示下拉列表框CB_ADDSTRING 列表框中加新項CB_DSTRING 列表框刪除項CB_INSERTSTRING 列表框中插入新項CB_FINDSTRING 列表框中查找項CB_RESETCONTENT 清空列表框CB_DTR 列表框列目錄 …...CB_GETEDITSEL 獲取編輯框中的選擇CB_SETEDITSEL 設(shè)置編輯框中的選擇11/30/2022564.應(yīng)用程序向組合框傳遞消息調(diào)用SendMessage和Se5.組合框控件應(yīng)用舉例【例8-6】創(chuàng)建一個組合框控件,當(dāng)單擊向下按鈕時,顯示可選文件的名字。

[注]程序清單參見教材p230-233.11/30/2022575.組合框控件應(yīng)用舉例【例8-6】創(chuàng)建一個組合框控件,當(dāng)單(第八章)

完11/30/202258(第八章)

完11/30/202258中期考核的大作業(yè)綜合運用已學(xué)過vc++編程知識,設(shè)計實現(xiàn)科學(xué)計算小計算器,其功能類似于Windows系統(tǒng)附件中的計算器。[注]5月7日前完成11/30/202259中期考核的大作業(yè)綜合運用已學(xué)過vc++編程知識,設(shè)計實現(xiàn)科學(xué)面向?qū)ο笈c可視化

程序設(shè)計

--VisualC++編程

主講教師:

唐龍教授

(計算機(jī)科學(xué)與技術(shù)系)

黃維通博士

(計算機(jī)與信息管理中心)

清華大學(xué)

2001年2月11/30/202260面向?qū)ο笈c可視化

程序設(shè)計

--VisualC++編程第八章

Windows的

標(biāo)準(zhǔn)控件11/30/202261第八章

Windows的

標(biāo)準(zhǔn)控件11/30/20222內(nèi)容提要控件的基本概念常用子窗口操作函數(shù)按鈕控件滾動條控件靜態(tài)控件列表框控件編輯框控件組合框控件11/30/202262內(nèi)容提要控件的基本概念11/30/20223§8.1.

控件的基本概念11/30/202263§8.1.

控件的基本概念11/30/202241.控件是用戶交互的操作對象界面的主要組成之一,用戶交互的操作對象。具有窗口屬性,可用ShowWindows()和MoveWindows()等窗口管理函數(shù)來顯示或隱藏控件、改變控件的位置、尺寸以及其它操作。系統(tǒng)預(yù)定義標(biāo)準(zhǔn)控件的窗口類:BUTTON 按鈕控件COMBOBOX 組合框控件EDIT 編輯框控件LISTBOX 列表框控件SCROLLBAR 滾動條控件STATIC 靜態(tài)控件11/30/2022641.控件是用戶交互的操作對象界面的主要組成之一,用戶交互的操2.控件的創(chuàng)建控件以兩種形式存在:依附于對話框;獨立的子窗口。兩種創(chuàng)建方法:啟動話框時,系統(tǒng)為對話框創(chuàng)建其中的控件,如按鈕控件。調(diào)用CreateWindows()或CreateWindowsEx()函數(shù)創(chuàng)建獨立的子窗口控件。創(chuàng)建時必須指定控件的窗口類控件的窗口類可在應(yīng)用程序中定義并注冊或由系統(tǒng)預(yù)定義。11/30/2022652.控件的創(chuàng)建控件以兩種形式存在:11/30/202263.控件的消息傳遞子窗口控件向其父窗口發(fā)送WM_COMNAND消息,其中wParamc參數(shù)包含子窗口的ID;IParam參數(shù)包含子窗口的句柄和通知代碼。通知代碼通報了子窗口控件操作,例如:BN_CLICKED——在按鈕子窗口中單擊EN_HSCROLL——在編輯子窗口中激活水平滾動條……(參見教材P186,表8-2)滾動條控件,不發(fā)送WM_COMNAND消息,發(fā)送WM_HSCROLL或WM_VSCROLL消息。11/30/2022663.控件的消息傳遞子窗口控件向其父窗口發(fā)送WM_COMNANwParam與lParam包含的相關(guān)信息,其含義取決控件消息4.向控件傳遞的消息調(diào)用函數(shù)SendMessage向子窗口發(fā)送消息,staticLRESULTSendMessage(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam);例如,用戶單擊按鈕時,向該按鈕發(fā)為設(shè)置按鈕選中消息BM_SETCHECK,其形式為:SendMessage(hwndRadioButton,BM_SETCHECK,1,0);調(diào)用函數(shù)SendDlgItemMessage向指定的對話框控件發(fā)送消息,其形式為:

SendDlgItemMessage(hdlg,ID,message,wParam,lParam);11/30/202267wParam與lParam包含的相關(guān)信息,其含義取決控件消息§8.2.

常用子窗口操作函數(shù)

11/30/202268§8.2.

常用子窗口操作函數(shù)

11/30/202291.EnableWindow函數(shù)功能:激活或禁止窗口。BOOLEnableWindow(HWNDhwnd,BOOLbEnable)Ture:激活False:禁止2.MoveWindow函數(shù)功能:移動或改變窗口的大小。BOOLMoveWindow(HWNDhwnd,

intX,intY, //窗口位置

intnWidth, //窗口寬度intnHeight, //窗口高度BOOLbReprint //表明窗口移動后是否重畫)窗口的大小窗口位置11/30/2022691.EnableWindow函數(shù)BOOLEnableWin3.SetWindowText功能:設(shè)置窗口的標(biāo)題或文本。BOOLSetWindowText(HWNDhwnd,LPCTSTR

lpszString)設(shè)置的文本內(nèi)容4.GetWindowText函數(shù)功能:獲取指定窗口標(biāo)題或文本,返回值為所取得文本的字節(jié)數(shù)。intGetWindowText(HWNDhwnd,LPSTRlpszString,intnMax)字符串緩沖區(qū)字符串最大長度11/30/2022703.SetWindowTextBOOLSetWindowT[請注意]

相應(yīng)于

SetWindowText和GetWindowText函數(shù)的調(diào)用,對于對話框控件,應(yīng)分別改用SetDlgItemText和GetDlgItemText函數(shù)的調(diào)用。BOOL

SetDlgItemText(HWNDhdlg,intID,LPCTSTRlpszString)Int

GetDlgItemText(HWNDhdlg,intID,LPSTRlpszString, intnMax)5.DestroyWindow函數(shù)功能:關(guān)閉窗口。關(guān)閉父窗口,同時關(guān)閉其子窗口。BOOLDestroyWindow(HWNDhwnd)11/30/202271[請注意]相應(yīng)于SetWindowText和GetWin§8.3.

按鈕控件11/30/202272§8.3.

按鈕控件11/30/2022131.按鈕控件的分類普通按鈕和默認(rèn)按鈕圓按鈕單選按鈕:編程確?;コ庑宰詣影粹o:自動實現(xiàn)互斥性復(fù)選框按鈕組框:按鈕分組11/30/2022731.按鈕控件的分類普通按鈕和默認(rèn)按鈕11/30/2022142.按鈕控件的創(chuàng)建按鈕控件的創(chuàng)建方式在對話框中定義控件創(chuàng)建控件型的子窗口,包括兩個步驟:創(chuàng)建并注冊一個窗口類的實例創(chuàng)建并顯示窗口實例11/30/2022742.按鈕控件的創(chuàng)建按鈕控件的創(chuàng)建方式11/30/202215(1)在對話框定義中創(chuàng)建控件,其一般形式為:

Control-type

[Title,]ID,X,Y,

nWidth,nHeight

[,Style]控件類型控件標(biāo)題或內(nèi)容控件的寬度與高度控件起始坐標(biāo)控件樣式按鈕控件樣式BS_PUSHBUTTON 普通按鈕BS_DEFPUSHBUTTON 默認(rèn)按鈕BS_RADIOBUTTON 單選按鈕BS_CHKCKBOX 復(fù)選框BS_OWNERDRAW 自繪按鈕BS_TEXT 帶文本按鈕BS_ICON 帶圖標(biāo)按鈕BS_BITMAP 帶位圖按鈕BS_CENTER 按鈕上文本居中BS_LEFT 按鈕上文本左對齊BS_RIGHT 按鈕上文本右對齊BS_USERBUTTON 用戶定義按鈕11/30/202275(1)在對話框定義中創(chuàng)建控件,其一般形式為:控件類型控件標(biāo)(2)創(chuàng)建按鈕子窗口控件調(diào)用CreateWindow函數(shù)創(chuàng)建子窗口滾動條控件,其形式如下:CreateWindow(“BUTTON”, //預(yù)定義按鈕窗口類名lTitle,//按鈕標(biāo)題(文本或位圖)

WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON…,//樣式X,Y,nWidth,nHeight, //按鈕始坐標(biāo)、寬度與高度hwndParant, //父其窗口的句柄ID, //按鈕標(biāo)識 hInstance, //應(yīng)用程序當(dāng)前實例句柄NULL);11/30/202276(2)創(chuàng)建按鈕子窗口控件11/30/202217(2)創(chuàng)建滾動條子窗口控件(續(xù))調(diào)用CreateWindowEx函數(shù)創(chuàng)建擴(kuò)展的子窗口控件,它與CreateWindow函數(shù)創(chuàng)建的子窗口控件的差別,只是多一些擴(kuò)展樣式的選擇。此函數(shù)原型如下:CreateWindowEx(DRORDdwExstyle //擴(kuò)展的窗口類名LPCTSTRlpClassName,//已注冊窗口類指針LPCTSTRlpWindowName,//窗口名稱指針DRORDdwstyle, //窗口樣式intX,Y,nWidth,nHeight,//滾動框始坐標(biāo)、寬度與高度HWNDhwndParant, //父其窗口的句柄HMEUNhMeun, //滾動條標(biāo)識/菜單的句柄 HINSTANCEhInstance,//應(yīng)用程序當(dāng)前實例句柄NULL);11/30/202277(2)創(chuàng)建滾動條子窗口控件(續(xù))11/30/2022183.按鈕控件向應(yīng)用程序傳遞消息當(dāng)用戶與控件交互操作時,控件向其父窗口發(fā)送WM_COMMAND消息,其wParam參數(shù):低字節(jié)包含控件的標(biāo)識值(ID);高字節(jié)中包含控件向父窗口發(fā)出的通知代碼。按鈕控件的通知代碼:BN_CLICKED 單擊按鈕BN_DOUBLECLICKED雙擊按鈕BN_SETFOCUS 按鈕獲得輸入焦點BN_KILLFOCUS 按鈕失去輸入焦點11/30/2022783.按鈕控件向應(yīng)用程序傳遞消息當(dāng)用戶與控件交互操作時,控件向4.應(yīng)用程序向按鈕控件傳遞消息調(diào)用函數(shù)SendMessage向按鈕控件發(fā)出消息,其格式:SendMessage(hwnd,message,wParam,lParam);發(fā)出的消息字參數(shù)確定動作BM_GETCHECK 獲取選中狀態(tài)BM_SETCHECK 設(shè)置/取消選中狀態(tài)BM_GETSTYLE 獲取樣式BM_SETSTYLE 設(shè)置樣式BM_SETSTATE 設(shè)置狀態(tài)BM_GETIMAGE 獲取按鈕圖標(biāo)或位圖句柄BM_SETIMAGE 設(shè)置按鈕圖標(biāo)或位圖句柄11/30/2022794.應(yīng)用程序向按鈕控件傳遞消息調(diào)用函數(shù)SendMessage4.應(yīng)用程序向按鈕控件傳遞消息(續(xù))對同樣的消息,字參數(shù)不同,動作也不同,例如,設(shè)置/取消選中標(biāo)志,若字參數(shù)應(yīng)取1,則設(shè)置標(biāo)志

SendMessage(hwnd,BM_SETCHECK,1,0);若字參數(shù)應(yīng)取0,則設(shè)置標(biāo)志

SendMessage(hwnd,BM_SETCHECK,0,0);相應(yīng)于對話框按鈕控件,則改調(diào)用函數(shù)SendDlgItemMessage(hdlg,ID,message,wParam,lParam);11/30/2022804.應(yīng)用程序向按鈕控件傳遞消息(續(xù))對同樣的消息,字參數(shù)不同5.按鈕控件示例【例8-1】創(chuàng)建如右上圖的按鈕控件系列,當(dāng)單擊每一個按鈕后,就出現(xiàn)如右下圖所示的響應(yīng)。[注]程序清單參見教材p192-19711/30/2022815.按鈕控件示例【例8-1】創(chuàng)建如右上圖的按鈕控件系列,當(dāng)單§8.4.

滾動條控件11/30/202282§8.4.

滾動條控件11/30/2022231.滾動條控件的功能與分類滾動條控件的功能——當(dāng)應(yīng)用程序顯示的內(nèi)容超過窗口的范圍時,用戶可通過拖動滾動條遍歷整個窗口內(nèi)容。滾動條分為垂直與水平滾動條,分別實現(xiàn)窗口內(nèi)容縱向和橫向的滾動。11/30/2022831.滾動條控件的功能與分類滾動條控件的功能——當(dāng)應(yīng)用程序顯2.滾動條控件的創(chuàng)建三種創(chuàng)建方法:創(chuàng)建窗口滾動條;創(chuàng)建滾動條子窗口控件;創(chuàng)建對話框中的滾動條控件。(1)創(chuàng)建窗口滾動條創(chuàng)建樣式為WS_VSCROLL和WS_HSCROLL的窗口,其形式如下:hwnd=CreateWindow(lpszClassName,lpszTitle,

WS_OVERLAPPEDWINDOW|WS_VSCROLL|WS_HSCROLL,

hInstance,NULL);11/30/2022842.滾動條控件的創(chuàng)建三種創(chuàng)建方法:(1)創(chuàng)建窗口滾動條11(2)創(chuàng)建滾動條子窗口控件調(diào)用CreateWindow創(chuàng)建子窗口滾動條控件,其形式如下:CreateWindow(“SCROLLBAR”, //預(yù)定義窗口類名lpszScrollTitle,//標(biāo)題,常為NULL

WS_CHILD|WS_VISIBLE…,//樣式X,Y,nWidth,nHeight, //滾動框始坐標(biāo)、寬度與高度hwndParant, //父其窗口的句柄ID, //滾動條標(biāo)識 hInstance, //應(yīng)用程序當(dāng)前實例句柄NULL);滾動條樣式除窗口類樣式外,常用的還有SBS_VERT和SBS_HORZ

11/30/202285(2)創(chuàng)建滾動條子窗口控件11/30/202226(3)創(chuàng)建對話框中的滾動條控件對話框的定義中完成創(chuàng)建操作,一般形式如下:SCROLLBARID,X,Y,nWidth,nHeight,[style];11/30/202286(3)創(chuàng)建對話框中的滾動條控件11/30/2022273.滾動條控件發(fā)送的消息滾動操作時,該控件向應(yīng)用程序發(fā)送相應(yīng)的WM_VSCROLL或WM_HSCROLL消息。消息字參數(shù)wParam低字節(jié)為滾動條動作標(biāo)識:SB_TOP

到滾動條頂端或右端SB_BOTTOM

到滾動條底端或左端SB_RIGHT

滾動到右邊 SB_LEFT

滾動到左邊

SB_PAGEUP

向上滾動一頁

……SB_LINERIGHT 向右滾動一行SB_THUMBPOSTION

滾動框移到新位置SB_THUMBTRACK

滾動框條被拖動SB_ENDSCROLL

滾動條到最終位置11/30/2022873.滾動條控件發(fā)送的消息滾動操作時,該控件向應(yīng)用程序發(fā)送相(1)SetScrollRange:設(shè)置滾動條的滾動范圍

intSetScrollRange(HWNDhwnd,intnBar, //滾動條特性標(biāo)識

intnMaxPos, //滾動條最大滾動位置intnMinPos, //滾動條最小滾動位置

BOOLbRedraw) //當(dāng)滾動條改變時是否重繪;非0表示重繪

SB_CTL為控件滾動條SB_HORZ為窗口水平滾動條SB_VERT為窗口垂直滾動條(2)SetScrollPos:設(shè)置滾動塊的位置

intSetScrollPos(HWNDhwnd,intnBar,//滾動條的特性標(biāo)識intnPos,//滾動塊的位置

BOOLbRedraw)//當(dāng)滾動條改變時是否重繪;4.常用滾動條操作函數(shù)11/30/202288(1)SetScrollRange:設(shè)置滾動條的滾動范圍i(3)GetSystemMetrics:獲取系統(tǒng)提供的滾動條尺寸如:獲取系統(tǒng)水平滾動條的高度:GetSystemMetrics(SM_CYHSCROLL);(4)GetScrollpos:獲取滾動塊的位置intGetScrollPos(

HWNDhwnd, //窗口句柄,同SetScrollRange函數(shù)

intnBar);//滾動條特性標(biāo)識

(5)GetScrollRange:獲取滾動條的滾動范圍BOOLGetScrollRange(HWNDhwnd,intnBar,LPINTlpMinPos, //接收最小位置的整形變量的地址LPINTlpMaxPos); //接收最大位置的整形變量的地址11/30/202289(3)GetSystemMetrics:獲取系統(tǒng)提供的滾動條5.滾動控件示例【例8-2】一個帶滾動條的顏色框,拉動滾動條,使其顯示的區(qū)域產(chǎn)生變化,同時,通過設(shè)置顏色,來改變顏色框的顏色。[注]程序清單參見教材p201-21111/30/2022905.滾動控件示例【例8-2】一個帶滾動條的顏色框,拉動滾動§8.5.

靜態(tài)控件11/30/202291§8.5.

靜態(tài)控件11/30/2022321.靜態(tài)控件及其特點靜態(tài)控件是一種包含正文或圖形的小窗口。通常用于標(biāo)記其他控件或控件組。特點:一般情況下,不接受用戶輸入,也不發(fā)消息??稍O(shè)置具有超文本功能,能響應(yīng)用戶輸入,向應(yīng)用程序發(fā)消息。11/30/2022921.靜態(tài)控件及其特點靜態(tài)控件是一種包含正文或圖形的小窗口。2.靜態(tài)控件的創(chuàng)建創(chuàng)建靜態(tài)控件方法:創(chuàng)建靜態(tài)控件子窗口:創(chuàng)建對話框中靜態(tài)控件。(1)創(chuàng)建靜態(tài)控件子窗口CreateWindow( “STATIC”,∥預(yù)定義窗口類名lpszStaticTitle,∥靜態(tài)控件標(biāo)題WS_CHILD|WS_VISIBLE|WS_BORDER|…,∥樣式X,Y,nWidth,nHeight,∥靜態(tài)控件起始坐標(biāo)及寬度與高度hwndParant,∥擁有該靜態(tài)控件的窗口句柄ID,∥靜態(tài)控件標(biāo)識HInstance,∥應(yīng)用程序當(dāng)前實例句柄NULL)11/30/2022932.靜態(tài)控件的創(chuàng)建創(chuàng)建靜態(tài)控件方法:(1)創(chuàng)建靜態(tài)控件子窗(2)創(chuàng)建對話框中靜態(tài)控件Static-Type

Tilte,ID,X,Y,nWidth,nHeight,[,style]類型關(guān)鍵字LTEXT(左對齊)RTEXT(右對齊)CTEX(居中)標(biāo)題(文本或位圖等)起始坐標(biāo)樣式選項SS_LEFT 左對齊文本SS_RIGHT 右對齊文本 SS_CENTER 文本居中 SS_ICON 包含位圖 SS_CENTEIMAGE 位圖居中SS_NOTIFY 單擊時,發(fā)消息SS_USERITEM 用戶定義寬度高度11/30/202294(2)創(chuàng)建對話框中靜態(tài)控件類型關(guān)鍵字標(biāo)題(文本起始坐標(biāo)樣式3.靜態(tài)控件消息發(fā)送僅當(dāng)樣式選項設(shè)為SS_NOTIFY,靜態(tài)控件 被單擊時,向其父窗口發(fā)WM_COMMAND消息,lParam包含靜態(tài)控件句柄wParam低字節(jié)包含靜態(tài)控件ID,高字節(jié)包含通知碼,其含義:STN_CLICKED 單擊靜態(tài)控件STN_ENABLE 激話靜態(tài)控件STN_DBLCLK 雙擊靜態(tài)控件STN_DISABLE 禁止靜態(tài)控件11/30/2022953.靜態(tài)控件消息發(fā)送僅當(dāng)樣式選項設(shè)為SS_NOTIFY,靜態(tài)4.靜態(tài)控件應(yīng)用舉例【例8-3】位圖靜態(tài)控件的創(chuàng)建,消息的強(qiáng)制生成與處理,當(dāng)單擊位圖時,就報告該位圖的尺寸[注]程序清單參見教材p212-21511/30/2022964.靜態(tài)控件應(yīng)用舉例【例8-3】位圖靜態(tài)控件的創(chuàng)建,消息的強(qiáng)§8.6.

列表框控件11/30/202297§8.6.

列表框控件11/30/2022381.列表框控件的特點列表框是集中顯示同類內(nèi)容的子窗口,例如,顯示同類型文件等。特點:提供大量的可選項,需要時自動顯示滾動條;可設(shè)置單選或多選功能;單擊列表項,以“反相”顯示表示被選中;再次單擊該項,恢復(fù)為非選中狀態(tài)。11/30/2022981.列表框控件的特點列表框是集中顯示同類內(nèi)容的子窗口,例如2.列表框控件的創(chuàng)建創(chuàng)建列表框控件方法:創(chuàng)建列表框控件子窗口:創(chuàng)建作為對話框控件的列表框。(1)創(chuàng)建列表框控件子窗口CreateWindow( “LISTBOX”,∥預(yù)定義窗口類名NULL,∥列表框一般無標(biāo)題WS_CHILD|WS_VISIBLE|WS_BORDER|…,∥樣式X,Y,nWidth,nHeight,∥列表框起始坐標(biāo)及寬度與高度hwndParant,∥其父窗口句柄ID,∥列表框標(biāo)識HInstance,∥應(yīng)用程序當(dāng)前實例句柄NULL);11/30/2022992.列表框控件的創(chuàng)建創(chuàng)建列表框控件方法:(1)創(chuàng)建列表框控件(2)創(chuàng)建作為對話框控件的列表框LISTBOXID,X,Y,nWidth,nHeight,[,style]控件類型關(guān)鍵字起始坐標(biāo)樣式選項LBS_NOTIFY 可向父窗口發(fā)消息LBS_SORT 按字母順序排練表項LBS_MULYPLESEL多選列表框 LBS_EXTENDEDSEL擴(kuò)展多選列表框 LBS_NOREDRAW 列表框改變時步重畫LBS_STANDARD 標(biāo)準(zhǔn)樣式寬度高度11/30/2022100(2)創(chuàng)建作為對話框控件的列表框控件類型起始坐標(biāo)樣式選3.列表框向應(yīng)用程序傳遞消息列表框向應(yīng)用程序發(fā)出WM_COMMAND消息;消息字參數(shù)wParam含義:低字節(jié)為控件標(biāo)識值高字節(jié)為標(biāo)識列表框動作的消息通知碼。消息通知碼含義:LBN_SELCHANGE 用戶選擇已發(fā)生改變 LBN_DBLCLK 雙擊 LBN_SELCANCLE 選擇被取消 LBN_SETFOCUS 列表框收到輸入焦點 LBN_KILLFOCUS 列表框失去輸入焦點11/30/20221013.列表框向應(yīng)用程序傳遞消息列表框向應(yīng)用程序發(fā)出WM_COM4.應(yīng)用程序向列表框傳遞消息調(diào)用函數(shù)SendMessage或SendDlgItemMessage向列表框發(fā)送各種消息。索引號的使用列表項由索引值指定,首項缺省索引號為0,末項為-1發(fā)送LB_GETCURSEL消息獲取當(dāng)前選中的索引號。多選列表框消息發(fā)送可選取多個項,發(fā)送LB_GETSELCOUNT消息獲取選中的項數(shù);發(fā)送LB_GETSEL消息獲取指定項的選中狀態(tài)發(fā)送LB_DIR消息以顯示文件目錄。11/30/20221024.應(yīng)用程序向列表框傳遞消息調(diào)用函數(shù)SendMessage或列表框傳遞消息LB_ADDFILE 在文件列表中加入指定文件LB_GETTEXT 獲取指定項文本 LB_ADDSTRING 在列表框中加入列表項LB_GETTEXTLEN 獲取指定項長高 LB_DELETESTRING 在列表框中刪除列表項LB_GETTOPINDEX 獲取列表框中第一項的索引值 LB_DIR 在列表框中列出指定文件LB_INSERTSTRING 在列表框的指定位置加入一項 LB_FINDSTRING 在列表框中查找指定項LB_RESETCONTENT 清空列表框 LB_GETCOUNT 獲取多選列表框中的項數(shù)LB_SETSEL 設(shè)置多選列表框中指定項的選中狀態(tài) LB_GETCURSEL 獲取列表框中當(dāng)前選中項的索引值LB_SETCURSEL 設(shè)置單選列表框中指定項的選中狀態(tài) LB_GETSEL 獲取列表框中指定項的選中狀態(tài)LB_SETTOPINDEX 設(shè)置列表框中第一項的索引值 LB_GETSELCOUNT 獲取多選列表框中選中的項數(shù) 11/30/2022103列表框傳遞消息11/30/2022445.列表框應(yīng)用舉例【例8-4】創(chuàng)建常用的單選列表框,在該列表框中列出文件目錄.[注]程序清單參見教材p218-22111/30/20221045.列表框應(yīng)用舉例【例8-4】創(chuàng)建常用的單選列表框,在該列§8.7.

編輯框控件11/30/2022105§8.7.

編輯框控件11/30/2022461.編輯框控件及其特點編輯框的主要作用在于接收用戶鍵盤輸入功能特點:可自動轉(zhuǎn)換用戶輸入,如大小寫轉(zhuǎn)換等;可使用通配符,如*代替用戶輸入;支持多行編輯。11/30/20221061.編輯框控件及其特點編輯框的主要作用在于接收用戶鍵

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論