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

正文內(nèi)容

windowsapi編程-wenkub

2022-08-29 17:21:38 本頁面
 

【正文】 程序沒有消息通知時, getMessage就不會返回,也就不會占用系統(tǒng)的 CPU時間。 系統(tǒng)會在隊列中取出每一條消息 , 根據(jù)消息的接收句柄將該消息發(fā)送給擁有該窗口的程序的消息循環(huán) 。 ? case (WM_LBUTTONDOWN): ? doYourWork( … ) // 在鼠標左鍵被按下時進行處理 ? break 。系統(tǒng)通過窗口句柄在整個系統(tǒng)中唯一標識一個窗口,發(fā)送一個消息時必須指定一個窗口句柄,表明該消息由那個窗口接收。 ? Microsoft為窗口編寫了默認的窗口過程 , 該過程負責處理那些你不處理的消息 。 當然用戶也可以定義自己的消息名稱 , 并利用自定義消息來發(fā)送通知和傳送數(shù)據(jù) 。 ? 一 、 理解 Windows消息機制 ? Wndows系統(tǒng)是通過消息驅(qū)動的 。 從上面的討論中可以看出, Windows應(yīng)用程序在本質(zhì)上是面向?qū)ο蟮摹? 第二節(jié) Windows 程序工作原理 Windows 程序設(shè)計是一種完全不同于傳統(tǒng)的 DOS方式的程序設(shè)計方法 , 它是一種事件驅(qū)動方式的程序設(shè)計模式 。 Microsoft公司早在 1983年就開始了 Windows操作系統(tǒng)第一版的研制工作,并于 1985年發(fā)布了 Windows的 1. l版。 它為應(yīng)用程序提供了一個由一致的圖形用戶界面構(gòu)成的多任務(wù)環(huán)境 。 這個優(yōu)點可以使應(yīng)用程序能夠存取更多的內(nèi)存資源 , 同時能保持系統(tǒng)設(shè)計中的靈活性 。 因為如果應(yīng)用程序的界面對每一個應(yīng)用程序都是相同的 , 程序員就可以建立一套基本的界面設(shè)計工具 , 用它們來生成應(yīng)用程序的用戶界面( 這就是可視化編程的思想 ) :而在解決了程序的用戶界面后 ,程序員可以花更多的時間去進行應(yīng)用程序的功能設(shè)計 。 Windows可以把文本文件等看作一串圖形 , 而在屏幕上畫出的圖形 , 在打印的時候也將以同樣形式出現(xiàn) 。 由于 Windows是一個圖形用戶界面 , 因而采用了圖形圖像來代表諸如文件 、 應(yīng)用程序 、 窗口和目錄等物理數(shù)據(jù)結(jié)構(gòu) 。 第一章 Windows程序設(shè)計概述 ? Windows和 Windows應(yīng)用程序最大的優(yōu)點就是用戶界面的一致性 。 很難想象 , 一個程序員在沒有掌握Windows API的情況下 , 能編制出很好的基于 Windows的應(yīng)用程序來 ??梢哉f , 用戶需要實現(xiàn)的所有功能通過 Windows API都能實現(xiàn) 。吉林大學(xué)遠程教育課件 Windows A P I編 程 主講人 : 翟慧杰 學(xué) 時: 48 (第一講 ) 前 言 Windows操作系統(tǒng)是當今世界上最為流行的操作系統(tǒng)之一 , 幾乎每個臺式機用戶都使用過 Windows, 用過 Windows平臺下的應(yīng)用軟件 。 而且 , Windows API作為操作系統(tǒng)不可分割的一部分 , 很好地體現(xiàn)了 Windows操作系統(tǒng)的特色 。 ? 本課件較為全面地介紹了 Windows API的編程結(jié)構(gòu)及其在各個方面的具體應(yīng)用 , 分析了大量的 Windows API數(shù)據(jù)結(jié)構(gòu)和函數(shù) , 并結(jié)合實際應(yīng)用 , 精心安排了大量的程序?qū)嵗?。因為大多數(shù)用戶都在不同的軟件包上工作 , 而每一個軟件包都有自己的用戶界面 , 所以用戶界面一致性的設(shè)計就顯得非常重要 。 用戶可以通過鼠標的單擊 、 雙擊及拖動等操作來管理這些物理結(jié)構(gòu) 。 ? Windows操作系統(tǒng)還提供了多任務(wù)功能 。 Windows圖形用戶界面的基本元素也是其具有的另一個優(yōu)點 。 ? Windows提供了開發(fā)獨立于設(shè)備的圖形的能力。 由于應(yīng)用程序之間的界面是一致的 , 因而對于用戶來說 , Windows應(yīng)用程序相對于基于 DOS的應(yīng)用程序更容易學(xué)習和使用 。該版本的Windows支持自動的拼接式應(yīng)用程序窗口及彈出式窗口。 在程序提供給用戶的界面中有許多可操作的可視對象 。程序提供給用戶界面的可視對象在程序的內(nèi)部一般也是一個對象,用戶對可視對象的操作通過事件驅(qū)動模式觸發(fā)相應(yīng)對象的可用方法。 消息的組成如下: ? 消息名稱( UINT)和兩個參數(shù)( WPARAM, LPARAM)。 ? 一個消息必須由一個窗口接收 。 正因為有了這個默認窗口過程 , 我們才可以利用 Windows的窗口進行開發(fā)而不必過多關(guān)注窗口各種消息的處理 。每個窗口都有自己的窗口過程,所以用戶的輸入就會被正確地處理。 ? default: ? callDefaultWndProc(… ) 。 每一個運行的程序都有自己的消息循環(huán) , 在循環(huán)中得到屬于自己的消息并根據(jù)接收窗口的句柄調(diào)用相應(yīng)的窗口過程 。 ? 二 、 協(xié)同式多任務(wù)與搶先式多任務(wù)系統(tǒng) ? 在 16位的操作系統(tǒng)中只有一個消息隊列 , 所以系統(tǒng)必須等待當前任務(wù)處理消息后才可以發(fā)送下一消息到相應(yīng)程序 , 如果一個程序陷入死循環(huán)或是操作超時 , 系統(tǒng)就得不到控制權(quán) 。這種多任務(wù)系統(tǒng)就是所謂的搶先式多任務(wù)系統(tǒng)。 從某種角度說, Windows程序不是編出來的,而是由程序員畫出來的。 ? Windows應(yīng)用程序是事件驅(qū)動 ( 或稱作消息驅(qū)動 ) 的應(yīng)用程序 。 ? Windows為每一個應(yīng)用程序,確切地說是每一個線程維護相應(yīng)的消息隊列。 事件驅(qū)動圍繞著消息的產(chǎn)生與處理展開 , 一條消息是關(guān)于發(fā)生的事件的消息 。 ( 2) 控制消息:用來與 Windows的控制對象 , 如列表框 、 按鈕 、 檢查框等進行雙向通信 。 一些系統(tǒng)消息 ,像 DDE消息 ( 動態(tài)數(shù)據(jù)交換消息 ) 要通過 Windows的系統(tǒng)消息隊列 , 而有的則不通過系統(tǒng)消息隊列而直接送入應(yīng)用程序的消息隊列 , 如創(chuàng)建窗口消息 。典型的回調(diào)函數(shù)有窗口過程、對話框過程和鉤子函數(shù)。 在 DOS應(yīng)用程序下 , 可以通過 getchar ()等函數(shù)直接等待鍵盤輸入 ,并直接向屏幕輸出 。對話框 ) 等 。 每個窗口維護自己的消息隊列 , 并從中取出消息 , 利用窗口函數(shù)進行處理 。 ? ? ? 雖然 Winl6 API組件帶有. EXE的擴展名,但是它們事實上都是動態(tài)鏈接庫 (.DLL),不能單獨運行。 ? . Windows庫及頭文件 。 盡管 MFC提供了對Win32 API的比較完整的封裝 , 但是 , 在某些情況下 , 我們更傾向于直接調(diào)用 Win32 API, 因為這有時候可以獲得更高的 效率 , 并且有著更大的自由度 。 句柄是指向一個 “ 無類型對象 ” ( Void*) 的指針 , 也就是一個 4字節(jié)長的數(shù)據(jù) 。 Windows不僅使用句柄來管理實例 , 也用它來管理窗口 、位圖 、 字體 、 元文件 、 圖標等系統(tǒng)資源 。 第五節(jié) Windows API 程序設(shè)計基礎(chǔ)知識 ? 要在 Windows上開發(fā)應(yīng)用程序 , 就必須對 Windows程序設(shè)計有所了解 。 匈牙利命名法是由Microsoft的著名開發(fā)人員 , Excel的主要設(shè)計者查爾斯 ? .在標識符內(nèi),前綴以后就是一個或者多個第一個字母大寫的單詞,這些單詞清楚地指出了源代碼內(nèi)那個對象的用途。 可用如下三種方式的任意一種創(chuàng)建 Windows API應(yīng)用程序 。 當選擇了 A typical Hello World! ” application這一項后 , Visual C++編譯器會自動創(chuàng)建一個完整的應(yīng)用程序 , 這個程序?qū)⒃趶棾龅拇翱谥酗@示 Hello World! 。 單擊 Visual C++編譯器中 File菜單下的 New菜單項,列表框中列出了所有可以新建的文件類型,這些文件中用得最為頻繁的是 C++ Source File。 第二章 WINDOWS應(yīng)用程序框架 創(chuàng)建窗口只需調(diào)用 CreateWindow 函數(shù)即可,但實際上并不這么簡單。 第一節(jié) WINDOWS應(yīng)用程序的基本結(jié)構(gòu) ? ? 進行 Windows程序設(shè)計 , 實際上是在進行一種面向?qū)ο蟮某绦蛟O(shè)計 ( OOP) 。 這些窗口含有顯示程序名稱的標題欄 、 菜單 , 甚至可能還有工具欄和滾動條 。 更確切地說 , 這些都稱為“ 子窗口 ” 或 “ 控件窗口 ” 或 “ 子窗口控件 ” 。 對消息的理解將是學(xué)習如何編寫 Windows程序必須逾越的障礙之一 。 是 Windows本身而不是應(yīng)用程序正在處理與用戶重新調(diào)整窗口大小相關(guān)的全部代碼 。 當用戶改 變窗口的大小時 , Windows給程序發(fā)送一條消息指 出新窗口的大小 。 它到底表達了什么意思呢 ? 我們在這里討論的是程序代碼 , 而不是一個電子郵件系統(tǒng) 。 例如 , 程序在打開磁盤文件時就要使用有關(guān)的系統(tǒng)調(diào)用 。 Windows通過調(diào)用窗口過程來 給窗口發(fā)送消息 。 使用窗口類使多個窗口能夠基于同 一個窗口類 , 并且使用同一個窗口過程 。 窗口是一種對象 , 其代碼是窗口過程 。 這正是按鈕窗口知道它被 “ 按下 ” 的奧妙所在 。 程序中有一小段代碼 , 叫做 “ 消息 循環(huán) ” , 用來從隊列中取出消息 , 并且將它 們發(fā)送給相應(yīng)的窗口過程 。 創(chuàng)建一個窗口首先需要注冊一個窗口類 , 那需要一個窗口過程來處理窗口消息 。 int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static TCHAR szAppName[] = TEXT (HelloWin) 。 = CS_HREDRAW | CS_VREDRAW 。 = hInstance 。 = NULL 。 return 0 。 while (GetMessage (amp。msg) 。 RECT rect 。ps) 。rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER) 。 case WM_DESTROY: PostQuitMessage (0) 。 沒人能真正記 住編寫此代碼的全部語法;通常 , Windows程 序員在開始一個新程序時總是復(fù)制一個 現(xiàn)有的 程序 , 然后再做相應(yīng)的修改 。 這種特性對我們很重要;客戶區(qū)就是程序自由繪圖并且向用戶交付可觀輸出的窗口區(qū)域 。 您可以按最大化按鈕 , 放大 HELLOWIN以充滿整個屏幕;也可以按最小化按鈕 , 將程序壓縮為一個圖標 。 這就是窗口過程 。 下面以它們在 HELLOWIN, C中出現(xiàn)的次序列出這些函數(shù)以及各自的簡明描述: LoadIcon 加載圖標供程序使用; LodCursor 加載鼠標指針供程序使用; GetStockObject 獲取一個圖形對象 , 在這個例子中 , 是獲取繪制窗口背景的刷子; RegisterClass為程序窗口注冊窗口類; MessageBox 顯示消息框; CreateWindow 根據(jù)窗口類創(chuàng)建一個窗口; ShowWindow 在屏幕上顯示窗口; UpdateWindow 指示窗口刷新自身; GetMessage 從消息隊列中獲取消息; TranslateMessage轉(zhuǎn)換某些鍵盤消息; DispatchMessage將消息發(fā)送給窗口過程; PlaySound 播放一個聲音文件; BeginPaint 開始窗口繪制; GetClientRect 獲取窗口客戶區(qū)的尺寸; DrawText 顯示文本串; EndPaint 結(jié)束窗口繪制; PostQuitMessage 在消息隊列中插入一條 “ 退出 ” 消息; DefWindowProc 執(zhí)行默認的消息處理 。 前綴指示該常量所屬的類別 , 如下頁 表所示 。 這最初是為了便于將 Windows程序從原來的 16位系統(tǒng)上移植到本 來的基于 32位 ( 或者其他 ) 技術(shù)的操作系統(tǒng)上 。 用于 WinMain的第三個參數(shù)的 PSTR數(shù)據(jù)類型是指向一個字符串的指針 , 即是一個 char*。這也許有點奇怪 , 因為 WORD數(shù)據(jù)類型在 Windows 98中仍然被定義為 16位的無符號整數(shù) , 因此 “ PARAM”的 “ W”在某種意義上是不正確的名字 。 HELLOWIN還使用了 Windows頭文件中定義的 4種 數(shù)據(jù)結(jié)構(gòu) ( 我們將在本章稍后加以討論 ) 。 句柄在 Windows中使用非常頻繁 。 程序幾乎總是通過調(diào)用
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1