windows api(5)視窗的本質

2021-10-06 20:18:29 字數 1051 閱讀 7674

程序的核心模組分析

模組就是程序的組成元素,比如乙個可執行程式的每乙個dll,每乙個.exe檔案都是乙個模組。

windows程序核心空間中最重要的就是以下兩個個模組:ntoskrnl.exe,win32k.sys模組。

在應用程式開始執行時,會將kernel.dll,user32.dll,gdi.dll載入到程序使用者空間。使用者建立程序,本質上只是呼叫kernel32.dll給提供的對ntoskrnl.exe的介面。視窗是畫出來的,我們使用user32.dll和gdi32.dll提供的介面來間接呼叫win32k.sys.

user32.dll是使用windows已經畫好的視窗,稱為gui程式設計。

gdi32.dll是自己繪製視窗,稱為gdi程式設計

hwnd的概念

所有的視窗都是在win32k.sys這個模組畫的,所有的視窗的真實位址都在win32k.sys模組的控制之中。win32k.sys提供了統一的控制代碼表,這個控制代碼表在所有的程序中都相同,這個控制代碼即為hwnd,而且每乙個視窗的控制代碼對於不同的程序相同。

對於gdi的理解

gdi(graphics device inte***ce),圖形裝置介面

使用gdi畫圖的幾個步驟

畫在**,裝置物件,就是標明畫在哪個視窗。

hwnd =(hwnd)null,將hwnd設定為空即可在桌面上畫

獲取裝置物件上下文,每個裝置都有快取區,我們必須先畫在快取區中。

hdc = getdc(hwnd)

設定圖形物件

hgdiobj hpen;

hpen = ceatepen(ps_solid,5,rgb(255,0,0);

關聯selectobject(hdc,hpen);

開始畫釋放資源

deleteobject(hpen)

releasedc(hdc)

windows api學習筆記 簡單的記事本

include include resource.h include lresult callback mainwndproc hwnd,uint,wparam,lparam 視窗函式的函式原型 int apientry winmain apientry是 stdcall的巨集定義 hinstanc...

linux開發必備的5本秘籍

有關核心的書籍可以用汗牛充棟來形容,不過只有一些經典的神作經住了考驗。首先是5本久經考驗的神作 個人概括為 2 1 2 第乙個2是指2本全面講解核心的書,中間的1指1本講解驅動開發的書,後面的2則指2本有關核心具體子系統的書,你是否想到了某某廣告裡三個人突然站起單臂齊舉高呼 1比1比1 的場景?一 ...

html5中的localStorage本地快取

早期的web中使用cookies在客戶端儲存諸如使用者名稱等簡單的資訊,但是,在使用cookies儲存永久資料存在以下問題。1.cookies的大小限制在4kb,不適合大量的資料儲存。2.瀏覽器還限制站點可以在使用者計算機上儲存的cookies的數量。3 cookies是隨http事務一起被傳送的,...