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

正文內(nèi)容

windowsapi編程-wenkub

2022-08-29 17:21:38 本頁(yè)面
 

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