




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第五章 Windows標準控件51 概述511 分類Windows系統(tǒng)提供了六種可作為控件的預定義窗口類。預定義窗口類說明BUTTON按鈕控件COMBOBOX組合框控件EDIT文本框控件LISTBOX列表框控件SCROLLBAR滾動條控件STATIC靜態(tài)控件512 創(chuàng)建控件在應用程序中以獨立子窗口和對話框控件兩種形式存在,因此控件的創(chuàng)建形式也分為以下兩種:1調用CreateWindows函數創(chuàng)建獨立控件子窗口CreateWindow(lpszClassName,Title,Style,X,Y,nWidth,nHeight,hwndParent,(HMENUID,hInstance,NULL2.
2、 在對話框定義中創(chuàng)建控件Control-Type Title, ID,X,Y,nWidth,nHeight ,Style其中:Control-type為控件類型,常用對話框控件類型及其說明:控件說明CHECKBOX復選框控件COMBOBOX組合框控件CTEXT文本居中的靜態(tài)控件DEFPUSHBUTTON缺省按鈕控件EDITTEXT文本框控件LISTBOX列表框控件LTEXT文本左對齊的靜態(tài)控件PUSHBUTTON按鈕控件RADIOBUTTON圓按鈕控件RTEXT文本右對齊的靜態(tài)控件SCROLLBAR滾動條控件注:創(chuàng)建控件的重點是選擇控件風格。不同風格不但關系到控件的外型,而且決定控件所能實現(xiàn)的
3、功能。513 控件與應用程序的消息傳遞1控件向應用程序發(fā)送消息用戶與子窗口控件交互時,控件向其父窗口發(fā)送WM_COMMAND消息。該消息的wParam 參數的低字節(jié)中包含子窗口控件的標識值(ID),高字節(jié)中包含子窗口向父窗口發(fā)出的通知代碼,lParam參數中包含控件子窗口句柄。例如:用戶單擊按鈕控件,該按鈕子窗口隨即向父窗口發(fā)送一條WM_COMMAND消息。該消息的wParam 參數的低字節(jié)中包含子窗口控件的標識值(ID),高字節(jié)中包含名稱為BN_CLICKED(單擊)的通知碼,表明該消息由用戶單擊按鈕產生。2應用程序向控件發(fā)送消息應用程序窗口收到子窗消息后,可調用函數SendMessage向
4、特定的子窗口發(fā)送消息,以指示其動作。例如:用戶單擊圓按鈕時,應用程序窗口可調用函數SendMessage向圓按鈕發(fā)送BM_SETCHECK消息,為該按鈕設置選中符號。SendMessage(hwndRadioButton,BM_SETCHECK,1,0);使用對話框控件時,應用程序可調用函數SendDlgItemMessage向特定的對話框控件發(fā)送消息。SendDlgItemMessage(hdlg,ID,message,wParam,lParam);514 常用窗口操作函數1EnableWindow函數激活或禁止窗口。BOOL EnableWindow(HWND hwnd,BOOL bEna
5、ble;2MoveWindow函數移動窗口或改變窗口大小。BOOL MoveWindow(HWND hwnd,int x,int y,int nWidth,int nHeight,BOOL bReprint;bReprint表明窗口移動后是否重畫。3. SendWindowText函數設置窗口的標題或文本。BOOL SendWindowText(HWND hwnd,LPCTSTR lpszString;4GetWindowText函數獲取窗口的標題或文本。int GetdWindowText(HWND hwnd,LPCTSTR lpszString,int nMax;函數返回從指定窗口獲取的文
6、本字符數。對于對話框按鈕控件,應用程序可調用SetDlgItemText和GetDlgItemText完成相同的操作。BOOL SetDlgItemText(HWND hdlg,int ID,LPSTR lpszString;int GetDlgItemText(HWND hdlg,int ID,LPSTR lpszString,int nMax;5. DestroyWindow函數關閉窗口。BOOL DestroyWindow(HWND hwnd;52 按鈕控件521 創(chuàng)建按鈕控件1創(chuàng)建按鈕子窗口控件應用程序調用函數CreateWindow創(chuàng)建該類按鈕控件。CreateWindow(“BUT
7、TON”, /預定義窗口類名Title, /按鈕標題WS_CHILD|WS_VISIBLE|,/風格X,Y, /按鈕控件的起始點坐標nWidth,nHeight,/ 按鈕控件的寬度與高度hwndParent, / 擁有該按鈕控件的窗口句柄ID, /按鈕控件標識hInstance, / 應用程序當前實例句柄NULL /無附加信息2創(chuàng)建對話框中按鈕控件該類型按鈕的創(chuàng)建在應用程序的對話框中的定義完成。Button-type Title ID,X,Y,nWidth,nHeight,Style3. 按鈕控件與應用程序的消息傳遞應用程序創(chuàng)建按鈕控件后,可通過按收控件發(fā)出的消息得知用戶的請求,并可向指定按鈕
8、發(fā)送消息對其進行操作。(1) 接收按鈕控件消息用戶與 控件交互時,控件向其父窗口發(fā)送WM_COMMAND消息。該消息的wParam 參數的低字節(jié)中包含控件的標識值(ID),高字節(jié)中包含子窗口控件向父窗口發(fā)出的通知代碼,lParam參數中包含控件子窗口句柄。按鈕消息中常用的通知碼及說明如下:通知碼說明BN_CLICKED單擊用戶按鈕BN_DBLCLK雙擊用戶按鈕BN_SETFOCUS按鈕獲得輸入焦點BN_KILLFOCUS按鈕失去輸入焦點(2) 向按鈕控件發(fā)送消息應用程序可調用函數SendMessage向按鈕控件發(fā)出消息。SendMessage(hwnd,message,wParam,lPara
9、m);SendMessage函數使用字參數確定同種消息中的不同動作。例如:設置復選框和圓按鈕的標志時字參數應取1,其形式為:SendMessage(hwnd,BM_SETCHECK,1,0);取消選擇標志時字參數應取0,其形式為:SendMessage(hwnd,BM_SETCHECK,0,0);對于對話框按鈕,應用程序可調用函數SendDlgItemMessag完成相同的操作。522 按鈕控件示例53 滾動條按鈕531 功能與分類滾動條可分為垂直滾動條和水平滾動條,分別實現(xiàn)窗口內容縱向和橫向的滾動。在形式上又可分為窗口滾動條和子窗口滾動條控件兩種。532 創(chuàng)建滾動條1創(chuàng)建窗口滾動條應用程序在
10、主窗口的創(chuàng)建過程通過設置窗口類的風格為WS_VSCROLL 和WS_HSCROLL中實現(xiàn)窗口滾動條的創(chuàng)建,其形式為:hwnd = CreateWindow(lpszClassName,lpszTitle,/在窗口的創(chuàng)建風格中加入滾動條風格WS_OVERLAPPEDWINDOW|ws_VSCROLL|WS_HSCROLL,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL;2. 創(chuàng)建滾動條子窗口控件子窗口滾動條控件的創(chuàng)建與其它控件相似,由應用程序調用函數CreateWindow實現(xiàn)。Cr
11、eateWindow(“SCROLLBAR”, /預定義窗口類名lpszScrollTitle, /滾動條標題,常為NULLWS_CHILD|WS_VISIBLE|SBS_VERT,/ 滾動條風格X,Y, /滾動條的起始點坐標nWidth,nHeight,/ 滾動條的寬度與高度hwndParent, / 擁有該滾動條的窗口句柄ID, /滾動條標識hInstance, / 應用程序當前實例句柄NULL /無附加信息3. 創(chuàng)建對話框中的滾動條控件對話框中使用的滾動條在對話框的定義中完成創(chuàng)建操作。SCROLLBAR ID,X,Y,nWidthyle,nHeight,style5.3.3 發(fā)送滾動條消
12、息當用戶操作窗口滾動條時,滾動條向應用程序發(fā)出WM_VSCROLL或WM_HSCROLL消息。其中字參數(wParam)包含滾動條動作的標識。子窗口控件的滾動條并不發(fā)出WM_COMMAND消息,而是發(fā)送WM_VSCROLL或WM_HSCROLL消息。兩者區(qū)別在于消息長參數(lParam)所包含的內容不同。滾動條控件消息長參數的高字節(jié)包含控件句柄,而窗口滾動條消息的高字節(jié)則為0。534 常用滾動條操作函數1SetScrollRange函數設置滾動條的滾動范圍int SetScrollPos(HWND hwnd,int nBar,int nMaxPos,int nMinPos,BOOL bRedr
13、awnBar為滾動條標識,常用標及說明如下:通知碼說明SB_CTL表示該滾動條為控件滾動條SB_HORZ表示該滾動條為窗口水平滾動條SB_VERT表示該滾動條為窗口垂直滾動條說明:滾動條的滾動位置為一組離散值,例如設置滾動條的范圍為099,則該滾動條共有100個可能位置。2SetScrollPos函數設置滾動條的位置。int SetScrollPos(HWND hwnd,int nBar,int nPos,BOOL bRedraw3. GetSystemMetrics函數(1)獲取系統(tǒng)水平滾動條高度nScrollHeight=GetsystemMetrics(SM_CYHSCROLL;(2)獲
14、取系統(tǒng)垂直滾動條寬度nHcrollHeight=GetsystemMetrics(SM_CXVSCROLL;4GetScrollPos函數獲取滾動條的位置。Int GetScrollPos(HWND hwnd,int nBar;5. GetScrollRange函數獲取滾動條的滾動范圍。BOLL GetScrollRange(HWND hwnd,int nBar,LPINT lpMinPos,LPINT lpMaxPos;535 滾動條編程示例53 靜態(tài)控件533 特點一般情況下靜態(tài)控件既不按收用戶輸入出不發(fā)出消息。應用程序可通過設置其風格使其可以響應用戶輸入,向應用程序發(fā)送消息。這時的靜態(tài)文
15、本在功能上相當于超文本。534 創(chuàng)建1創(chuàng)建靜態(tài)控件子窗口應用程序調用函數CreateWindow創(chuàng)建該類型的靜態(tài)控件。CreateWindow(“STATIC”, /預定義窗口類名lpszStaticTitle, /靜態(tài)控件標題(文本或位圖WS_CHILD|WS_VISIBLE|WS_BORDER|,/風格X,Y, /靜態(tài)控件起始點坐標nWidth,nHeight,/ 靜態(tài)控件的寬度與高度hwndParent, / 擁有該靜態(tài)控件的窗口句柄ID, /靜態(tài)控件標識hInstance, / 應用程序當前實例句柄NULL /無附加信息靜態(tài)控件的風格及說明風格說明SS_LEFT左對齊文本SS_RIGH
16、T右對齊文本SS_CENTER文本居中SS_ICON包含圖標SS_BITMAP包含位圖SS_CENTERIMAGE位圖居中SS_NOTIFY當用戶在靜態(tài)控件中單擊時,強制發(fā)出消息SS_USERITEM用戶定義2作為對話框控件靜態(tài)控件作為對話框控件時,其創(chuàng)建過程在對話框的定義中完成。Static-Type Title ID,X,Y,nWidth,nHeight,style5.4.3 發(fā)送靜態(tài)控件強制消息SS_NOTIFY風格允許靜態(tài)控件向其父窗口發(fā)送WM_COMMAND消息,該消息的wParam 參數的低字節(jié)中包含靜態(tài)控件的標識值(ID),高字節(jié)中包含通知碼,lParam參數中包含靜態(tài)控件的句柄
17、。靜態(tài)控件使用的通知碼及說明通知碼說明STN_CLICKED單擊靜態(tài)控件STN_DBLCLK雙擊靜態(tài)控件STN_ENABLE激活靜態(tài)控件STN_DISABLE禁止靜態(tài)控件5.4.4 示例5.5 列表框5.5.1 功能與特點1 與按鈕控件相比列表框可容納更多的選項(使用滾動條)2 單擊其中的某一項時,該 項的顏色變化;再次單擊后恢復為非選擇狀態(tài)。此外,列表框可設置為單選與多選,使用范圍廣泛。552 創(chuàng)建1創(chuàng)建列表框子窗口控件應用程序調用函數CreateWindow創(chuàng)建該類型的列表框。CreateWindow(“LISTBOX”, /預定義窗口類名NULL, /列表框一般無標題WS_CHILD|W
18、S_VISIBLE|,/風格X,Y, /列表框的起始點坐標nWidth,nHeight,/ 列表框的寬度與高度hwndParent, / 擁有該列表框的窗口句柄ID, /列表框標識hInstance, / 應用程序當前實例句柄NULL /無附加信息列表框的風格及說明風格說明LBS_NOTIFY可向父窗口發(fā)送消息LBS_SORT按字母順序排列列表項LBS_MULTIPLESEL多選列表框LBS_EXTENDEDSEL擴展多選列表框LBS_NOREDRAW列表框改變時不重畫LBS_STANDARD標準風格其中LBS_STANDARD代表列表框最常用的風格組合:WS_BORDER|WS_VSCROL
19、L|LBS_SORT|LBS_NOTIFY2創(chuàng)建作為對話框控件的列表框該類型列表框的創(chuàng)建在應用程序中對話框的定義中完成。LISTBOX ID,X,Y,nWidth,nHeight,style553 列表框和應用程序間傳遞消息應用程序創(chuàng)建列表框控件后,可通過接收控件發(fā)出的消息得知用戶請求,并通過向列表框發(fā)送消息對其進行操作。1列表框向應用程序發(fā)送消息當用戶與列表框交互時,列表框向其父窗口發(fā)送WM_COMMAND消息,該消息的wParam 參數的高字節(jié)標識列表框動作的消息通知碼(如LBN_DBLCLK標識用戶雙擊);低字節(jié)為窗口句柄。2應用程序向列表框發(fā)送消息應用程序通過調用SendMessage
20、或SendDlgItemMessage發(fā)送消息操作列表框。應用程序向列表框發(fā)送消息時應注意:(1)使用索引號應用程序通過列表框中項的索引值操作指定項,其中第一項的缺省索引號為0,最后一項的索引號為-1。例如:在列表框的第三個位置插入項的語句為:SendMessage(hwndlist,LB_INSERTSTRING,2,(LPARAM)szNewItem);應用程序還可通過向列表框發(fā)送LB_GETCURSEL消息獲取當前選中項的索引號。NIndex=SendMessage(hwndlist,LB_GETCURSEL,0,0;(2)使用多選列表框當應用設置多選列表框的風格為LBS_EXTENDE
21、DSEL和LBS_MULTIPLSEL時,用戶可在該列表框中選擇多個項。當用戶選擇列表框中的多個項時,應用程序可通過向列表框發(fā)送LB_GETSELCOUNT消息獲取選中的項數。其形式為:nCount=SendMessage(hwndlist, LB_GETSELCOUN,0,0;此外,應用程序還可向列表框發(fā)送LB_GETSEL消息獲取指定項的選中狀態(tài)。其形式為:nSelect=SendSessage(hwndlist,LB_GETSEL,nIndex,0;(3)發(fā)送LB_DIR消息列表框最常見的用法是顯示一列文件名、目錄或驅動器,這一功能由應用程序向列表框發(fā)出LB_DIR消息實現(xiàn)。該消息的字參
22、數(wParam)表示文件屬性值,長參數(lParam)表示所列文件的特征。常用的形式為:nFileNum=SendMessage(hwndlist,LB_DIR,FILE_LIST,(LPARAM”*.exe”;常用文件的屬性值及說明:數值(16進制)說明4000列出驅動器名0000列出普通文件名0001列出只讀文件名0002列出隱含文件名0004列出系統(tǒng)文件名0010列出上述文件及子目錄例如:“0x 4010”表示列出驅動器名及當前目錄的子目錄名和所有文件名。554 示例56 文本框5.6.1 功能與特點1. 自動轉換用戶輸入,如大小寫轉換等。2. 使某個字符代替顯示用戶的輸入。3. 支持
23、多行編輯等。5.6.2 創(chuàng)建1創(chuàng)建文本框子窗口控件應用程序調用函數CreateWindow創(chuàng)建該類型的文本框。CreateWindow(“EDIT”, /預定義窗口類名NULL, /文本框一般無標題WS_CHILD|WS_VISIBLE|,/風格X,Y, /文本框的起始點坐標nWidth,nHeight,/ 文本框的寬度與高度hwndParent, / 擁有該文本框的窗口句柄ID, /文本框標識hInstance, / 應用程序當前實例句柄NULL /無附加信息文本框的風格及說明風格說明ES_AUTOHSCROLL輸入超出窗口時,窗口水平滾動,該風格只能與ES_MULTILINE一起使用ES_
24、AUTOVSCROLL輸入超出窗口時,窗口垂直滾動ES_CENTER文本居中ES_LEFT文本居中左ES_RIGHT文本居中右ES_READONLY只讀文本ES_UPPERCASE大寫顯示輸入ES_LOWERCASE小寫顯示輸入ES_PASSWORD以*顯示輸入ES_MULTILINE多行文本2創(chuàng)建對話框中的文本框控件該類型文本框的創(chuàng)建在應用程序中對話框的定義中完成。EDITTEXT ID,X,Y,nWidth,nHeight,style5.6.3 文本框和應用程序間傳遞消息應用程序創(chuàng)建文本框控件后,可通過接收控件發(fā)出的消息得知用戶請求,并通過向文本框發(fā)送消息對其進行操作。1文本框向應用程序發(fā)送消息當用戶與文本框交互時,文本框向其父窗口發(fā)送WM_COMMAND消息,該消息的wParam 參數的低字節(jié)為控件標識,高字節(jié)標識文本框動作的消息通知碼。2應用程序向文本框發(fā)送消息應用程序通過調用SendMessage或SendDlgItemMessage發(fā)送消息操作文本框。564 示例57 組合框5.7.1 功能與特點在Windows編程中,使用一些控件往往不能完全滿足與用戶交互的需要,如果使用對話框包含多個控件,則各控件之間的聯(lián)系又松散,編程較為繁鎖。組合框可很好地解決這個問題。5.7.2 創(chuàng)建1創(chuàng)建獨立子窗口組合框應用程序調用函數CreateWi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 住宅裝修設計合同范例
- 專業(yè)分包施工合同范例
- 公務車服務合同范例
- 加盟中通合同范例
- PRDM1激活的PLXDC2通過JAK1-STAT3反饋調控肝細胞癌腫瘤相關巨噬細胞極化的研究
- 穿戴式心電信號智能分析方法研究
- 買抹賬房合同范例
- 儲物柜協(xié)議合同范例
- 釩鈦基MAX相的制備及其儲鋰性能研究
- 人員施工安全合同范例
- 曲靖市出租汽車從業(yè)資格證區(qū)域科目考試題(附答案)
- 2025年安徽城市管理職業(yè)學院單招職業(yè)技能考試題庫匯編
- 2025年湖南國防工業(yè)職業(yè)技術學院單招職業(yè)傾向性測試題庫及參考答案
- 2025年湖南水利水電職業(yè)技術學院單招職業(yè)技能測試題庫附答案
- 2025年河南建筑職業(yè)技術學院單招職業(yè)技能測試題庫審定版
- 2025年湖南食品藥品職業(yè)學院單招職業(yè)傾向性測試題庫參考答案
- 2025年湖南水利水電職業(yè)技術學院單招職業(yè)適應性測試題庫1套
- 2025年家政服務策劃免責聲明協(xié)議
- 2025新人教版語文七年級下冊《第四單元》大單元整體教學設計2022課標
- 2024人工智能大模型技術財務應用藍皮書
- DB51T 2572-2019 干旱河谷造林技術規(guī)程
評論
0/150
提交評論