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

正文內容

windowsapi編程-文庫吧

2025-07-17 17:21 本頁面


【正文】 字處理軟件 Notepad鍵人純文本的同時 , 還打開了 Winmap來播放歌曲 。 在這樣的一個操作系統(tǒng)中 , 不可能像過去的 DOS那樣 , 由一個應用程序來享用所有的系統(tǒng)資源 , 這些資源是由 Windows統(tǒng)一管理的 。 那么 , 特定的應用程序如何獲得用戶輸入的信息呢 ?事實上 , Windows時刻監(jiān)視著用戶的一舉一動 , 并分析用戶的動作與哪一個應用程序相關 , 然后 , 將用戶的動作以消息的形式發(fā)送給該應用程序 , 應用程序時刻等待著消息的到來 , 一旦發(fā)現(xiàn)它的消息隊列中有未處理的消息 , 就獲取并分析該消息 , 最后 , 應用程序根據(jù)消息所包含的內容采取適當?shù)膭幼鱽眄憫脩羲鞯牟僮?。 ? Windows為每一個應用程序,確切地說是每一個線程維護相應的消息隊列。應用程序的任務就是不停地從它的消息隊列中獲取消息,分析和處理消息,直到接到一條叫作 WM_QUIT消息為止,這個過程通常是由一種叫作消息循環(huán)的程序結構來實現(xiàn)的。 Windows能向應用程序發(fā)送的消息多達數(shù)百種 , 但是 , 對于一般的應用程序來說 , 只是其中的一部分有意義 , 如果你的應用程序只使用鼠標 , 那么如 WM_KEYUP、 WM_KEYDOWN和 WM_CHAR等消息就沒有任何意義 , 也就是說 , 應用程序中事實上不需要處理這些事件 , 對于這些事件 , 只需要交給Windows作默認的處理即可 。 因此 , 在應用程序中 , 我們需要處理的事件只是所有事件中的一小部分 。 事件驅動圍繞著消息的產生與處理展開 , 一條消息是關于發(fā)生的事件的消息 。 事件驅 動是靠消息循環(huán)機制來實現(xiàn)的 。 Windows 應用程序的消息來源有以下 4種: ( l) 輸入消息:包括鍵盤和鼠標的輸入 。 這一類消息首先放在系統(tǒng)消息隊列中 , 然后由 Windows將它們送入應用程序消息隊列中 , 由應用程序來處理消息 。 ( 2) 控制消息:用來與 Windows的控制對象 , 如列表框 、 按鈕 、 檢查框等進行雙向通信 。 當用戶在列表框中改動當前選擇或改變了檢查框的狀態(tài)時發(fā)出此類消息 。 這類消息一般不經過應用程序消息隊列 , 而是直接發(fā)送到控制對象上去 。 ( 3) 系統(tǒng)消息:對程序化的事件或系統(tǒng)時鐘中斷作出反應 。 一些系統(tǒng)消息 ,像 DDE消息 ( 動態(tài)數(shù)據(jù)交換消息 ) 要通過 Windows的系統(tǒng)消息隊列 , 而有的則不通過系統(tǒng)消息隊列而直接送入應用程序的消息隊列 , 如創(chuàng)建窗口消息 。 ( 4) 用戶消息:這是程序員自己定義并在應用程序中主動發(fā)出的 , 一般由應用程序的某一部分內部處理 。 Windows程序在處理消息時使用了一種叫作回調函數(shù) ( Callback Function) 的特殊函數(shù) 。 回調函數(shù)由應用程序定義,但是,在應用程序中并沒有調用回調函數(shù)的代碼,回調函數(shù)是供操作系統(tǒng)或者其子系統(tǒng)調用的,這種調用通常在某一事件發(fā)生,或者在窗口或字體被枚舉時。典型的回調函數(shù)有窗口過程、對話框過程和鉤子函數(shù)。 第四節(jié) Windows API和 SDK ? 一 、 Windows API ? 說到 Windows編程 , 就不能不談到 Windows API( Windows Application Programming Interface, Windows應用程序編程接口 ) , 它是所有 Windows應用程序的根本之所在 。 簡單地說 , API就是一系列的例程 , 應用程序通過調用這些例程來請求操作系統(tǒng)完成一些低級服務 。 在 Windows這樣的圖形用戶界面中 , 應用程序的窗口 、 圖標 、 菜單和對話框等就是由 API來管理和維護的 。 在 DOS應用程序下 , 可以通過 getchar ()等函數(shù)直接等待鍵盤輸入 ,并直接向屏幕輸出 。 而在 Windows下 , 由于允許多個任務同時運行 , 應用程序的輸入輸出是由 Windows來統(tǒng)一管理的 。 Windows 操作系統(tǒng)包括 3個內核基本元件: GDI, KERNEL, USER。 其中 GDI( 圖形設備接口 ) 負責在屏幕上繪制像素 、 打印硬拷貝輸出 、 繪制用戶界面 ( 包括窗口 、 菜單 。對話框 ) 等 。 系統(tǒng)內核 KERNEL支持與操作系統(tǒng)密切相關的功能:如進程加載 , 文本切換 、 文件 I/O, 以及內存管理 、 線程管理等 。 USER為所有的用戶界面對象提供支持 , 它用于接收和管理所有輸入消息 、 系統(tǒng)消息并把它們發(fā)給相應的窗口的消息隊列 。 消息隊列是一個系統(tǒng)定義的內存塊 , 用于臨時存儲消息;或是把消息直接發(fā)給窗口過程 。 每個窗口維護自己的消息隊列 , 并從中取出消息 , 利用窗口函數(shù)進行處理 。 ? Windows API具有兩種基本類型: Winl6 API和 Win32 API。 兩者在很多方面非常相像 , 但是 Win32 API除了幾乎包括了 Winl6 API中的所有內容以外 , 還包括很多的其他內容 。 Windows API依靠 3個主要的核心組件提供 Windows的大部分函數(shù) , 在 Winl6和 Win32中 , 它們具有不同的名稱 , 如表 l一 1所示 。 ? ? ? 雖然 Winl6 API組件帶有. EXE的擴展名,但是它們事實上都是動態(tài)鏈接庫 (.DLL),不能單獨運行。其他一些非核心的 Windows API由其他組件所提供的 DLL來實現(xiàn),這些組件包括通用對話框、打印、文件壓縮、版本控制以及多媒體支持等。 ? 二 、 Windows SDK ? Windows SDK( Windows Software Development Kit, Windows軟件開發(fā)工具包 ) 和 Windows API緊密聯(lián)系 , 它是一套幫助 C語言程序員創(chuàng)建Windows應用程序的工具 , 在 Windows SDK中包括了以下幾個組成部分: ? . 大量的在線幫助 , 這些幫助描述了 Windows編程所可能用到的函數(shù) 、消息 、 結構 、 宏及其他資源 。 ? . 各種編程工具 , 如對話框編輯器及圖像編輯器等 。 ? . Windows庫及頭文件 。 ? . 使用 C語言編寫的示例程序 。 ? 該工具包的最新版本就是我們正在使用的 Win32 SDK。 在安裝 Visual C+ +的同時 , Win32 SDK也安裝到你的計算機上了 。 盡管 MFC提供了對Win32 API的比較完整的封裝 , 但是 , 在某些情況下 , 我們更傾向于直接調用 Win32 API, 因為這有時候可以獲得更高的 效率 , 并且有著更大的自由度 。 而且 , 使用 MFC編寫的新風格的 Windows應用程序的工作方式基本上與使用 SDK編寫的程序一樣 , 它們往往有著很多的共同之處 , 只是使用 MFC更加方便 , 因為它隱藏了大量的復雜性 。 ? 面向對象的編程方式是當前最流行的程序設計方法 , 但是 , Win32 API本身卻是基于 C語言的過程式編程的 , SDK和 MFC的最主要的不同之處也就是 C與 C+十之間的差別 , 使用 MFC進行 Windows應用程序設計需要面向對象的編程思想和方法 , ? 三 、 使用 SDK編寫 Windows應用程序 ? 傳統(tǒng)的 DOS程序以 main() 函數(shù)作為進入程序的初始人口點 , 在 Windows應用程序中 , main函數(shù)被 WinMain函數(shù)取而代之 , WinMain函數(shù)的原型如下: ? int WINAPI WinMain( HINSTANCE hInstance, // 當前實例句柄; ? HINSTANCE hPrevInstance, // 前一實例句柄; ? LPSTR lpCmdLine, // 指向命令行參數(shù)的指針; ? int nCmdshow) // 窗口的顯示狀態(tài) 。 ? 所謂的句柄是一個標識對象的變量 , 或者是一個對操作系統(tǒng)資源的間接引用 。 句柄是指向一個 “ 無類型對象 ” ( Void*) 的指針 , 也就是一個 4字節(jié)長的數(shù)據(jù) 。 其聲明是這樣的: typedef void *HANDLE ? Windows是一個多任務操作系統(tǒng) , 它可以同時運行多個程序或一個程序的多個副本 。 為了對同一程序的多個副本進行管理 , Windows引入了實例句柄 。 Windows為每個應用程序建立一張表 , 實例句柄就好像是這張表的一個索引 。 Windows不僅使用句柄來管理實例 , 也用它來管理窗口 、位圖 、 字體 、 元文件 、 圖標等系統(tǒng)資源 。 ? 一般情況下 , 我們應該在 WinMain函數(shù)中完成下面的操作: ? ( l) 注冊窗口類 。 ? ( 2) 創(chuàng)建應用程序主窗口 。 ? ( 3)進入應用程序消息循環(huán)。 第五節(jié) Windows API 程序設計基礎知識 ? 要在 Windows上開發(fā)應用程序 , 就必須對 Windows程序設計有所了解 。 ? 在編程時 , 變量 、 函數(shù)的命名是一個極其重要的問題 。 好的命名方法使變量易于記憶且程序可讀性大大提高 。 Microsoft采用匈牙利命名法來命名 Windows API函數(shù)和變量 。 匈牙利命名法是由Microsoft的著名開發(fā)人員 , Excel的主要設計者查爾斯 西蒙尼在他的博士論文中提出來的 , 由于西蒙尼的國籍是匈牙利 , 所以這種命名法叫匈牙利命名法 。 ? 匈牙利命名法為 C標識符的命名定義了一種非常標準化的方式 ,這種命名方式是以下面兩條規(guī)則為基礎的: ? . 標識符的名字以一個或者多個小寫字母開頭 , 用這些字母來指定數(shù)據(jù)類型 。 表 l2列出了常用的數(shù)據(jù)類型的標準前綴 。 ? .在標識符內,前綴以后就是一個或者多個第一個字母大寫的單詞,這些單詞清楚地指出了源代碼內那個對象的用途。比如,m_szStudentName表示一個學生名字的類成員變量,數(shù)據(jù)類型是字符串型 ? 第六節(jié) Windows API程序的開發(fā)步驟 ? 開發(fā)基于 Windows API的應用程序一般可以參考下面的步驟 。 啟動 Visual C++編譯器后 , 選擇 File菜單下的 New菜單項 , 在列表框中選擇 Win32 Application項 。 然后在 Project name文本框中輸入新建的項目名 , 再在 Location文本框中輸入新建項目所在的路徑 。 可用如下三種方式的任意一種創(chuàng)建 Windows API應用程序 。 ? . An empty project一個空項目; ? . A simpla Win32 application 一個簡單的 Win32應用程序 ? . A typical Hello World”application一個典型的 “ Hello Word”應用程序 。 ? 如果選擇 A simple Win32 application項 , Visual C++ 編譯器將自動為用戶生成項目的框架文件 。 ? 對初學 Windows API程序設計的程序員來說 , “ Hello World! ” 應用程序是一個很好的范例 。 當選擇了 A typical Hello World! ” application這一項后 , Visual C++編譯器會自動創(chuàng)建一個完整的應用程序 , 這個程序將在彈出的窗口中顯示 Hello World! 。 如果希望直接鍵人源程序 , 可以選擇 An empty project這一項 。 ? 項目框架建立起來后 , 需要向其中加入相關的文件 , 這些文件可能是已經存在的 , 也可能是需要重新編輯建立的 。 ? 要向項目中加入文件,可以單擊 Visual C++編譯器中 Project菜單下的 Add To Project級聯(lián)菜單下的 Files菜單項 , 選擇需要插入到項目中的文件,然后單擊 OK按鈕,相應的文件就會被插入到項目中。 單擊 Visual C++編譯器中 File菜單下的 New菜單項,列表框中列出了所有可以新建的文件類型,這些文件中用得最為頻繁的是 C++ Source File。首先選中列表框中的 C++ Source File項,然后在 File文本框中鍵入文件名,再單擊 OK按鈕。這樣就可以在 Visual C++編譯器中鍵人相應的源文件了。其他類型的文件可以參照 C++ Source File的建立步驟。 第二章 WINDOWS應用程序框架 創(chuàng)建窗口只需調用 CreateWindow 函數(shù)即可,但實際上并不這么簡單。 但實際上并非真得這么簡單
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1