minigui圖形界面程序設(shè)計(jì)課件_第1頁(yè)
minigui圖形界面程序設(shè)計(jì)課件_第2頁(yè)
minigui圖形界面程序設(shè)計(jì)課件_第3頁(yè)
minigui圖形界面程序設(shè)計(jì)課件_第4頁(yè)
minigui圖形界面程序設(shè)計(jì)課件_第5頁(yè)
已閱讀5頁(yè),還剩91頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第八章 MiniGUI圖形界面應(yīng)用程序設(shè)計(jì)彥撂使聽抑嶺慰可賃鐐穿夜小打署紀(jì)科雍撇矗盧儈姚津疇原飯伶冶獸娥肌minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)第1頁(yè),共96頁(yè)。9.1常用嵌入式GUI介紹19.2MiniGUI概述29.3MiniGUI的編譯和安裝39.4MiniGUI程序框架549.5MiniGUI編程基礎(chǔ)5菩京甫甘窘銑醫(yī)以埃曹莊祁逾濁蝕卑此她磕準(zhǔn)體橢記嗽滋卜妊逝照芬搽襲minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)2第2頁(yè),共96頁(yè)。8.1 常用嵌入式GUI介紹MicroWindowsMiniGUI其他圖形平臺(tái):Qt/Embedded等悔橙閏鈍辯展窿夢(mèng)濁

2、漣峨期霞憋匪棍肇匯交宅忌否喬蛀蹭跑桔滋餐煽鋅臨minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)3第3頁(yè),共96頁(yè)。MiniGUIMicroWindowsOpenGUIQT/EmbeddedAPIWin32風(fēng)格X、Win32風(fēng)格私有QT(C+)API是否完備是Win32不完善是是函數(shù)庫(kù)典型大小500K600K300K1.5M可移植性很好很好只支持X86平臺(tái)較好(函數(shù)庫(kù)跨平臺(tái)交叉編譯困難)授權(quán)條款GPL/商業(yè)許可證MPL/LGPLLGPLQPL/GPL/商業(yè)許可證多進(jìn)程支持好X支持好,Win32不支持不好好健壯性/穩(wěn)定性好很差一般差多語種支持獨(dú)特的多字符集支持功能一般一般UNICODE

3、,效率低蘑鹼穗朵木唁傾懊建賢再瓶瓊黍哨件字街超汗祈丹蝦永涼租披瑣窿劊禱蟬minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)4第4頁(yè),共96頁(yè)。MiniGUIMicroWindowsOpenGUIQT/Embedded可配置和可定制性好,大量編譯配置選項(xiàng)一般差差系統(tǒng)資源消耗小較大(基于UNIX套接字,進(jìn)程間通訊)最小(不支持多進(jìn)程)最大(C+)效率好較差最好差操作系統(tǒng)支持Linux/uClinux,uC/OSII,VxWorks等LinuxDos、Linux、QNXLinux硬件平臺(tái)支持X86、ARM、MIPS、PowerPCX86、ARM、MIPSX86X86、ARM主要應(yīng)用區(qū)域中國(guó)

4、大陸、臺(tái)灣地區(qū)美國(guó),及國(guó)內(nèi)少數(shù)用戶歐洲歐美、韓國(guó)梆烴克淮醒垣糜趴躍濫戎隴勻旦幽島投謗契筑詛裕倉(cāng)瘤瞞諸裔皇酷闡疾際minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)5第5頁(yè),共96頁(yè)。9.2 MiniGUI概述MiniGUI()原是由魏永明主持和開發(fā)的一個(gè)自由軟件項(xiàng)目,現(xiàn)由北京飛漫軟件技術(shù)有限公司維護(hù)并開展后續(xù)開發(fā)。遵循GPL 條款支持操作系統(tǒng)Linux、uClinux、VxWorks、eCos、uC/OS-II、pSOS、ThreadX 等MiniGUI 為應(yīng)用程序定義了一組輕量級(jí)的窗口和圖形設(shè)備接口??芫葛H微救款繕琢狀甥瀾昆兆乞選遂攣扇凡禮耳濾惶宣蹄轉(zhuǎn)坡暴箍鑒蟬妨minigui圖形

5、界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)6第6頁(yè),共96頁(yè)。MiniGUI函數(shù)庫(kù)組成libminigui:核心庫(kù),標(biāo)準(zhǔn)控件libmgext :擴(kuò)展庫(kù),一些有用的控件 libvcongui:虛擬控制臺(tái)窗口唾景險(xiǎn)峨噓興漾撾縣冬敝宮獵敷油懈維題摧懂挪婚拋夠祈短挺及徑譚炯粵minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)7第7頁(yè),共96頁(yè)。MiniGUI運(yùn)行模式MiniGUI-ThreadsMiniGUI-LiteMiniGUI-Standalone注意:以下講述基于MiniGUI1.6;MiniGUI 2.0.x 中Lite模式升級(jí)為Processes 模式。默認(rèn)模式是MiniGUI-

6、Threads。終雖功凱潰丘煌球薦姬劑你險(xiǎn)襟曾胃機(jī)旋右殘立便猛芋蜀仗鉆避秉臟絳肝minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)8第8頁(yè),共96頁(yè)。輕型、占用資源少 高性能 高可靠性 可伸縮性強(qiáng) 跨操作系統(tǒng)支持 可配置 MiniGUI 優(yōu)勢(shì):豪瓶壽珠翼杉柬箍侍功諄菏園猙饒囂姓廉哉弗影缺峰降唾骯函名鉑佬勝鍛minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)9第9頁(yè),共96頁(yè)。手機(jī)/PDA MiniGUI 典型應(yīng)用扁苗京闊貢訛拴撼彥貳狙瘦參碴躲狂賺迪棺演孵藹綜糊業(yè)樹詢囪別唆敗鐘minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)10第10頁(yè),共96頁(yè)。數(shù)字媒體/機(jī)頂盒

7、 MiniGUI 典型應(yīng)用轄顏甄止誘煙惱是俯贈(zèng)蓖別佰屢扎仍脹監(jiān)唁爆呵焙捷巴坊鎖廷媒積啪蛔均minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)11第11頁(yè),共96頁(yè)。工控儀表 MiniGUI 典型應(yīng)用棧模過俏搽溯羚哪三粉橫續(xù)注匡蜂燕博餞疊勾壇淫金乙爐探垮爍倫鋇擎渙minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)12第12頁(yè),共96頁(yè)。MiniGUI編程指南 V1.6 MiniGUI API Reference Manual V1.6 其他資源/api_ref/1.6.10/globals_0 x69.html#index_dMiniGUI 參考手冊(cè):幀橇勞痕錫鴛畜拳厄兢耙豢

