reactos作業系統實現 187

2021-05-21 17:38:27 字數 2346 閱讀 4869

隨著全球化的發展,開發軟體都是面向多語言的環境。目前大多數程式都是採用不同字型來顯示不同語言的辦法,那麼有沒有一種更好的辦法,一種字型就可以解決全球語言的顯示呢?答案肯定的,它就是採用邏輯字型ms shell dlg和ms shell dlg2。比如開發應用程式時,就看到在資源裡可以設定ms shell dlg和ms shell dlg2作為字型,並且可以設定不同的語言標識號,這樣乙個應用程式裡就可以包括n種語言的資源,當這個應用程式執行在不同本地化設定地區時,作業系統就可以根據當前語言標識號去查詢應用程式裡的資源,如果找到一致的語言標識時就可以使用這種資源來顯示。這時作業系統,就會使用登錄檔裡標記為ms shell dlg和ms shell dlg2相對應的字型檔案作為應用程式裡的文字顯示出來。reactos裡就是使用這種方式來顯示中文介面的。可以看到reactos登錄檔裡如下:

70 [font.cjk.reg]

71 hklm,"software/microsoft/windows nt/currentversion/sysfontsubstitutes","arial",0x00000000,"liberation sans"

72 hklm,"software/microsoft/windows nt/currentversion/sysfontsubstitutes","courier",0x00000000,"freemono"

73 hklm,"software/microsoft/windows nt/currentversion/sysfontsubstitutes","courier new",0x00000000,"freemono"

74 hklm,"software/microsoft/windows nt/currentversion/sysfontsubstitutes","times new roman",0x00000000,"liberation serif"

75 hklm,"software/microsoft/windows nt/currentversion/sysfontsubstitutes","tahoma",0x00000000,"droid sans fallback"

76 hklm,"software/microsoft/windows nt/currentversion/sysfontsubstitutes","ms sans serif",0x00000000,"tahoma"

77 hklm,"software/microsoft/windows nt/currentversion/sysfontsubstitutes","ms shell dlg",0x00000000,"droid sans fallback"

78 hklm,"software/microsoft/windows nt/currentversion/sysfontsubstitutes","ms shell dlg 2",0x00000000,"droid sans fallback"

79 hklm,"software/microsoft/windows nt/currentversion/sysfontsubstitutes","ms ui gothic",0x00000000,"droid sans fallback"

80 hklm,"software/microsoft/windows nt/currentversion/sysfontsubstitutes","ms ui gothic 2",0x00000000,"droid sans fallback"

81 hklm,"software/microsoft/windows nt/currentversion/sysfontsubstitutes","helv",0x00000000,"tahoma"

在這裡設定的字型為droid sans fallback,是否很眼熟呢?是的,它就是google的android字型,在小小的3m大小的檔案裡包括cjk基本的字型顯示,預設的字在文泉驛里也新增了不少,如果要顯示多的字,就需要替換為它了。當在reactos編譯過程製作安裝包時,就會從reactos/boot/bootdata/packages/reactos.dff裡拷貝字型到iso檔案裡。在安裝時可以選擇這種字型,就是修改下面這段**:

62 mui_subfont cjkfonts =

63 ,

65     ,

66     ,

67     ,

68     ,

69     ,

70     ,

71     ,

72     ,

73     ,

74     ,

75    

76 }; 和

168   ,

169   ,

170   ,

通過上面的修改,就可以讓

reactos

支援cjk

的字型顯示了。

reactos作業系統實現 178

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

reactos作業系統實現 193

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

reactos作業系統實現 55

在語言選擇裡,倒底做了什麼樣的事情,讓ros系統可以選擇不同的語言?ros系統又是怎麼樣實現不同的語言支援的呢?001 static page number 002 languagepage pinput record ir 003 014 015 在螢幕上顯示語言列表。016 drawgeneri...