freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于linux和minigui的嵌入式系統(tǒng)軟件開發(fā)指南畢業(yè)論文(編輯修改稿)

2025-07-15 15:48 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 窗口過程。這時(shí),應(yīng)用程序可以在其中創(chuàng)建子窗口。如果該消息返回非零值,則將銷毀新建的窗口。注意,在 MSG_NCCREATE 消息被發(fā)送時(shí),窗口尚未正常建立,所以不能在 MSG_NCCREATE 消息中建立子窗口。 MSG_PAINT該消息在需要進(jìn)行窗口重繪時(shí)發(fā)送到窗口過程。MiniGUI 通過判斷窗口是否含有無效區(qū)域來確定是否需要重繪。當(dāng)窗口在初始顯示、從隱藏狀態(tài)變化為顯示狀態(tài)、從部分不可見到可見狀態(tài),或者應(yīng)用程序調(diào)用 InvalidateRect 函數(shù)使某個(gè)矩形區(qū)域變成無效時(shí),窗口將具有特定的無效區(qū)域。這時(shí),MiniGUI 將在處理完所有的郵寄消息、通知消息之后處理無效區(qū)域,并向窗口過程發(fā)送 MSG_PAINT 消息。該消息的典型處理如下:case MSG_PAINT:{ HDC hdc。 hdc = BeginPaint (hWnd)。 // 使用 hdc 繪制窗口 ... EndPaint (hWnd, hdc)。 break。} MSG_DESTROY該消息在應(yīng)用程序調(diào)用 DestroyMainWindow 或者 DestroyWindow 時(shí)發(fā)送到窗口過程當(dāng)中,用來通知系統(tǒng)即將銷毀一個(gè)窗口。如果該消息的處理返回非零值,則將取消銷毀過程。7 Hello, World在這個(gè)小節(jié)當(dāng)中,我們給出一個(gè)簡(jiǎn)單的示例程序,該程序在窗口中打印Hello, world!:include include include include minigui/include minigui/include minigui/include minigui/static int HelloWinProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam){ HDC hdc。 switch (message) { case MSG_PAINT: hdc = BeginPaint (hWnd)。 TexOut (hdc, 0, 0, Hello, world!)。 EndPaint (hWnd, hdc)。 break。 case MSG_CLOSE: DestroyMainWindow (hWnd)。 PostQuitMessage (hWnd)。 return 0。 } return DefaultMainWinProc(hWnd, message, wParam, lParam)。}static void InitCreateInfo (PMAINWINCREATE pCreateInfo){ pCreateInfodwStyle = WS_CAPTION | WS_VISIBLE。 pCreateInfodwExStyle = 0。 pCreateInfospCaption = Hello, world! 。 pCreateInfohMenu = 0。 pCreateInfohCursor = GetSystemCursor (0)。 pCreateInfohIcon = 0。 pCreateInfoMainWindowProc = HelloWinProc。 pCreateInfolx = 0。 pCreateInfoty = 0。 pCreateInforx = 320。 pCreateInfoby = 240。 pCreateInfoiBkColor = PIXEL_lightwhite。 pCreateInfodwAddData = 0。 pCreateInfohHosting = HWND_DESKTOP。}int MiniGUIMain (int args, const char* arg[]){ MSG Msg。 MAINWINCREATE CreateInfo。 HWND hMainWnd。ifdef _LITE_VERSION SetDesktopRect (0, 0, 800, 600)。endif InitCreateInfo (amp。CreateInfo)。 hMainWnd = CreateMainWindow (amp。CreateInfo)。 if (hMainWnd == HWND_INVALID) return 1。 while (GetMessage (amp。Msg, hMainWnd)) { DispatchMessage (amp。Msg)。 } MainWindowThreadCleanup (hMainWnd)。 return 0。}很顯然,這是一個(gè)非常簡(jiǎn)單的程序。該程序使用了 MiniGUI 的默認(rèn)過程來處理我們前面提到的許多消息,而僅僅處理了 MSG_PAINT 和 MSG_CLOSE 兩條消息。當(dāng)用戶單擊標(biāo)題欄上的關(guān)閉按鈕時(shí),MiniGUI 將發(fā)送 MSG_CLOSE 到窗口過程。這時(shí),應(yīng)用程序就可以銷毀窗口,并終止消息循環(huán),最終退出程序。 8 小結(jié)本文描述了 MiniGUI 中與消息相關(guān)的幾個(gè)重要函數(shù),并講述了 MiniGUIThreads 和 MiniGUILite 在消息機(jī)制實(shí)現(xiàn)上的幾個(gè)不同。本文還講述了在 MiniGUI 中的窗口建立和銷毀過程,并解釋了窗口過程的概念以及一些重要消息的處理。最后,本文給出了一個(gè)簡(jiǎn)單的 MiniGUI 的示例程序,該程序建立窗口,并在其中打印Hello, world!。 主題三:對(duì)話框和控件編程本文講述 MiniGUI 中的對(duì)話框和控件編程。首先講解 MiniGUI 中的控件類和控件實(shí)例的關(guān)系,并舉例說明控件子類化的概念及應(yīng)用;其次講解 MiniGUI 對(duì)話框的編程技術(shù),包括對(duì)話框模板的定義和對(duì)話框回調(diào)函數(shù)的編程;最后解釋模態(tài)對(duì)話框和非模態(tài)對(duì)話框之間的區(qū)別。1 引言對(duì)話框編程是一個(gè)快速構(gòu)建用戶界面的技術(shù)。通常,我們編寫簡(jiǎn)單的圖形用戶界面時(shí),可以通過調(diào)用 CreateWindow 函數(shù)直接創(chuàng)建所有需要的子窗口,即控件。但在圖形用戶界面比較復(fù)雜的情況下,每建立一個(gè)控件就調(diào)用一次 CreateWindow 函數(shù),并傳遞許多復(fù)雜參數(shù)的方法很不可取。主要原因之一,就是程序代碼和用來建立控件的數(shù)據(jù)混在一起,不利于維護(hù)。為此,一般的 GUI 系統(tǒng)都會(huì)提供一種機(jī)制,利用這種機(jī)制,通過指定一個(gè)模板,GUI 系統(tǒng)就可以根據(jù)此模板建立相應(yīng)的主窗口和控件。MiniGUI 也提供這種方法,通過建立對(duì)話框模板,就可以建立模態(tài)或者非模態(tài)的對(duì)話框。本文首先講解組成對(duì)話框的基礎(chǔ),即控件的基本概念,然后講解對(duì)話模板的定義,并說明模態(tài)和非模態(tài)對(duì)話框之間的區(qū)別以及編程技術(shù)。2 控件和控件類許多人對(duì)控件(或者部件,widget)的概念已經(jīng)相當(dāng)熟悉了。控件可以理解為主窗口中的子窗口。這些子窗口的行為和主窗口一樣,即能夠接收鍵盤和鼠標(biāo)等外部輸入,也可以在自己的區(qū)域內(nèi)進(jìn)行輸出――只是它們的所有活動(dòng)被限制在主窗口中。MiniGUI 也支持子窗口,并且可以在子窗口中嵌套建立子窗口。我們將 MiniGUI 中的所有子窗口均稱為控件。在 Windows 或 X Window 中,系統(tǒng)會(huì)預(yù)先定義一些控件類,當(dāng)利用某個(gè)控件類創(chuàng)建控件之后,所有屬于這個(gè)控件類的控件均會(huì)具有相同的行為和顯示。利用這些技術(shù),可以確保一致的人機(jī)操作界面,而對(duì)程序員來講,可以像搭積木一樣地組建圖形用戶界面。MiniGUI 使用了控件類和控件的概念,并且可以方便地對(duì)已有控件進(jìn)行重載,使得其有一些特殊效果。比如,需要建立一個(gè)只允許輸入數(shù)字的編輯框時(shí),就可以通過重載已有編輯框而實(shí)現(xiàn),而不需要重新編寫一個(gè)新的控件類。如果讀者曾經(jīng)編寫過 Windows 應(yīng)用程序的話,應(yīng)該記得在建立一個(gè)窗口之前,必須確保系統(tǒng)中存在新窗口所對(duì)應(yīng)的窗口類。在 Windows 中,程序所建立的每個(gè)窗口,都對(duì)應(yīng)著某種窗口類。這一概念和面向?qū)ο缶幊讨械念?、?duì)象的關(guān)系類似。借用面向?qū)ο蟮男g(shù)語,Windows 中的每個(gè)窗口實(shí)際都是某個(gè)窗口類的一個(gè)實(shí)例。在 X Window 編程中,也有類似的概念,比如我們建立的每一個(gè) Widget,實(shí)際都是某個(gè) Widget 類的實(shí)例。這樣,如果程序需要建立一個(gè)窗口,就首先要確保選擇正確的窗口類,因?yàn)槊總€(gè)窗口類決定了對(duì)應(yīng)窗口實(shí)例的表象和行為。這里的表象指窗口的外觀,比如窗口邊框?qū)挾?,是否有?biāo)題欄等等,行為指窗口對(duì)用戶輸入的響應(yīng)。每一個(gè) GUI 系統(tǒng)都會(huì)預(yù)定義一些窗口類,常見的有按鈕、列表框、滾動(dòng)條、編輯框等等。如果程序要建立的窗口很特殊,就需要首先注冊(cè)一個(gè)窗口類,然后建立這個(gè)窗口類一個(gè)實(shí)例。這樣就大大提高了代碼的可重用性。在 MiniGUI 中,我們認(rèn)為主窗口通常是一種比較特殊的窗口。因?yàn)橹鞔翱诖a的可重用性一般很低,如果按照通常的方式為每個(gè)主窗口注冊(cè)一個(gè)窗口類的話,則會(huì)導(dǎo)致額外不必要的存儲(chǔ)空間,所以我們并沒有在主窗口提供窗口類支持。但主窗口中的所有子窗口,即控件,均支持窗口類(控件類)的概念。MiniGUI 提供了常用的預(yù)定義控件類,包括按鈕(包括單選鈕、復(fù)選鈕)、靜態(tài)框、列表框、進(jìn)度條、滑塊、編輯框等等。程序也可以定制自己的控件類,注冊(cè)后再創(chuàng)建對(duì)應(yīng)的實(shí)例。表 1 給出了 MiniGUI 預(yù)先定義的控件類和相應(yīng)類名稱定義。表 1 MiniGUI 預(yù)定義的控件類和對(duì)應(yīng)類名稱控件類類名稱宏定義備注靜態(tài)框staticCTRL_STATIC按鈕buttonCTRL_BUTTON列表框listboxCTRL_LISTBOX進(jìn)度條progressbarCTRL_PRORESSBAR滑塊trackbarCTRL_TRACKBAR單行編輯框edit、sleditCTRL_EDIT、CTRL_SLEDIT多行編輯框medit、mleditCTRL_MEDIT、CTRL_MLEDIT工具條toolbarCTRL_TOOLBAR菜單按鈕menubuttonCTRL_MENUBUTTON樹型控件treeviewCTRL_TREEVIEW包含在 mgext 庫,即MiniGUI 擴(kuò)展庫中。月歷控件monthcalendarCTRL_MONTHCALENDAR同上旋鈕控件spinboxCTRL_SPINBOX同上在 MiniGUI 中,通過調(diào)用 CreateWindow 函數(shù),可以建立某個(gè)控件類的一個(gè)實(shí)例。控件類既可以是表 1 中預(yù)定義 MiniGUI 控件類,也可以是用戶自定義的控件類。與 CreateWindow 函數(shù)相關(guān)的幾個(gè)函數(shù)的原型如下(include/):904 HWND GUIAPI CreateWindowEx (const char* spClassName, const char* spCaption, 905 DWORD dwStyle, DWORD dwExStyle, int id, 906 int x, int y, int w, int h, HWND hParentWnd, DWORD dwAddData)。 907 BOOL GUIAPI DestroyWindow (HWND hWnd)。 908 909 define CreateWindow(class_name, caption, style, id, x, y, w, h, parent, add_data) \ 910 CreateWindowEx(class_name, caption, style, 0, id, x, y, w, h, parent, add_data)CreateWindow 函數(shù)建立一個(gè)子窗口,即控件。它指定了控件類、控件標(biāo)題、控件風(fēng)格,以及窗口的初始位置和大小。該函數(shù)同時(shí)指定子窗口的父窗口。CreateWindowEx 函數(shù)的功能和 CreateWindow 函數(shù)一致,不過,可以通過 CreateWindowEx 函數(shù)指定控件的擴(kuò)展風(fēng)格。DestroyWindow 函數(shù)用來銷毀用上述兩個(gè)函數(shù)建立的控件或者子窗口。清單 1 中的程序,利用預(yù)定義控件類創(chuàng)建控件。其中hStaticWnd1 是建立在主窗口 hWnd 中的靜態(tài)框;hButtonhButtonhEdithStaticWnd2則是建立在 hStaicWnd1 內(nèi)部的幾個(gè)控件,并作為 hStaticWnd1 的子控件而存在,建立了兩個(gè)按鈕、一個(gè)編輯框和一個(gè)靜態(tài)按鈕;而 hEdit2 是 hStaicWnd2 的子控件,是 hStaticWnd1 的子子控件。清單1 利用預(yù)定義控件類創(chuàng)建控件define IDC_STATIC1 100define IDC_STATIC2 150define IDC_BUTTON1 110define IDC_BUTTON2 120define IDC_EDIT1 130define IDC_EDIT2 140int ControlTestWinProc (HWND hWnd, int message, WPARAM wParam, LPA
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1