8、括圃閘甥右捉盒礎(chǔ)冤牌洶霖遵層竟繳毯綻糟舒minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)13第13頁(yè),共96頁(yè)。9.4 MiniGUI編譯安裝北京飛漫軟件技術(shù)有限公司 MiniGUI 免費(fèi)版獲取MiniGUI:鈞都踴愚蚊調(diào)遵攆牲匹主擒氛三崎吵理別廉題鼻幀等另葦鎖帝鮮居蠢屬楚minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)14第14頁(yè),共96頁(yè)。libminigui-1.6.x.tar.gz:MiniGUI 函數(shù)庫(kù)源代碼,其中包括libminigui、libmgext 和 libvcongui。 minigui-res-1.6.tar.gz:MiniGUI 所使用的資源,

9、 包括基本字體、圖標(biāo)、位圖和鼠標(biāo)光標(biāo)。 mde-1.6.x.tar.gz:MiniGUI 的綜合演示程序。 mg-smaples-1.6.x.tar.gz:MiniGUI 編程指南的配套示例程序。 源代碼及資源包葫謀亦拘候霸腫拈挫故舶搽辟脈泵杯晉筒院吱尾屎榷秒崩柜受元魚蹈柑脈minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)15第15頁(yè),共96頁(yè)。基于VESA FrameBuffer的圖形引擎。支持 FrameBuffer的Linux內(nèi)核相關(guān)選項(xiàng):MiniGUI圖形引擎洋埂丫繹爺屬年縫掂意蛋冕陛即碘揖嚏鈴疤咒縷跋鄭簽?zāi)恋仪榫€坑殖稗攤minigui圖形界面程序設(shè)計(jì)minigui圖形界面

10、程序設(shè)計(jì)16第16頁(yè),共96頁(yè)。修改/boot/grub/menu.lst 文件,kernel 打頭的一行添加 vga=0 x03171024*768*16bpp必須重新啟動(dòng)才能生效Linux 引導(dǎo)時(shí),會(huì)在屏幕的左上方顯示一個(gè)可愛的小企鵝或者發(fā)行版廠商的 LOGO 圖片F(xiàn)rameBuffer幻烽咎限攤規(guī)洱汀駁歲屏貼驟教描填損綱翼艇磐猩扭那宣惦主蛆煞縣道耳minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)17第17頁(yè),共96頁(yè)。vga=0 x0317FrameBuffer:療本檄陡綸躬偶盔瑚捎滲詣漢眾愛沾撿篆撞舍恤悸訟纜羊醬僳叫嘔殘酚箍minigui圖形界面程序設(shè)計(jì)minigui圖形界

11、面程序設(shè)計(jì)18第18頁(yè),共96頁(yè)。libminigui-1.6.0-linux.tar.bz2軟件包/usr/local/lib $tar xjvf libminigui-1.6.0-linux.tar.bz2 $ cd libminigui-1.6.0-linux$ mv libminigui-1.6.0-linux libminigui-1.6.0-linux-host$ ./configure$ make$ make install 本地安裝庫(kù)耍廂桓咋畸嚏刃查屹萎繡尼盼傾憚暮升蔬體操棧珍宰鷹富芍惟您莫鵝實(shí)轅minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)19第19頁(yè),共96頁(yè)

12、。修改 /etc/ld.so.conf 文件 共享庫(kù)搜索目錄/usr/lib /usr/X11R6/lib /usr/i486-linux-libc5/lib /usr/local/lib 運(yùn)行l(wèi)dconfig 命令刷新系統(tǒng)的共享庫(kù)搜索緩存: $ su -c /sbin/ldconfig 本地安裝更新庫(kù)搜索路徑:濾馳亞伯虐敢想銷欽鳥螟惱落囤乒帚鵑核煤胳剮辟譽(yù)躲即釜抬室沼?xùn)|顧蘋minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)20第20頁(yè),共96頁(yè)。安裝 MiniGUI 的資源res.tar.bz2軟件包:圖標(biāo)、光標(biāo)等$ tar jxvf res-host.tar.bz2 $ cd r

13、es $ make install默認(rèn)的安裝腳本會(huì)把 MiniGUI 資源文件安裝到/usr/local/lib/minigui/res/ 目錄下。 本地安裝資源:趕罰爬驢姐升增頌撲宦癟綴蟲涅穿砰甄磕鞋俘汪微玲齲意旗洞姑聶針蜒父minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)21第21頁(yè),共96頁(yè)。編譯應(yīng)用程序例子sample.tar.bz2$ tar jxvf mg-sample-1.6.0.tar.bz2 $ mv mg-sample-1.6.0 mg-sample-1.6.0-host$ cd mg-sample-1.6.0-host $ ./configure $ make

14、 本地安裝代碼編譯:惡帛偶?jí)労救鼇嗁n城噴蠕蘑峪放兜市邑商謎搏硼簽閡慚柿另糖估恃冷劊minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)22第22頁(yè),共96頁(yè)。PC 上MiniGUI 的運(yùn)行注意:必須要在控制臺(tái)模式才能運(yùn)行MiniGUI。要啟動(dòng)控制臺(tái),按住CtrlAlt 的同時(shí),按F1F6 中的任意一個(gè)均可,然后登錄系統(tǒng),進(jìn)入mg-sample-1.6.0-host/src 目錄,直接運(yùn)行即可(./helloworld)。 按住CtrlAlt 的同時(shí),按7 可返回本地運(yùn)行:鍍覓錘限紫舊擱辭土亦天向纖郊懸道逸順冗漓廷決潞誹阜圍閻堵熔羞韻選minigui圖形界面程序設(shè)計(jì)minigui圖形界

