中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

與windows編程有關的主要概念

發布時間:2020-02-29 05:03:36 來源:網絡 閱讀:132 作者:reshainn 欄目:系統運維

窗口
窗口的概念很輕易了解,就是我們運用軟件時看到的界面。Windows 的中心就是窗口,它是Windows一統PC操作零碎市場的殺手锏,如下圖所示:

\"\"
圖1:記事本程序

我們運用的軟件都有本人的窗口,比方 QQ、盤算器、記事本等。這些窗口可以包括輸出框、下拉菜單、單選按鈕、多選按鈕、文本區域等各類各樣的控件(Controls),有的乃至還有動畫!
窗口、控件、圖像、音頻視頻等都稱為資本(Resource),在程序中都可以運用、創立、添加、修正等。

句柄
在Windows編程中,分歧窗口、控件、圖像等都對應一個獨一的數字(初學者可以了解為 ID),稱為句柄(Handle)。經過句柄,程序可以獲取對應資本的各類信息,也可以運用、修正、刪除該資本。
你可以將句柄了解為學號,你不需求記住先生的姓名、住址、成果等各類信息,當你需求理解這邏輯學生時,只需去教務處,將學號(句柄)通知那邊的任務人員(Windows),他就可以幫你找到這個先生。
句柄屏障了許多細節,程序員不需求理解面前的機制。例如用 CreateFile() 函數創立文件后會前往一個文件句柄,然后經過這個句柄就可以讀寫、刪除該文件,而不需求理解Windows是若何將句柄與文件聯系關系起來的,也不需求理解句柄究竟保管了哪些信息,Windows 是閉源的,這些面前的細節只要微軟曉得。

Windows的音訊機制
在普通的編程中,我們多是經過 API 函數來挪用零碎功用,讓操作零碎來幫我們完成許多任務,例如挪用 CreateFile() 函數,操作零碎會幫我們創立一個文件,而不需求我們介入任何任務,十分便利。
反過去,操作零碎也會“偷懶”,會挪用我們程序中的函數,讓我們本人處置某些工作。例如用戶敲擊鍵盤,操作零碎會起首收到告訴,但它并不會處置,而是挪用程序中的函數,通知程序用戶敲擊了鍵盤,你本人處置好了;假如程序不處置,操作零碎才會停止默許的操作。
當然,這不克不及了解為操作零碎“偷懶”,而是給我們一個時機,讓我們自行處置某些工作,從而使程序愈加靈敏和強健,也讓程序員有了更多發揚的空間。
用戶敲擊鍵盤、點擊鼠標、拖動窗口、選擇菜單、輸出文字等一切的操作都稱為事情(Event)。這與我們平常了解的“事情”是相似的,都表現發作了某些狀況,好的或許壞的。
當有事情發作時,Windows 會生成一條音訊(Message),通知程序發作了什么工作。這與我們平常了解的“音訊”是相似,都表現一種傳遞信息的載體。
那么,Windows 是若何經過音訊將發作的事情告訴給使用程序的呢?
每當事情發作時,Windows 會生成一條音訊,并放到一個由零碎保護的隊列中。然后,程序會本人從這個隊列中獲撤消息并剖析,挪用事情處置函數(處置事情的代碼也就在這個函數中),對用戶的操作停止呼應。

隊列是一種先輩先出的數據構造,不明確的請自行Google或百度。
留意:Windows 向隊列平分派音訊和使用程序從隊列中獲撤消息并不是同步的,Windows 不論隊列中有沒有音訊,不論使用程序有沒有處置終了,只需有事情發作,就會將音訊丟進隊列,什么時分處置終了是使用程序的事。
可見,音訊是銜接 Windows 和使用程序的紐帶,Windows 經過音訊通知使用程序發作了什么,使用程序經過音訊曉得該做什么。

音訊構造體
音訊其實是一個構造體,名字為 MSG,界說為:

        typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; } MSG;

Windows 向隊列中送達音訊,其實就是將一個類型為 MSG 的構造體變量丟進隊列。
MSG 構造體中各成員變量的寄義如下:
1) hwnd表現音訊所屬的窗口。用戶普通是在程序的窗口下停止操作,所以一個音訊普通多是與某個窗口相干聯的。例如在某個運動窗口中按下鼠標左鍵,發生的按鍵音訊就是發給該窗口的。
2) message表現音訊類型,是一個數值。在Windows中,音訊是由一個數值來表現的,分歧類型的音訊對應分歧的數值。然則因為數值方便于記憶,所以Windows將音訊對應的數值界說為WM_XXX宏(WM是Window Message的縮寫)的方式,XXX 對應某種音訊的英文拼寫的大寫方式。例如,鼠標左鍵按下音訊是WM_LBUTTONDOWN,鍵盤按下音訊是WM_KEYDOWN,字符音訊是WM_CHAR,等等。在程序中我們平日多是以WM_XXX宏的方式來運用音訊的。
3) 第三、第四個成員變量wParam和lParam,用于指定音訊的附加信息。例如,當我們收到一個字符音訊的時分,message成員變量的值就是WM_CHAR,但用戶究竟輸出的是什么字符,那么就由wParam和lParam來闡明。wParam、lParam表現的信息隨音訊的分歧而分歧。
4) 最初兩個變量辨別表現音訊送達到音訊隊列中的工夫和鼠標的以后地位。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

广宁县| 湘乡市| 通渭县| 鱼台县| 水富县| 秦安县| 囊谦县| 龙胜| 灵台县| 巴青县| 张掖市| 壤塘县| 台东市| 宣汉县| 阳山县| 武汉市| 青冈县| 芷江| 抚州市| 绥芬河市| 铜川市| 姜堰市| 根河市| 兴文县| 乌鲁木齐市| 大荔县| 多伦县| 桦南县| 肥西县| 雅江县| 神木县| 巴楚县| 镇雄县| 黄梅县| 茂名市| 炎陵县| 江源县| 手游| 武强县| 芮城县| 玛纳斯县|