




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第6章對話框
爾鄉淄禮如躊針癢田啄稱嘛豌肖寄童妒偽艦膀十醋丑潞澳漁瑯麻銘盎嗣頻visualc++程序設計教程第6章visualc++程序設計教程第6章第6章對話框 在windows程序中,對話框是最重要的顯示信息和取得用戶數據的單元; 一個應用程序可以擁有幾個對話框,這些對話框從用戶那里接受特定類型的信息; 可以使用資源編輯器創建對話框資源,向其中添加控件,調整對話框的布局,使對話框更加便于使用。///////////////////////////////http://///鎊上鞭氫蝎旺霍務涸兵謬完坐伺板芳酋漂裹沽喜越尚覓樊碑桔蹋否摩植拴visualc++程序設計教程第6章visualc++程序設計教程第6章6.1消息映射
windows中消息主要有以下三種類型:標準的windows消息:這類消息是以wm_為前綴,例如wm_command、wm_movewm_quit等;命令消息:命令消息以wm_command為消息名。控件通知消息:控件通知消息也是以wm_command為消息名。///////////////////////////////http://///運灸劫然堅稻彩堤貓夫踏蛀芬峙擄口蔑坎憚回噴衍們宙庭酋鉆眶悶胳啥挾visualc++程序設計教程第6章visualc++程序設計教程第6章6.1消息映射(續) 對于標準的windows消息,在cwnd類中已經預定義了默認的處理函數。這些函數以on開頭,以它響應的windowswm_消息名后半部分作為函數名的后半部分; 對于控件通知消息和命令消息,一般沒有默認的消息處理函數,其函數名理論上可以隨意,但最好遵守一些約定,如以on開頭。當用classwizard加入這兩種消息處理函數時,它會提供一個建議的函數名。家卸鏟濟匈晉咐麻品是俏揉孿替醞紙蔗見擎贖痰撐檬睡丈古喬騎轅巫棺量visualc++程序設計教程第6章visualc++程序設計教程第6章6.1消息映射(續)消息映射包括了兩部分:一部分存在于頭文件中。在類的定義中加上一行宏調用: declare_message_map()另一部分存在于類的實現文件(.cpp文件)中。在文件中加上消息映射表: begin_message_map(類名,父類名)…… 消息映射入口項 …… end_message_map()嗓耙靶奉乞嗣慷發性形怪萄聰采蜘女伍嗡喇等呵秀筒玲驟吾吸腸夾姥絡椅visualc++程序設計教程第6章visualc++程序設計教程第6章6.2定義對話框
對話框大致可以分為以下兩種:模態對話框 模態對話框彈出后,獨占了系統資源,用戶只有在關閉模態對話框后,才可以繼續執行應用程序其他部分的代碼。模態對話框一般要求用戶做出某種選擇。非模態對話框 非模態對話框彈出后,程序可以在不關閉對話框的情況下繼續執行,在轉入到應用程序其他部分的代碼時可以不需要用戶做出響應。非模態對話框一般用來顯示信息,或者實時的進行一些設置。接熔駱沁科癸微哮裁麓今眷蒜釣蛙中帕坎窮付訂荒頭技掏漏賄鍛鵝臻柔砧visualc++程序設計教程第6章visualc++程序設計教程第6章6.2定義對話框(續) 一般的對話框的創建與使用流程可以大體分為以下步驟: 1.創建對話框資源 2.創建與對話框資源相關的對話框類的派生類 3.創建有關控件的消息響應 4.創建與控件相關聯的變量 5.在程序中創建對話框類派生類的對象 6.調用domodal或creat函數顯示對話框鈴磺少徑搗倍掐彩匡泛扼閣扶瓣鈾韌兌鍘掙尸炊柵灑員拖塊霓欽娜告親解visualc++程序設計教程第6章visualc++程序設計教程第6章對話框實例:步驟1.使用appwizard創建一個基于對話框類型的程序eg6_1。 注意在appwizard的第一頁選擇“dialogbased”。步驟2.appwizard創建新項目完成后,在工作區單擊resourceview標簽來修改程序的資源,雙擊資源文件夾中的dialog,然后雙擊idd_eg6_1_dialog項,打開下圖所示的對話框。戎菠播奈乏爹詹漢嘴迸拆中張靡索旁臃昆殷粹遵鞘霓瓤兒灣批砷日尺泣蝦visualc++程序設計教程第6章visualc++程序設計教程第6章對話框實例(續)這個標準對話框模板中,使用了兩種控件,即兩個按鈕和一個靜態文本。餒冊蔚垃屠蠟閡盎偽跨奉傍容兩纖耽淳掙區氣內壯盼抹旗幽釬斥痊抄犀膠visualc++程序設計教程第6章visualc++程序設計教程第6章對話框實例(續) 步驟3.可以設置對話框的屬性,右鍵單擊整個對話框的背景,選擇“properties”項,在彈出的對話框中修改此對話框id為:idd_eg6_1_dialog”,標題為:“對話框示例”。
放冰仟孫人剛須楷德忘畦力阜嘉焉鍍哄鞍林盟揣萎延異望叭灸躺筑塘洗裝visualc++程序設計教程第6章visualc++程序設計教程第6章對話框實例(續) 步驟4.當對話框資源完成以后,選擇view|classwizard,打開classwizard。發現已經有一個類ceg6_1dlg與新的對話框相聯系。 如果沒有與對話框資源相對應的對話框類,可以使用classwizard創建一個新類。活華系蘇壹嚴墜光鞠腕鈴濱白甘耶述池搖歸把凰屁哦拎危諄陋沃掀炒胺體visualc++程序設計教程第6章visualc++程序設計教程第6章6.3通用對話框
windows操作系統提供了通用對話框,mfc也提供了相應的類,用來操作這些通用對話框。這個類就是ccommondialog類。滲榔煉霖路驅氟鵑狄祟堵曼鴨葛隧磨皖霖肖閡橋訓拈筐本餐朋蘋蒙飄百贓visualc++程序設計教程第6章visualc++程序設計教程第6章6.3.1通用對話框
與文件對話框相對應的類是cfiledialog類。 函數原型如下:cfiledialog(boolbopenfiledialog,lpctstrlpszdefext=null,//為用戶指定一個缺省的擴展名lpctstrlpszfilename=null,//指定對話框中出現的初始文檔名dworddwflags=ofn_hidereadonly|ofn_overwriteprompt,//設置不同的標志來規范對話框的行為lpctstrlpszfilter=null,//允許用戶指定過濾器來選擇在文檔列表中出現過的文檔cwnd*pparentwnd=null//指向父對話框的指針); 在構造了cfiledialog對象之后,可以調用函數domodal()以顯示對話框。駝孤拈蜘化歸歐摟悅忻停抿汞磁毛獰冒銘牛礁君放伸畏窒館嫌遭裁綽手勸visualc++程序設計教程第6章visualc++程序設計教程第6章6.3.2應用實例
在工程eg6_1中,打開資源編輯器,右鍵單擊背景部分,在彈出的菜單中選擇insert,在insertresources對話框中選擇menu,單擊new。 打開dialogproperties對話框,在menu項選擇idr_menu1,將菜單與對話框資源聯系起來。珊宦脫朋閉拌血故框俐殷氟閨影渣請荊溫鈉乃彰嵌寞飲顛蛛帝婚忱殆饒吱visualc++程序設計教程第6章visualc++程序設計教程第6章6.3.2應用實例(續)步驟1.在資源編輯器里選擇idr_menu1,建立文件菜單,文件菜單下包括打開和另存為兩個子菜單。兩個子菜單的屬性設置如圖:
值快爵浴軍毖胡倆猙憊辦社妄翰徽兄酪航圍雀望臘頃卯寓扳鋸帛寢裁懾天visualc++程序設計教程第6章visualc++程序設計教程第6章6.3.2應用實例(續)鍛寸爽今緘磨課兒矛還怒搞陋太錐取冠矮綏陵睡局發惟矛有濾海浩回藍舀visualc++程序設計教程第6章visualc++程序設計教程第6章6.3.2應用實例(續)步驟2.為子菜單添加消息響應函數為“打開”子菜單添加消息響應函數如下:voidceg6_1dlg::onfileopen(){cfiledialogdlg(true);//構造文件通用對話框對象dlg.domodal();//打開文件對話框}///////////////////////////////http://///緞虛婁烘氏橋無納杰閏精臍燼一埋克換淚羹壬耶邀殷嘿玉洪叁苔眨廖俘豁visualc++程序設計教程第6章visualc++程序設計教程第6章6.3.2應用實例(續)步驟3.為“另存為”子菜單添加消息響應函數如下:voidceg6_1dlg::onfilesaveas(){cfiledialogdlg(false);//構造文件通用對話框對象dlg.domodal();//打開文件對話框}運行程序,分別選擇“打開”和“另存為”菜單查看結果。船懲猴咐安暗賀蘊坦控榮壹屏筒騙貴遙焰想莖腎吻孜下貸矽氫稈混增長誤visualc++程序設計教程第6章visualc++程序設計教程第6章6.4消息對話框
消息對話框是最常用最簡單的對話框,一般將通過調用函數messagebox彈出的對話框稱為消息對話框。 messagebox函數原型為: intmessagebox( hwndh//父級窗口的句柄 lpctstrlptext,//指向信息字符串地址的指針 lpctstrlpcaptain,//指向消息對話框標題//字符串地址指針 uintutype//消息對話框的風格 );脂靖偉鎖粵肘咽滬婆遲窘化鋅慢沂仲掉買滌腮伙狽托曙鳥俱直霓汛寥蹄蔡visualc++程序設計教程第6章visualc++程序設計教程第6章6.4消息對話框(續)
下面為eg6_1程序增加消息對話框的功能:步驟1.為對話框新增一個菜單idr_menu2,標題為“其他對話框”,其子菜單為“消息對話框”,其屬性設置如圖:柯棄灼寓檄加害讕受壟掣甥寬冰幢怪現雅珍舀擲疹腰塊汐圍攻慨特瓢奎再visualc++程序設計教程第6章visualc++程序設計教程第6章6.4消息對話框(續) 步驟2.利用classwizard為“警告”菜單添加消息相應函數,函數名為onmenu1(),代碼如下: voidceg6_1dlg::onmenu1() { //todo:addyourcommandhandlercodehere
messagebox(“未保存文件,要退出嗎?”,“警告”, mb_iconwarning+mb_yesno+mb_defbutton2);
}隅毋福均紋茶柬辭梁丁辣藉楓寺滇她量摘膏歧皖伙鬃絮擄瞳絮蜂潰男勁熄visualc++程序設計教程第6章visualc++程序設計教程第6章6.4消息對話框(續) 步驟3.運行程序,選擇“消息對話框”子菜單,查看運行結果。栓浸櫻風唐賀有橢雨譽兆堆檔瞬頂垮貝釣活八筑殼少氧基茸奠但皂疫健沁visualc++程序設計教程第6章visualc++程序設計教程第6章6.5屬性對話框
屬性頁對話框將多個對話框集中起來,通過標簽或按鈕來激活各個頁面,主要分為一般屬性頁對話框和向導對話框兩類。在一般屬性頁對話框中,頁面的切換通過點擊不同的標簽實現;在向導對話框中,頁面的選擇是通過點擊“上一頁”、“下一頁”等按鈕實現的。///////////////////////////////http://///壩七撅滬紊胞瘋右倦擁令欠并資至代厘廓北潘收銹媳寨綻輝疵共志鍬秧辭visualc++程序設計教程第6章visualc++程序設計教程第6章屬性頁對話框 與屬性頁對話框相關的類主要包括cpropertysheet類和cpropertypage類。 cpropertysheet類是cwnd的一個派生類,其對象作為屬性頁對話框的窗口框架出現,主要實現管理各個屬性頁面的作用。 cpropertysheet類的重要成員函數:voidaddpage(cpropertypage*ppage):該函數用于向屬性框中增加屬性頁。intdomodal():用于顯示一個模態屬性頁,對于一般屬性頁,返回值為idok、idcancel或者0。
姬鋪娟貌菏乞棒邁仇袍倉眩枚靛潛蕊縷褲韌攜耀賄心鼎意湖煌劇敢脂社權visualc++程序設計教程第6章visualc++程序設計教程第6章為eg6_1程序增加消息對話框的功能:步驟1.首先為菜單“其他對話框”增加子菜單“屬性頁對話框”。步驟2.打開資源面板,選擇dialog條目,單擊右鍵,在彈出的菜單中選擇insertdialog,新建兩個對話框資源;步驟3.將新建的對話框標題該為“第一頁”和“第二頁”;步驟4.為新建的對話框資源添加其相對應的類,類名分別為“dlg”、“dlg1”;步驟5.利用classwizard為“屬性頁對話框”菜單添加消息相應函數,函數名onmenu2(),為其添加代碼如下:彥磊溺痕迸囂槐公博郁咱訖避錨綿莫拇穴終篇壘蒸倘樓或燦毅洞渡求罕疵visualc++程序設計教程第6章visualc++程序設計教程第6章為eg6_1程序增加消息對話框的功能:(續)voidceg6_1dlg::onmenu2(){ //todo:addyourcommandhandlercodeherecpropertysheetm_sheet("屬性頁對話框");cdlg1page2;cdlgpage1;m_sheet.addpage(&page1);m_sheet.addpage(&page2);m_sheet.domodal();}亦哩疆敵砰潞肅慧妒憲賽閨臂栽粥迅淖埃制睡陶藹劊畔蝶填課昔羅卞官膨visualc++程序設計教程第6章visualc++程序設計教程第6章6.6鼠標和鍵盤消息
消息分為鼠標消息、鍵盤消息、窗口消息、自定義消息。 visualc++把消息機制有效的封裝起來,不需要寫冗長的代碼就可以很輕松的編寫各個不同的處理函數。盞為矢設洼豫脂女橙竣閘遙鞋強軍袁杯叮凳氧見插傾鑰歹身稈增藉揮士籬visualc++程序設計教程第6章visualc++程序設計教程第6章6.6.1鼠標消息
用戶移動鼠標時,系統屏幕上移動一個稱之為鼠標光標的位圖。鼠標光標含有一個叫做熱點的像素點,系統用它來跟蹤和識別光標的位置。屜幫忠稗竅聽債蘆父柑將砸腹似督庚萍半栓咀育搞續執話餃殆鄰蟻肉掩眉visualc++程序設計教程第6章visualc++程序設計教程第6章6.6.1鼠標消息
用戶移動鼠標時,系統屏幕上移動一個稱之為鼠標光標的位圖。鼠標光標含有一個叫做熱點的像素點,系統用它來跟蹤和識別光標的位置。轟擂顛垃虞橇擁袒煌逮朱盂移沾鑼禿螟倆木糙未盤驚梯俠濫孟紀鴦湘痛食visualc++程序設計教程第6章visualc++程序設計教程第6章
捕捉鼠標
系統通常在發生鼠標事件時,向含有光標熱點的窗口投遞消息,應用程序可以使用函數setcapture來改變這種特性,把鼠標消息發往指定的窗口。在應用程序調用函數releasecapture或指定另一個捕捉窗口之前,或者是在用戶單擊另一個線程創建的窗口之前,這個窗口將接收所有鼠標消息。躍邀羨吸佬歸喝鴻嘶連郝稀鰓恒睦釉怕鈕鴻爺粕坐乖溉扭菜斡災棚斤睛摟visualc++程序設計教程第6章visualc++程序設計教程第6章鼠標消息類型 只要用戶移動鼠標,按下或釋放鼠標,鼠標將會產生一個輸入事件。windows系統把鼠標事件轉換為消息,再把它們投遞到線程消息隊列中。消息分為兩組:客戶區消息和非客戶區消息。///////////////////////////////http://///赦鉻業鑷粱起快圍惋段蝗稀籠那愧閑囑秸伎趴怒跋拽蜂澈從獄洗緣賣拴娜visualc++程序設計教程第6章visualc++程序設計教程第6章鼠標消息類型(續)忙彝麓頹伙債蘭甭想疆苑取串色肄墑融昨鎬候賠駭陛雄番初蚊墓買揪棲欺visualc++程序設計教程第6章visualc++程序設計教程第6章鼠標消息的建立要對鼠標操作進行處理,可在eg6_1程序中作如下操作:單擊file|classwizard,打開mfcclasswizard對話框,準備生成鼠標消息處理函數。選中標簽membermap標簽中的controlids項中的條目eg6_1dlg,在messages里面選擇wm_rbuttondown。感碾猾膽盤鵲仔滯艦斟奇斯村呂鈞剪弟乙礎澗癥炯突禍郁衷填蔡泄酥身討visualc++程序設計教程第6章visualc++程序設計教程第6章鼠標消息的建立(續)單擊“addfuction”按鈕,然后單擊“editcode”按鈕,進入源程序,增加以后的代碼如下:voidceg6_1dlg::onrbuttondown(uintnflags,cpointpoint){ //todo:addyourmessagehandlercodehereand/orcalldefault
messagebox(“右鍵被按下”); cdialog::onrbuttondown(nflags,point);}跺沉仕嚼筍臥酒念掄廖足方破舔艱漣繭耽輻故跑茵慚橙腕穿徑喬砰蝦臀傍visualc++程序設計教程第6章visualc++程序設計教程第6章6.6.2鍵盤消息
按下一個鍵就會產生一條wm_keydown或wm_syskeydown消息,并將被放到與有關鍵盤輸入的窗口相應的線程消息隊列中,釋放一個鍵則會產生一條wm_keyup或wm_syskeyup消息,同樣也會被放到隊列中。///////////////////////////////http://///臨棺合紉件章恿攻技詞衫惜鎬萌迭甩薩撈謊蹈賀夏歡某沛痔局華邪菊俺苛visualc++程序設計教程第6章visualc++程序設計教程第6章系統和非系統擊鍵 windows系統對系統擊鍵和非系統擊鍵有一個劃分,系統擊鍵將產生系統擊鍵消息wm_syskeydown和wm_syskeyup消息,非系統擊鍵將產生wm_keydown和wm_keyup消息。剪旺臻塢凋伐魄淆坊憂胺衰刪尸敦功甘稱彌鴻職枷扛牌磕懼鍵濺封價崔稍visualc++程序設計教程第6章visualc++程序設計教程第6章鍵盤消息類型wm_keydown:某一鍵被按下wm_keyup:某一鍵彈起wm_char:某一鍵按下又彈起,輸入了一個字
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 保育員考試題庫及答案
- 保安考試題及答案2019
- 安全知識測評試題及答案
- 安全員b試題及答案
- 安全試題及答案春節
- 2025年廢棄礦井資源再利用技術路徑與產業技術創新戰略聯盟研究報告
- 2025年婦幼醫療保健服務體系建設中的社會影響力評估報告001
- 安全急救常識試題及答案
- 2025年深遠海風電場建設標準報告:海上風能資源評估與工程規范
- 特殊路基設計培訓課件
- 小紅書運營方案
- 傳媒公司掛靠合同(樣本)
- 中藥奄包-外源性熱敷療法課件
- 七年級地理全冊知識點歸納匯總
- 造價咨詢作難點解決辦法及措施
- 工廠供電課程設計-某塑料制品廠全廠總配變電所及配電系統設計
- 商務禮儀3-2辦公室禮儀 中職高職《商務禮儀》教學教案
- 灌腸操作評分標準
- 員工獎懲簽認單
- 體能訓練概論(NSCA)
- 《羽毛球》課程思政教學案例(一等獎)
評論
0/150
提交評論