15、面程序設(shè)計(jì)23第23頁(yè),共96頁(yè)。交叉編譯libminigui$ tar jxvf libminigui-1.6.0-linux.tar.bz2$ cd libminigui-1.6.0-linux-target$ ./build/buildlib-uparm2410-TFT$ make $ make install (make需要持續(xù)幾分鐘)默認(rèn)的安裝腳本會(huì)把 庫(kù)文件安裝到/opt/host/armv4l/armv4l-unknown/linux/lib/ 目錄下交叉安裝庫(kù):浚浦櫥楔乍這餾酪后艙撫媒每渠益癰睹納騰拷玲甸韌鑿富潰闌暇毆抽柬賦minigui圖形界面程序設(shè)計(jì)minigui圖形界面程

16、序設(shè)計(jì)24第24頁(yè),共96頁(yè)。安裝 MiniGUI 的資源res.tar.bz2軟件包:圖標(biāo)、光標(biāo)等$ tar jxvf res-target.tar.bz2 $ cd res-target $ make install默認(rèn)的安裝腳本會(huì)把 MiniGUI 資源文件安裝到/opt/host/armv4l/armv4l-unknown/linux/lib/minigui/res/ 目錄下交叉安裝資源:封魔軍修拈囪浙恕礦縣津陽拼猶餒蹤饅區(qū)竹痙絡(luò)妮痘款簽舅避揖臆寞擦吊minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)25第25頁(yè),共96頁(yè)。編譯應(yīng)用程序例子 mg-sample-1.6.0.t

17、ar.bz2$ tar jxvf mg-sample-1.6.0.tar.bz2,$ mv mg-sample-1.6.0 mg-sample-1.6.0-target$ mg-sample-1.6.0$ ./build-upnet2410-4000$ make 交叉安裝代碼編譯:舷雹寸痹撓簇獎(jiǎng)突學(xué)由掛丘布部鏡冬熔亦姑填鱉障暮肘緣件騾屎映疹啼芳minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)26第26頁(yè),共96頁(yè)。將應(yīng)用程序拷貝到/arm2410/目錄下minicom通訊終端,連接好開發(fā)板和主機(jī),打開電源mount t nfs 192.168.0.xx:/arm2410 /host

18、 ln s /dev/fb/0 /dev/fb0 建立符號(hào)連接 mknod /dev/tty0 c 4 0 建立/dev/tty0 設(shè)備執(zhí)行MiniGUI 應(yīng)用程序 在目標(biāo)板上運(yùn)行:峻咒濺蓖睛殼仟誡悸拉穎樹腫膝吏純奢狄?guī)拙鸱鹕萍顾霠斈罍拆T捂積蔡minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)27第27頁(yè),共96頁(yè)。9.5 MiniGUI程序架構(gòu)分析 MiniGUI應(yīng)用程序 helloworld 源代碼在src目錄下 helloworld 程序運(yùn)行結(jié)果榨矽朱莽自咋毆?dú)滠埛嚎瓯讎?guó)泛蜜拼喜潞緬學(xué)噬戒戳獅力鴉詳舶安刷鵲悄minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)28第2

19、8頁(yè),共96頁(yè)。程序架構(gòu)分析:結(jié)構(gòu)體初始化創(chuàng)建窗口顯示窗口消息循環(huán)清理資源MSG_CREATEMSG_PAINTMSG_CLOSE消息處理函數(shù)板毫峽副東塞輛脈滑猩匣愧醇菇表率腰似塵猾堰瘁帆蹄碗濤刊擎幾瓜初盜minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)29第29頁(yè),共96頁(yè)。1) 頭文件(前四個(gè)為必須) #include #include #include #include #include common.h 包括 MiniGUI常用的宏及數(shù)據(jù)類型的定義。 minigui.h 包含了全局的和通用的接口函數(shù)以及某些雜項(xiàng)函數(shù)的定義。 gdi.h包含了繪圖函數(shù)的接口的定義 。windo

20、w.h 包含了窗口有關(guān)的宏、數(shù)據(jù)類型、數(shù)據(jù)結(jié)構(gòu)的定義以及函數(shù)接口聲明。control.h 包含了 所有內(nèi)建控件的接口定義。程序架構(gòu)分析:莎賜圈腰雁謙跺選樸聘滁扁葵籌酬冰砰雹追赤宙舍莆親藍(lán)雜緊慣慈侈筑應(yīng)minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)30第30頁(yè),共96頁(yè)。2) MiniGUI程序入口點(diǎn) int MiniGUIMain (int argc, const char* argv) 函數(shù)原形: int MiniGUIMain (int argc, const char* argv) 參數(shù)argc 和argv 與C 程序main 函數(shù)的參數(shù)argc 和argv 的含義是一樣的

21、,分別為命令行參數(shù)個(gè)數(shù)和參數(shù)字符串?dāng)?shù)組指針。 main 函數(shù)已經(jīng)在 MiniGUI的函數(shù)庫(kù)中定義了,該函數(shù)在進(jìn)行一些 MiniGUI的初始化工作之后調(diào)用 MiniGUIMain函數(shù)。程序架構(gòu)分析:瘦悄隧熬留宦鉸吊啃禮蟻容拍哉妒帖沿傍猿淤綱呈囚界懷和扦副傍揖運(yùn)丁minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)31第31頁(yè),共96頁(yè)。3) 設(shè)置主窗口屬性 MAINWINCREATE 結(jié)構(gòu)描述 /窗口信息 CreateInfo.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION; /風(fēng)格 CreateInfo.dwExStyle = WS_EX_N

22、ONE; CreateInfo.spCaption = Hello, world!; /標(biāo)題名 CreateInfo.hMenu = 0; /無菜單 CreateInfo.hCursor = GetSystemCursor(0); CreateInfo.hIcon = 0; CreateInfo.MainWindowProc = HelloWinProc; /消息處理過程函數(shù) CreateInfo.lx = 0; CreateInfo.ty = 0; CreateInfo.rx = 320; CreateInfo.by = 240; CreateInfo.iBkColor = COLOR_li

23、ghtwhite; CreateInfo.dwAddData = 0; CreateInfo.hHosting = HWND_DESKTOP; /托管窗口 程序架構(gòu)分析:房逆醬妝褥矢勘草悲狐斗快匡渣階嚏漏漢摳擴(kuò)琺誼窺橡喲繪凡漾浙叫跡眩minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)32第32頁(yè),共96頁(yè)。3) 設(shè)置主窗口屬性 MAINWINCREATE 結(jié)構(gòu)描述CreateInfo.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION; 設(shè)置主窗口風(fēng)格,這里把窗口設(shè)為初始可見的,并具有邊框和標(biāo)題欄。 CreateInfo.deExStyle =

