reactos作業系統實現 195

2021-08-25 01:23:54 字數 903 閱讀 2003

系統調色盤相關功能的**在檔案subsys/win32k/eng/palette.c裡。什麼是調色盤呢?其實調色盤就是當一種影象不是使用到所有顏色時,使用的一種索引技術,以便減少影象儲存的大小。一幅影象,如果要按真彩色表達,那麼就是256×256×256顏色;如果按256色表示,那就只使用到256個顏色,比起真彩色來說是少了很多空間。把一幅影象裡所有包括的顏色生成一張**,這張**就叫做調色盤。影象儲存的資料時並不儲存顏色的真實值,而是儲存調色盤裡的索引值。

#001 typedef struct taglogpalette logpalette,*nplogpalette,*plogpalette,*lplogpalette;

這個結構,就是ros的邏輯調色盤結構定義。

palversion是調色盤的版本號。

palnumentries是調色盤內有多少種顏色。

palpalentry是調色盤的入口指標。paletteentry的結構如下:

#001 typedef struct tagpaletteentry paletteentry,*lppaletteentry,*ppaletteentry;

上面是每一項調色盤儲存的值。

pered是這一索引值裡的顏色紅色值。

pegreen是這一索引值裡的顏色綠色值。

peblue是這一索引值裡的顏色藍色值。

peflags

是指明這一項顏色值怎麼樣使用。標誌

pc_explicit

是指明使用

pered

來表示另外乙個調色盤的索引值,不是真實的顏色值。標誌

pc_nocollapse

是指明使用這個調色盤裡的顏色值來替代已經存在的系統調色盤的顏色值。標誌

pc_reserved

是指明調色盤裡的值是動態改變的,這是為了調色盤動畫準備的。

reactos作業系統實現 178

sendmessagew函式主要用來向視窗傳送訊息。下面就是它的實現 001 lresult winapi 002 sendmessagew hwnd wnd,003 uint msg,004 wparam wparam,005 lparam lparam 006 028 029 填寫訊息結構。03...

reactos作業系統實現 187

隨著全球化的發展,開發軟體都是面向多語言的環境。目前大多數程式都是採用不同字型來顯示不同語言的辦法,那麼有沒有一種更好的辦法,一種字型就可以解決全球語言的顯示呢?答案肯定的,它就是採用邏輯字型ms shell dlg和ms shell dlg2。比如開發應用程式時,就看到在資源裡可以設定ms she...

reactos作業系統實現 193

selectobject函式是將物件選定到指定的裝置場境中。具體實現 如下 001 hgdiobj 002 winapi 003 selectobject hdc hdc,004 hgdiobj hgdiobj 005 016 獲取選擇dc的物件正確的控制代碼。017 hgdiobj gdifixu...