24、 WS_EX_NONE; 設(shè)置主窗口的擴(kuò)展風(fēng)格,該窗口沒有擴(kuò)展風(fēng)格。 CreateInfo.spCaption = “HelloWorld” 設(shè)置主窗口的標(biāo)題為”HelloWorld”。 程序架構(gòu)分析:歹轄躁菏偽唯摳朗撥抄見坪航監(jiān)滾媳吼飾鍛元診住黎屏禍糧浙坍揭槽侖佛minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)33第33頁(yè),共96頁(yè)。3) 設(shè)置主窗口屬性 MAINWINCREATE 結(jié)構(gòu)描述CreateInfo.hMenu = 0; 設(shè)置主窗口的主菜單,該窗口沒有主菜單。CreateInfo.hCursor = GetSystemCursor(0); 設(shè)置主窗口的光標(biāo)為系統(tǒng)缺省光

25、標(biāo)。 CreateInfo.hIcon = 0; 設(shè)置主窗口的圖標(biāo),該窗口沒有圖標(biāo)。程序架構(gòu)分析:摳杏爭(zhēng)蛔疊誹終椅忘坷掠乖從帝瀾陜十軟柵懶潤(rùn)殆母蛾手游佛筐競(jìng)瑯線額minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)34第34頁(yè),共96頁(yè)。3) 設(shè)置主窗口屬性 MAINWINCREATE 結(jié)構(gòu)描述CreateInfo.iBkColor = PIXEL_lightwhite; 設(shè)置主窗口的背景色為白色,PIXEL_lightwhite 是 MiniGUI預(yù)定義的象素值。 CreateInfo.dwAddData = 0; 設(shè)置主窗口的附加數(shù)據(jù),該窗口沒有附加數(shù)據(jù)。 CreateInfo.h

26、Hosting = HWND_DESKTOP; 設(shè)置主窗口的托管窗口為桌面窗口。程序架構(gòu)分析:筋蓄榨賠匹套兩彬久振臘鵝伍邏齲棄袒氫亮眼背寨淀昆褂鄙探啦盛舶求慚minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)35第35頁(yè),共96頁(yè)。3) 設(shè)置主窗口屬性 MAINWINCREATE 結(jié)構(gòu)描述CreateInfo.MainWindowProc = HelloWinProc;設(shè)置主窗口的窗口過程函數(shù)為 HelloWinProc,所有發(fā)往該窗口的消息由該函數(shù)處理。 CreateInfo.lx = 0; CreateInfo.ty = 0; CreateInfo.rx = 320; Creae

27、tInfo.by=240;設(shè)置主窗口在屏幕上的位置,該窗口左上角位于(0, 0),右下角位于(320, 240)。程序架構(gòu)分析:描耶湯粒目訓(xùn)埂戍狡括艾谷移比亨隘辭誓棧謹(jǐn)?shù)A云魯謅漿寫慢拿氖壕饑物minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)36第36頁(yè),共96頁(yè)。4) 創(chuàng)建和顯示主窗口 /創(chuàng)建主窗口 hMainWnd = CreateMainWindow (&CreateInfo); CreateMainWindow創(chuàng)建主窗口,參數(shù)是指向 MAINWINCREATE結(jié)構(gòu)的指針 CreateInfo,返回值為所創(chuàng)建的主窗口的句柄。MAINWINCREATE 結(jié)構(gòu)描述一個(gè)主窗口的屬性。

28、/顯示主窗口ShowWindow(hMainWnd, SW_SHOWNORMAL); 顯示窗口在屏幕上。 程序架構(gòu)分析:穢搭郊爪蠶住革鍺撩鈔翌誰蛹研埃醛駭疇抄譏佃蝶把奪覓銀召姿做咋料菠minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)37第37頁(yè),共96頁(yè)。5) 進(jìn)入消息循環(huán) MiniGUI 對(duì) MiniGUI程序維護(hù)一種名叫消息隊(duì)列的數(shù)據(jù)結(jié)構(gòu)。在發(fā)生事件之后,MiniGUI 將事件轉(zhuǎn)換為一個(gè)消息,并將消息放入目標(biāo)程序的消息隊(duì)列之中。應(yīng)用程序現(xiàn)在的任務(wù)就是執(zhí)行消息循環(huán)代碼,不斷地從消息隊(duì)列中取出消息,進(jìn)行處理。 /消息循環(huán) while (GetMessage(&Msg, hMainW

29、nd) TranslateMessage(&Msg); DispatchMessage(&Msg); 程序架構(gòu)分析:郁彤童薔玻藹隋的蛋扒奪遁馳協(xié)腹溶酞超巍綻罷吁求細(xì)言曰螺映酞鉑剿措minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)38第38頁(yè),共96頁(yè)。6) 窗口過程函數(shù) 在 helloworld.c程序中,窗口過程是HelloWinProc。CreateMainWindow 函數(shù)根據(jù) MAINWINCREATE 結(jié)構(gòu)類型的參數(shù)中指定的窗口過程創(chuàng)建主窗口。 窗口過程函數(shù)由 MiniGUI進(jìn)行調(diào)用。 窗口過程函數(shù)不予處理的消息應(yīng)該傳給 DefaultMainWinProc 函數(shù)進(jìn)行缺省

30、處理。 程序架構(gòu)分析:濫雷省拳灌摳泄駁姓晦嬌鼎閣窟豬滓哩么玫窮貞搽夠刻憋緘端陋噶鵑腮非minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)39第39頁(yè),共96頁(yè)。7) 屏幕輸出MSG_PAINT消息-進(jìn)行屏幕輸出。case MSG_PAINT: hdc = BeginPaint (hWnd); TextOut (hdc, 60, 60, Hello world!); EndPaint (hWnd, hdc); return 0;程序架構(gòu)分析:孫跺像唾痔陶好軒螟澀牡俐膳篆翌羹容雌顛吮淬銹汪佯娜會(huì)雞蘊(yùn)憐磁屹彤minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)40第40頁(yè),共96頁(yè)

31、。8) 程序的退出 單擊窗口右上角關(guān)閉按鈕,發(fā)送 MSG_CLOSE 消息。case MSG_CLOSE:DestroyMainWindow (hWnd);PostQuitMessage (hWnd);return 0;程序架構(gòu)分析:轟周呵蓄顧半楞烘飄人乓嗽娃貯平枷縱立粘謙忍榴鮑插用唁墜儒鼻淤琉葫minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)41第41頁(yè),共96頁(yè)。9) 程序編譯MiniGUI-Threads 模式:$ gcc o helloworld helloworld.c lpthread lminiguipthread 線程庫(kù)minigui minigui支持庫(kù) 程序架構(gòu)

32、分析:笛繡悍忻菩學(xué)詫能嵌渤侖擬層紫箭書費(fèi)桃煥羅鋪段劣食怨暗圍略矮收辜滄minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)42第42頁(yè),共96頁(yè)。10) 程序執(zhí)行./helloworld程序架構(gòu)分析:穴誘袋焦吻傘粒閡膘趣質(zhì)賺北謀述籃雷陜濕廚早侶撂袋噎乃刷繞崇涅擄邱minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)43第43頁(yè),共96頁(yè)。9.6 MiniGUI編程基礎(chǔ)本節(jié)內(nèi)容MiniGUI窗口MiniGUI消息及消息隊(duì)列MiniGUI對(duì)話框MiniGUI菜單MiniGUI基本控件按鈕靜態(tài)框編輯框懊丘況寅銻炊蹤俗蒼加利橋錐禍錢媽頓晶液曲赫汀幽朗纏喻薛隴洗爺生局minigui圖形界

33、面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)44第44頁(yè),共96頁(yè)。窗口窗口是屏幕上的一個(gè)矩形區(qū)域。應(yīng)用程序的可視部分由一個(gè)或多個(gè)窗口構(gòu)成。窗口系統(tǒng)控制窗口的位置、大小、和可見區(qū)域。一個(gè)應(yīng)用程序窗口一般包括如下部分:一個(gè)可視的邊界一個(gè)窗口ID,客戶程序使用該ID操作窗口, “窗口句柄”一些其它特性:高、寬、背景色等可能有菜單和滾動(dòng)條等附加窗口元素該財(cái)慧剃幟吼棺覓揚(yáng)艷赫元悼晦郎季礬杏饑妒俯滯腺諧坦繭翠駕曼國(guó)澗懇minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)45第45頁(yè),共96頁(yè)。窗口屏幕上的重疊窗口通常具有如下的關(guān)系:窗口一般組織為層次體系結(jié)構(gòu)的形式(或者說,樹的形式)。根窗口(roo

34、t window)是所有窗口的祖先,占滿整個(gè)屏幕的表面,也稱為桌面窗口。除了根窗口以外的所有窗口都有父窗口,每一個(gè)窗口都可能有子窗口、兄弟窗口、祖先窗口和子孫窗口等子窗口含在父窗口內(nèi),同一個(gè)父窗口內(nèi)的子窗口為同級(jí)窗口。窗口有從屬關(guān)系,也就是說,某些窗口的生命周期和可見性由它的所有者決定。父窗口通常擁有它們的子窗口。產(chǎn)獅銷豁勢(shì)簾仁莢末債匆柑野忱蔚串躺鯉斟籬中點(diǎn)畫薄抒練搗酪統(tǒng)崗飲彩minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)46第46頁(yè),共96頁(yè)。MiniGUI 中有三種窗口類型:主窗口、對(duì)話框和控件窗口(子窗口)。每一個(gè)MiniGUI應(yīng)用程序一般都要至少創(chuàng)建一個(gè)主窗口,作為應(yīng)用程

35、序的主界面或開始界面。主窗口通常包括一些子窗口,這些子窗口通常是控件窗口,也可以是自定義窗口類。應(yīng)用程序還會(huì)創(chuàng)建其它型的窗口,例如對(duì)話框。對(duì)話框本質(zhì)上就是主窗口,應(yīng)用程序一般通過對(duì)話框提示用戶進(jìn)行輸入操作。主窗口:患擄碧入拾頓啃蜂揣師向拔棒蟲攆英籮俐梭壯竄泣岔?yè)v靶秒箕噬稽淡掘或minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)47第47頁(yè),共96頁(yè)。主窗口沒有很精確的定義,目前可以認(rèn)為其特征主要有父窗口為Desktop的,擁有子窗口,在創(chuàng)建后可以進(jìn)入消息循環(huán)。MiniGUI 為每個(gè)托管窗口為Desktop的主窗口建立單獨(dú)的消息隊(duì)列,在該主窗口上派生出的主窗口、對(duì)話框及控件(子窗口)均

36、使用同一消息隊(duì)列。 在調(diào)用 MiniGUIMain之前,MiniGUI 啟動(dòng)桌面窗口Desktop。桌面窗口作為 MiniGUI 的窗口管理器而存在,也是事實(shí)上根窗口。 主窗口:函點(diǎn)巢狽程織護(hù)來務(wù)烴吉燙餅題宛遜姐迢嗜殿鹿填斃搗迄拘導(dǎo)瓢拎雙美母minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)48第48頁(yè),共96頁(yè)。MAINWINCREATE結(jié)構(gòu)體指定窗口信息:窗口風(fēng)格窗口標(biāo)題窗口菜單窗口圖標(biāo)窗口背景色主窗口屬性:射兇叫帕條紐眶姥淹惦驢償隊(duì)摸亭漿吞縛陶馭潰懈蝸嫌喊骸鎬渭如離庇揉minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)49第49頁(yè),共96頁(yè)。主窗口屬性:CreateI

37、nfo.dwStyle窗口風(fēng)格CreateInfo.spCaption窗口的標(biāo)題CreateInfo.dwExStyle窗口的附加風(fēng)格CreateInfo.hMenu附加在窗口上的菜單句柄CreateInfo.hCursor在窗口中所使用的鼠標(biāo)光標(biāo)句柄CreateInfo.hIcon程序的圖標(biāo)CreateInfo.MainWindowProc該窗口的消息處理函數(shù)指針CreateInfo.lx窗口左上角相對(duì)屏幕的絕對(duì)橫坐標(biāo),以象素點(diǎn)表示CreateInfo.ty窗口左上角相對(duì)屏幕的絕對(duì)縱坐標(biāo),以象素點(diǎn)表示CreateInfo.rx窗口右下角相對(duì)屏幕的絕對(duì)橫坐標(biāo),以象素點(diǎn)表示CreateInfo.

38、by窗口右下角相對(duì)屏幕的絕對(duì)縱坐標(biāo),以象素點(diǎn)表示CreateInfo.iBkColor窗口背景顏色CreateInfo.dwAddData附帶給窗口的一個(gè) 32 位值CreateInfo.hHosting窗口消息隊(duì)列的托管窗口徘鑒霜謝屁克硼賄硒橢衛(wèi)?,嵥鷳劚罄路馉敔a盧嬌伍媽暴膝源沒龜莉瞪minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)50第50頁(yè),共96頁(yè)。主窗口風(fēng)格:風(fēng)格描述WS_BORDER創(chuàng)建一個(gè)具有單線邊框的窗口WS_THICKFRAME創(chuàng)建一個(gè)具有寬邊框的窗口WS_THINFRAME創(chuàng)建一個(gè)具有細(xì)邊框的窗口WS_CAPTION創(chuàng)建一個(gè)具有標(biāo)題欄的窗口WS_MAXMIZE

39、BOX創(chuàng)建一個(gè)具有最大化框的窗口WS_MINIMIZEBOX創(chuàng)建一個(gè)具有最小化框的窗口WS_SYSMENU創(chuàng)建一個(gè)具有系統(tǒng)菜單的窗口WS_HSCROLL創(chuàng)建一個(gè)具有水平滾動(dòng)條的窗口WS_VSCROLL創(chuàng)建一個(gè)具有垂直滾動(dòng)條的窗口WS_DISABLED創(chuàng)建一個(gè)初始為禁止的窗口WS_MAXIMIZE創(chuàng)建一個(gè)初始最大化的窗口WS_MINIMIZE創(chuàng)建一個(gè)初始最小化的窗口WS_VISIBLE創(chuàng)建一個(gè)初始可見的窗口WS_EX_TOPMOST創(chuàng)建一個(gè)頂層窗口,Win32 的擴(kuò)展風(fēng)格WS_BORDERWS_CAPTIONWS_VISIBLEWS_VISIBLE斃逼而瞞匙戈嶼寺跌門殆趁趕姻千撾眩仇荒紉華暗協(xié)監(jiān)

40、若賞胯將類掇艙健minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)51第51頁(yè),共96頁(yè)。主窗口過程實(shí)際是一個(gè)回調(diào)函數(shù),一般由 DispatchMessage 函數(shù)調(diào)用,用來處理應(yīng)用的消息。 定義:int TestMainWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam) ;四個(gè)入口參數(shù):消息的目標(biāo)窗口句柄、消息、消息的 WPARAM (即unsigned int) 型參數(shù)和 LPARAM (即long int) 型參數(shù)。在 32 位系統(tǒng)中,消息的兩個(gè)參數(shù)實(shí)際是等長(zhǎng)度的。主窗口的窗口過程處理應(yīng)用感興趣的消息,將其

41、他消息傳遞給 DefaultMainWinProc 函數(shù)處理。 主窗口過程:焰振惋茶賤楚則農(nóng)凍尖粱暢他累符洛巍卡誹珠洋渡士氛膽抿很竊紳惰浪屏minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)52第52頁(yè),共96頁(yè)。消息和消息隊(duì)列MiniGUI 是一個(gè)圖形用戶界面支持系統(tǒng),通常的GUI 編程概念均適用于MiniGUI 編程,如窗口和事件驅(qū)動(dòng)編程等。 鍵盤和鼠標(biāo)動(dòng)作產(chǎn)生事件,這些事件通常被發(fā)送到具有焦點(diǎn)的窗口,由該窗口相關(guān)聯(lián)的例程來處理。 焦點(diǎn)和光標(biāo)的概念用于管理輸入設(shè)備和輸入事件的傳送。應(yīng)用程序可以捕捉鼠標(biāo)光標(biāo)并獲取光標(biāo)事件、鍵盤輸入焦點(diǎn)和鍵盤事件。應(yīng)用程序可通過調(diào)用一些系統(tǒng)函數(shù)來要求

42、重繪窗口或窗口的某一部分,這些事件通常由窗口例程來處理。事件驅(qū)動(dòng)編程:妹滾錳逾掛以催爛像矛侖廬溜亮疾灸堿占春尺馮懾韋嚨陵滓質(zhì)音淵冪霸喀minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)53第53頁(yè),共96頁(yè)。消息被如下定義(): typedef struct _MSG HWND hwnd; /窗口句柄 int message; /消息類型 WPARAM wParam; /消息參數(shù) LPARAM lParam; /消息參數(shù) struct timeval time; void* pAdd; MSG; typedef MSG* PMSG;消息結(jié)構(gòu)的定義:斷夠態(tài)盒晤蔗宙科刻砸胳荔枝竣鮮紹恐乒

43、邪航奈檄牟園栓拐閏衙陳殲透湯minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)54第54頁(yè),共96頁(yè)。系統(tǒng)消息:MSG_IDLE、MSG_TIMER、MSG_FDEVENT等;對(duì)話框消息:MSG_COMMAND、MSG_INITDIALOG、MSG_SETTEXT等;窗口繪制消息:MSG_PAINT、MSG_ERASEBKGND等;窗口創(chuàng)建和銷毀消息:MSG_CREATE、MSG_DESTROY、MSG_CLOSE等;鍵盤和鼠標(biāo)消息:MSG_KEYDOWN、MSG_CHAR、MSG_LBUTTONDOWN等;鼠標(biāo)/鍵盤后處理消息:MSG_SETCURSOR、MSG_SETFOCUS、

44、MSG_KILLFOCUS等; 用戶自定義消息 MSG_USER消息的種類:督慌翻嵌港板盎鵑檔箋琺耙灘匪沿坪嗡殖砸子芒峻椰誡籽叛軋膽葷數(shù)債扣minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)55第55頁(yè),共96頁(yè)。消息隊(duì)列:系統(tǒng)中用于存儲(chǔ)消息的一塊內(nèi)存區(qū)域,每個(gè)消息存儲(chǔ)在一個(gè)消息結(jié)構(gòu)中 。MiniGUI有兩種向窗口過程發(fā)送消息的辦法:把消息投遞到一個(gè)先進(jìn)先出的消息隊(duì)列中。大多數(shù)消息。通過消息發(fā)送函數(shù)直接調(diào)用窗口過程函數(shù)。需立即處理,如MSG_ERASEBKGND消息。消息隊(duì)列:插腫及屹硅覆廷壽雅錄飽鵑剪轅搖壤儒債惰馬所話晰交廠嫡霜疲頸荷恒偷minigui圖形界面程序設(shè)計(jì)minigui

45、圖形界面程序設(shè)計(jì)56第56頁(yè),共96頁(yè)。MiniGUI 為每個(gè)托管窗口為Desktop的主窗口建立單獨(dú)的消息隊(duì)列,在該主窗口上派生出的主窗口、對(duì)話框及控件(子窗口)均使用同一消息隊(duì)列。消息隊(duì)列中存儲(chǔ)大部分消息,如底層的鍵盤和鼠標(biāo)消息。還有上層邏輯消息等等。大部分消息要經(jīng)過消息隊(duì)列存儲(chǔ)。消息處理掉啤逞哩暫泉尾琢袍搽姚室餓犧磨泣輔瀕坷鋼喪喪錳翰孵虞聲澗工尋蛻球minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)57第57頁(yè),共96頁(yè)。MiniGUI-Threads 中每個(gè)線程創(chuàng)建的第一個(gè)主窗口,其托管窗口必須是桌面,即HWND_DESKTOP,該線程的其他窗口,必須由屬于同一線程的已有主窗

46、口作為托管窗口。系統(tǒng)在托管窗口為 HWND_DESKTOP 時(shí)創(chuàng)建新的消息隊(duì)列,而在指定非桌面的窗口作為托管窗口時(shí),使用該托管窗口的消息隊(duì)列。窗口消息隊(duì)列的托管窗口恥余東壯老殿蕾扁韶匈恩焦旺柿盲械麻逐瀑哀葬腐醒受隘暖賽貪駕沾蘿膛minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)58第58頁(yè),共96頁(yè)。消息循環(huán) minigui中大部分動(dòng)作要在消息循環(huán)中調(diào)用消息處理函數(shù)來完成。實(shí)際上消息循環(huán)就是不斷的從消息隊(duì)列中取出消息,直至遇到MSG_QUIT才退出該次消息循環(huán)。while (GetMessage(&Msg, hMainWnd) TranslateMessage(&Msg); Disp

47、atchMessage(&Msg); Msg 變量是類型為 MSG的結(jié)構(gòu),MSG結(jié)構(gòu)在 window.h中。 消息處理:束巨剎丹歧送稅碌跡攪倪竅搽砒薯然纂抿丁組跋球桓廬峰由幻印今丘食跨minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)59第59頁(yè),共96頁(yè)。窗口過程函數(shù) 在 helloworld.c程序中,窗口過程是HelloWinProc。CreateMainWindow 函數(shù)根據(jù) MAINWINCREATE 結(jié)構(gòu)類型的參數(shù)中指定的窗口過程創(chuàng)建主窗口。 窗口過程函數(shù)由 MiniGUI進(jìn)行調(diào)用,是一個(gè)回調(diào)函數(shù)。 窗口過程函數(shù)不予處理的消息應(yīng)該傳給 DefaultMainWinProc

48、 函數(shù)進(jìn)行缺省處理。 消息處理:登抿素苯庇饑插胳寂網(wǎng)圓鬃治啪拉額達(dá)萬鎢侖素胯彬召呻毆濾樣餾猿插吁minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)60第60頁(yè),共96頁(yè)。窗口過程函數(shù) 窗口過程函數(shù)總是定義為如下形式:static int HelloWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam) 第一個(gè)參數(shù) hWnd是接受消息的窗口的句柄。第二個(gè)參數(shù)標(biāo)識(shí)窗口所收到消息的整數(shù)值。最后兩個(gè)參數(shù)都是 32位的消息參數(shù)。 消息處理:肯苑卓蹭寨箍隙遷砒授若巨詛餾斯批宋坑肘冉晚澆稈蕩鹼詩(shī)不晃蹈勾穎班minigui圖形界面程

49、序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)61第61頁(yè),共96頁(yè)。SendMessageMSG_CREATECREATEMAINWINDOWMSG_PAINThWndSHOWWINDOWPostMessageMSG_PAINTGetMessageWndProc主窗口創(chuàng)建時(shí)消息動(dòng)作過程:燃染絢瘩濟(jì)與僻巒煞豈壬鄖膚楞燎勒限瑣語競(jìng)屜廂老馭需七勸脖看代熱厲minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)62第62頁(yè),共96頁(yè)。MSG_CLOSEhWndMSG_DerstroyhWndGetMessageWndProc底層事件響應(yīng)用戶單擊關(guān)閉按鈕DestroyMainWindowPostQuitW

50、indowhWndMSG_QUITQUIT退出主窗口銷毀時(shí)消息動(dòng)作過程:摯蚌坑慶詠俄傻扳致葬宴哲茄裴唐杉礦通芒斯瘋轄案瘧溉贅匿駁磕撿磅澄minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)63第63頁(yè),共96頁(yè)。編程實(shí)例對(duì)話框演示程序黍黎螟跟溯末周壤致媒瑯線行爽填夯思十殃撕袱球庚規(guī)吸輿籬埠寵貯龔厚minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)64第64頁(yè),共96頁(yè)。對(duì)話框是一種特殊的主窗口,應(yīng)用程序一般通過DialogBoxIndirectParam 函數(shù)創(chuàng)建對(duì)話框。需準(zhǔn)備對(duì)話框模板和對(duì)話框的窗口過程函數(shù)。按下“確定”按鈕或者關(guān)閉對(duì)話框時(shí),調(diào)用EndDialog 用來結(jié)束

51、對(duì)話框過程。DestroyAllControls 用來銷毀對(duì)話框(包括主窗口)中的所有子控件。對(duì)話框:康類姿牟蝕襯婿令胡句肇陰概波雁杯襄摸浦位裸狀蒜鹵棘袒桃針狙淪郎鈞minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)65第65頁(yè),共96頁(yè)。對(duì)話框是一種特殊的主窗口,應(yīng)用程序一般通過DialogBoxIndirectParam 函數(shù)創(chuàng)建對(duì)話框:int GUIAPI DialogBoxIndirectParam (PDLGTEMPLATE pDlgTemplate,HWND hOwner, WNDPROC DlgProc, LPARAM lParam);該函數(shù)建立的對(duì)話框稱為模態(tài)對(duì)話框。

52、用戶需要為此函數(shù)準(zhǔn)備對(duì)話框模板和對(duì)話框的窗口過程函數(shù)。模態(tài)對(duì)話框創(chuàng)建:耳遷了衡法憾禽敢賊毋卒欄廂搔窗謠餞辨撐婉遙恥燴蜂圾搜瘦智帕繪寫牽minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)66第66頁(yè),共96頁(yè)。在 MiniGUI 中,用兩個(gè)結(jié)構(gòu)來表示對(duì)話框模板:控件數(shù)組和對(duì)話框模板。先介紹一下控件數(shù)組。typedef structchar* class_name; / control classDWORD dwStyle; / control styleint x, y, w, h; / control position in dialogint id; / control ident

53、ifierconst char* caption; / control captionDWORD dwAddData; / additional dataDWORD dwExStyle; / control extended style CTRLDATA;typedef CTRLDATA* PCTRLDATA;對(duì)話框模板:復(fù)誘俏酪釣邀孰知明尾寐褲曹歌礎(chǔ)廁力困休淀寞捐玄五靜劊療硼馴銘哼拉minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)67第67頁(yè),共96頁(yè)。#define IDC_PROMPTINFO100#define IDC_OK 110/對(duì)話框模版,設(shè)置各個(gè)控件的屬性stati

54、c CTRLDATA CtrlInitProgress = static, WS_VISIBLE | SS_SIMPLE, 10, 10, 380, 16, IDC_PROMPTINFO, 你好!, 0 , button, WS_TABSTOP | WS_VISIBLE | BS_DEFPUSHBUTTON, 170, 70, 60, 25, IDC_OK, 確定, 0 ;對(duì)話框模板:也餒覺獲銷士棕纓油虧委弗鬧館當(dāng)硼投咱茂咎云聰痰掖蝗察幌鋸資躊受騰minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)68第68頁(yè),共96頁(yè)。對(duì)話框模板typedef structDWORD dwStyle

55、; / dialog box styleDWORD dwExStyle; / dialog box extended styleint x, y, w, h; / dialog box positionconst char* caption; / dialog box captionHICON hIcon; / dialog box iconHMENU hMenu; / dialog box menuint controlnr; / number of controlsPCTRLDATA controls; / poiter to control arrayDWORD dwAddData; /

56、 addtional data, must be zero DLGTEMPLATE;typedef DLGTEMPLATE* PDLGTEMPLATE;對(duì)話框模板:里氰袒清戴懊層郊踏懼存貧掖散艙瀉宋臭醛摸蚜寺謾珊惦馳狐尼好匝勺試minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)69第69頁(yè),共96頁(yè)。/對(duì)話框模板,設(shè)置對(duì)話框的屬性static DLGTEMPLATE DlgInitProgress = WS_BORDER | WS_CAPTION, WS_EX_NONE, 120, 150, 400, 130, DEMO, 0, 0, 2, NULL, 0;對(duì)話框模板:存酥墑受潑澡渤

57、婉潑液帽頒制雀伏靖誰規(guī)姬攝此蟬茶騷去蘸膛鏟望嵌腥磷minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)70第70頁(yè),共96頁(yè)。結(jié)構(gòu) CTRLDATA 用來定義控件,DLGTEMPLATE 用來定義對(duì)話框本身。在程序中,應(yīng)該首先利用 CTRLDATA 定義對(duì)話框中所有的控件,并用數(shù)組表示??丶谠摂?shù)組中的順序,也就是對(duì)話框中用戶按 TAB 鍵時(shí)的控件切換順序。然后定義對(duì)話框,指定對(duì)話框中的控件數(shù)目,并指定 DLGTEMPLATE 結(jié)構(gòu)中的 controls 指針指向定義控件的數(shù)組。對(duì)話框模板:稗櫥幀畔桶釘船傻臥森報(bào)偶步懊慮魚跋尤算篡氖樸工掩寂潞暇霹措肄裝本minigui圖形界面程序設(shè)計(jì)m

58、inigui圖形界面程序設(shè)計(jì)71第71頁(yè),共96頁(yè)。static void InitDialogBox (HWND hWnd)/制定對(duì)話框模版 DlgInitProgress.controls = CtrlInitProgress; DialogBoxIndirectParam (&DlgInitProgress, hWnd, InitDialogBoxProc, 0L);對(duì)話框創(chuàng)建凰壁茍紐痢茸毗玻慮報(bào)眾葬柱剪彝陜婪弘岸鯨移殃帖闊皖紛殆距帕式暫氟minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)72第72頁(yè),共96頁(yè)。提供和 Win32 完全兼容的消息框調(diào)用接口。int Messag

59、eBox (HWND hwnd, LPCTSTR lpsztext, LPCSTR lpsztitle, UINT ustyle );MessageBox (hDlg, 你好!, 確認(rèn), MB_OK | MB_ICONINFORMATION);消息框:抗都禿案丙乖萎座懦釘滬雇幼哼僻洞隔朗犀咎續(xù)暖添耘具五冒士貶臘懊它minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)73第73頁(yè),共96頁(yè)。消息框:MB_ABORTRETRYIGNORE消息框含有三個(gè)按鈕:Abort,Retry和Ignore。MB_OK消息框含有一個(gè)按鈕:OK。這是缺省值。MB_OKCANCEL消息框含有兩個(gè)按鈕:Ret

60、ry和Cancel。MB_YESNO消息框含有兩個(gè)按鈕:Yes和No。MB_YESNOCANCEL消息框含有三個(gè)按鈕:Yes,No和Cancel。MB_ICONINFORMATION 圖標(biāo)顯示方式校津陀非銹姑抹圍黍減簧踏龔廓檀率拐距樓薯旅噪占喧樟卯碴四冀蛇旦粟minigui圖形界面程序設(shè)計(jì)minigui圖形界面程序設(shè)計(jì)74第74頁(yè),共96頁(yè)。基本控件控件類類名稱宏定義靜態(tài)框staticCTRL_STATIC按鈕buttonCTRL_BUTTON單行編輯框sleditCTRL_SLEDIT多行編輯框mleditCTRL_MLEDIT列表框listboxCTRL_LISTBOX酷工具欄“coolb

溫馨提示

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