天天看點

Microsoft Windows XP--開發人員,準備好了?

Microsoft Windows XP:它為開發人員提供了什麼? 摘要: 本文介紹 Microsoft Windows XP 的一些新特性并探讨這些變化給 Windows 軟體帶來的影響。集中讨論了 Windows XP 的新外觀和 ComCtl32、并列元件共享,以及快速使用者切換。

簡介

關于 Microsoft® Windows® XP,一個好消息當然是它具有各種精彩的新特性和能力。其次是,雖然系統有些變化,但隻要您能為 Windows 編寫成功的程式,您就能夠為新的 Windows XP 寫出更好的程式。

簡單地說,Windows XP(Beta 版代号為“Whistler”)是 Microsoft 期待已久的作業系統,它以 Microsoft Windows 2000 的優點為基礎,揉和并擴充了 Windows Millennium Edition (Me) 對個人使用者的親和力。

為 Windows XP 編寫程式需要一些新的技巧,不過這些技巧并不艱深。更重要的是我們一再提起(尤其是推出 Windows 2000 之後更加強調)的那些話:您的應用程式越“遵紀守法”,在 Windows XP 上它們就運作得越好。Windows XP 應用程式應該遵循您在幼稚園時學到的規則:共享您的資源,與他人和平共處,并且要守規矩。也就是說要“合作”。

初釋 Windows XP

Windows XP 是延續并準備替代 Microsoft Windows 2000 和 Microsoft Windows Me 的 Microsoft Windows 作業系統。Windows XP 采用 Windows 2000 的代碼基礎,繼承了它的可靠性和良好性能。Windows XP 還繼承和加強了 Windows Me 作業系統的新特性:系統恢複、Windows Media Player、Windows 鏡象擷取,等等。

對于用戶端的機器,Windows XP 有專業版和家用版兩個版本。專業版提供公司和其他企業所需的功能,适于商用和替代 Windows 2000 Professional。家用版則适于個人使用者和替代 Windows Me。Windows XP 的兩個版本都包含一些共同的特性,例如對數字媒體的增強支援,快速使用者切換新帶來的計算機共享能力。

在伺服器端,有三種與 Windows 2000 伺服器配置對應的版本:伺服器;進階伺服器,适于部門級伺服器、業務單元、Web 應用支援等;資料中心伺服器,适于高可用性和關鍵任務應用。本文集中讨論用戶端版本。至于各伺服器版本,它們各有一些類似的特性組合,我們将在以後的文章中再讨論。

為了實作提供一套同時滿足商務和個人應用的承諾,Windows XP 增加了一些新特性。也許最明顯的一點就是它有一個全新的外形,完全是新的外觀和更大、更好的圖示,用最小的開發成本就可以給使用者更好的使用體驗。工作列上有許多改進,使使用者更易于組織資訊,例如把同一應用程式的視窗放到一起。此外還有更多的内容:增強的電源管理,并列元件共享,快速使用者切換,支援高密度顯示,Passport 內建,更易于使用的氣球提示,還有 GDI+。這個清單并未包含全部内容。

在這篇文章中,我們将簡要地介紹您需要了解的一些重要方面:用新的 ComCtl32 版本 6 編寫新 UI,運用并列共享,編寫利用 Windows XP 快速使用者切換和遠端桌面特性的應用程式。在後面幾個月,MSDN 将更深入地介紹這些和其他更多專題。PSDK 包含關于這些特性的資訊。Windows XP Beta 2 SDK 版有更多内容,将随 Beta 2 軟體分發給所有的 MSDN 訂戶。如果您不是訂戶,在今年晚些時候才可能得到它。

新面貌

Microsoft Windows 的外觀風格自 Windows 95 以來一直未發生顯著改變。輪廓分明的灰色三維對話框控件已成為 Windows 的同義詞。随着 Windows XP 的釋出,我們将看到一個全新的外觀風格。Windows XP 以由 Windows 95 Plus Pack 首先引入的桌面主題為基礎,提供多個主題來确定不同的系統外觀風格。原來的桌面改變使用者色彩配置、字型和字号、牆紙設定,而 Windows XP 主題改變控件、視窗邊框和菜單的繪制方式。

工作列已被全面翻新。由于工作列空間有限,視窗開得越多,按鈕就變得越小。我們采取了措施來消除這個問題。大家都曾經碰到過工作列按鈕變得太小而幾乎無法使用的情形。如果由于同時打開許多視窗而導緻按鈕太小,Windows XP 将把按鈕分組。例如,假設使用者打開了五個 Microsoft® Word 文檔,顯示的按鈕将是一個而不是五個。隻要單擊這個按鈕,就會出現一個菜單,列出所有打開的視窗。

提醒框也得到了整理。提醒框本來是用來向使用者提示目前問題的,但後來逐漸失去了這個作用而成為啟動應用程式的地方。Windows XP 把目前并未給使用者提示資訊的圖示隐藏起來,進而減少了混亂。使用者通過 > 形符号可以顯露隐藏的圖示,也可以關閉這種行為,選擇哪些圖示總是顯示而哪些總是隐藏。

Windows 打開的方式改變了。為了使桌面整潔,除了資源回收筒外,所有圖示都移到了新的更大的開始菜單中。在開始菜單中,系統提供的功能單獨出現在一個藍色的區域中,旁邊顯示使用者最常使用的應用程式。為了使桌面更加整潔,Windows XP 會定期搜尋沒使用過的應用程式圖示,然後由桌面向導幫助使用者把它們從桌面上清除掉。放在桌面上的所有資料則保持原樣。

Windows XP 本身提供兩種外觀風格:傳統 Windows 風格和我們稱為“Whistler 風格”的新風格。在此基礎上,Windows XP 有讓 ISV 與新風格同步的機制,同時 Microsoft 會逐漸添加可展現個人偏好的各種風格,您為 Windows XP 編寫的應用程式将能夠自動接受它們。

乍一看,多重 Windows XP 風格很象 Window 媒體播放機這類程式的替換外觀功能,但實際上有些差別。主題可改變作業系統的外觀風格,但仍然提供和 Windows 早期版本一緻的 UI。這一點很重要,因為主題是在整個系統範圍内應用的。改變應用程式的外觀是可行的,例如去除一些按鈕。但在作業系統層次上,這并不合适。主題檔案的格式不是公開的。Microsoft 保留了主題的設計控制權,以保持一緻的使用者界面并能夠確定設計的連續性。Windows XP 将不提供主題開發工具。

您一定很熟悉傳統風格,就是那種灰灰的、輪廓分明的視窗和對話框。Windows XP 的這個選項允許使用者保持熟悉的界面。Windows XP Whistler 風格提供了一套全新的外觀效果。盡管新的外觀風格和傳統視窗有很大差異,總體效果還是讓人感到相當熟悉。Windows XP 新增加了一種按鈕和頁籤,當滑鼠指針從上面移過時,它們會改變顔色,和 Web 頁面上的熱點十分相似。

主題和控件

通過 Windows XP,Microsoft 把 User Win32 控件和 ComCtl32 版本 6 中的通用外殼控件結合起來了。這些新控件使用新的主題管理程式來顯示适當的外觀效果。

在以前的 32 位 Windows 中,部分控件在 User32.dll 中實作,其他的則在 ComCtl32 中實作。視窗非客戶區域(例如邊框和菜單)的顯示是由 User32.dll 完成的。User32.dll 是作業系統的核心元件,是以它隻能與相應特定版本的作業系統一同使用。對于 Windows 2000 和 Windows Me,ComCtl32 受 Windows 檔案保護機制控制,是以隻能通過系統更新或 Service Pack 來更改。對于以前版本的 Windows,ComCtl32 實際上是和許多系統元件和應用程式一同分發的,常常造成安裝一種應用程式或某個系統元件後另一種應用程式無法運作的情況。Windows XP 和最新的 Windows 2000 Service Pack 使用相同的 ComCtl32。

基于并列元件共享,Windows XP 為 Windows 元件開發指出了新方向。請記住控件外觀是由新的主題來确定。為了能在 Windows 中引入新外觀風格,并使設計人員能夠創新設計 UI 的外觀風格又不要求更改核心功能,Microsoft 正在引入主題管理程式 uxtheme.dll。這個新的 DLL 提供新控件的繪制支援,并且向控件提供資訊 API 來确定各個部分的位置。所有應用程式的非客戶區域,包括滾動條和标題欄,除非是自定義繪制的,均由它産生具有新 Windows XP 風格的外觀。這意味着每一個應用程式都将涉及主題管理程式。主題管理程式和 ComCtl32 一起來設定大部分 Windows 應用程式的主題,同時提供一定的靈活性,使 ISV 設計者能夠讓新的 Windows XP 介入他們的應用程式。

我們充分意識到新的 ComCtl32 可能會中斷一些應用程式。為了防止出現這種情況,ComCtl32 版本 6 以共享程式集的形式和 ComCtl32 版本 5 并列安裝在 System32 目錄下。隻有向作業系統聲明能夠使用這個新 DLL 的應用程式才能擷取它。現有應用程式如果不提供聲明就繼續使用 ComCtl32 版本 5。Windows XP 同時提供版本 5 和 6 的 DLL 并以并列方式安裝。在後面的小節我們将進一步讨論有關聲明的問題。

注意:

ComCtl32 版本 6 将不提供給早期的 Windows 版本;它們将繼續使用 ComCtl32 版本 5。版本 5 不提供新外觀效果、超連結控件或分組檢視等特性。如果您使用這些特性,就應該在 Windows 95、Windows 98 和 Windows 2000 上測試您的應用程式。

要確定您的應用程式在 Windows XP 中使用新的外觀風格,您需要使用一個聲明來指定對 ComCtl32 版本 6 的依賴,進而確定連結到 ComCtl32。如果您有任何自行繪制的控件,那麼今後要通過 uxtheme.dll 來繪制它們,而不是自己繪制。如果您想讓它們看起來和 UI 的其他部分相似,就應該這樣做。

下面這段代碼繪制可識别主題的按鈕:

rtButton.top = 100;rtButton.left = 10;rtButton.bottom = 130;rtButton.right = 200;hTheme = OpenThemeData(hWnd, L"Button");DrawThemeBackground(hTheme, hdc, BP_PUSHBUTTON,  PBS_NORMAL, &rtButton, NULL);DrawThemeText(hTheme, hdc, BP_PUSHBUTTON, PBS_NORMAL, wzTMB, wcslen(wzTMB),DT_CENTER | DT_VCENTER | DT_WORD_ELLIPSIS | DT_SINGLELINE, 0, &rtButton);
           

建立自行繪制的按鈕的一個常見原因是想添加位圖。現在,ComCtl32 版本 6 的按鈕通過與一個圖象清單相關聯,能夠結合開發人員提供的位圖。無論您是更新現有應用程式,還是編寫新應用程式,一定要用 ComCtl32 版本 6 聲明和版本 5 測試您的應用程式,看看您的視窗、對話框和新外觀放在一起效果如何。

下面的代碼繪制帶位圖的按鈕:

Button_ImageList.himl = himl;Button_ImageList.uAlign = BUTTON_IMAGELIST_ALIGN_LEFT;Button_ImageList.margin.top = 3;Button_ImageList.margin.bottom = 3;Button_ImageList.margin.left = 3;Button_ImageList.margin.right = 3;hwndImageBtn = CreateWindow(L"Button",wzText,WS_CHILD | BS_PUSHBUTTON,0,0,0,0,hWndParent,
NULL,hInst,NULL);Button_SetImageList(hwndImageBtn, &Button_ImageList);Button_GetIdealSize(hwndImageBtn, &sizeBtn);SetWindowPos(hwndImageBtn, hWndParent, 10, 10, sizeBtn.cx, sizeBtn.cy, SWP_SHOWWINDOW | 
SWP_NOZORDER | SWP_NOACTIVATE);
           
注意:

如果您用 Microsoft Internet Explorer 技術以 HTML 繪制 UI,您可以在 HTML 中放一個元标記來確定 HTML 控件采用主題。

注意:

提醒一下,對于第三方擴充,在您将它們全部進行測試之前,請不要為它們設定主題。關于主要第三方應用程式的情形,我們将在一篇預定于 2001 年 3 月發表的 MSDN 文章中讨論如何在您的程序中處理其他應用程式。

圖示

與傳統圖示相比,Windows XP 中的圖示不僅看起來漂亮,而且能夠容納更多細節來表示更複雜和完善得多的資訊。新圖示可支援最多 24 位的色彩深度,在 Alpha 通道中支援 8 位掩碼。用于圖示、平鋪和縮略視圖中的圖象可以是 48x48 象素那麼大。順便說一句,以平鋪顯示圖示是表示資訊的絕好的新方法。這種圖示帶有兩三行注釋,您可以在圖示旁邊标明關鍵資訊。

圖示格式并未改變,Microsoft 已在圖象清單 API 中添加支援來顯示 32 位的圖示。為了正确制作這些圖示,使它們在早期版本的 Windows 中也能使用,您需要為每個圖示制作多幅圖象,如圖 2 所示。

圖 2:多幅圖示圖象

在這個例子中,前三個圖象用于 16 色的安全模式。後面三個圖示用于 Windows XP 256 色模式。最後三個圖示有 Alpha 通道,僅适用于以 24 位顔色運作的 Windows XP 或更高版本的作業系統。

請注意,在圖示格式中這些圖象應該按順序排列。如果順序錯了,低版本 Windows 抽取這些圖示時性能會很差。這意味着記憶體錯誤和不正确的繪制。還要注意低版本 Windows 有 10 個圖示的資源限制,而 Whistler 支援包含上千個圖示資源的圖示檔案。

可以這樣來看待新的圖示:過去您用象 Microsoft 畫筆這樣相對簡單的工具來建立圖示,而現在您需要用 Photoshop。

注意:

Gamani 工具、GIF Movie Gear for Icons 可以生成 24 位色彩、八位 Alpha 通道的 Windows 圖示 (ICO) 檔案。請參考 http://www.moviegear.com/foricons。

并列共享

新 UI 的運作依賴于一個滿足并列共享條件的結構。作為版本管理和 DLL 問題的一個解決方案,Microsoft 極力推薦應用程式應采用并列版本管理政策。正如 ComCtl 版本 6 實施所顯示的,并列元件是 Windows 開發的未來。這一節我們将概述 Windows XP 并列共享的新特性。在 2001 年 3 月,MSDN 将發表一篇文章進一步深入讨論這個主題。

有關并列元件共享問題和 DLL 重定向的背景知識,請參閱 David D'Souza、BJ Whalen 和 Peter Wilson 撰寫的“在應用程式中實施并列元件(擴充)”(英文)。

應用并列元件時,一個元件的多個版本将被同時安裝。應用程式被綁定到設計時采用并經過測試的特定版本的元件。

Windows XP 提供了基礎結構來支援集合以及隔離的應用程式,包括 COM+ 和 Win32 程式。從 Win32 應用程式擷取并列程式集不需要改變代碼。應用程式可以使用最新的系統程式集而不會帶來全局影響。

總之,由于隔離的應用程式比較可靠,它們具有更高的價值。在生成和分發過程中,它們都包含了所有必需的元件,不會受其他應用程式帶來的變化的影響。隔離的應用程式使用一個 XML 檔案作為聲明,該聲明包含對程式集或應用程式的自我描述。現在,所有的綁定和激活中繼資料,例如 COM 類、接口、類型庫都存儲在聲明中,而不是系統資料庫裡。有兩種類型的聲明檔案:應用程式聲明(描述隔離的應用程式),以及程式集聲明(描述各個程式集)。

隔離的應用程式可以使用并列程式集。程式集是進行命名、綁定、版本管理、部署和配置的基本機關。它們又有兩種變體,即共享和私有。共享程式集安裝在 Windows 目錄中的 WinSxS 檔案夾裡,可供計算機上的多個應用程式使用。私有程式集部署在應用程式的目錄結構中,并隻有該應用程式才能使用。

對于應用程式開發人員,使用并列共享還有另一個好處,那就是計劃可以更清晰,因為您的開發計劃不會受所采用元件的釋出計劃的影響。

快速使用者切換

Windows XP 引入了一種被稱為“快速使用者切換”的新功能。快速使用者切換基于 Windows 2000 的計算機共享功能和 Windows 2000 Terminal Server 的多任務特性,它使多個使用者可以很友善、快捷的共享同一台計算機。

調查表明 80% 的 Windows 個人使用者和他們的家庭成員共用一台計算機。盡管 Windows 98 有一個叫做配置檔案的功能,但很少有人使用。Windows 2000 提供了單獨管理帳号的特性,卻很難在家庭環境中使用。

Windows XP 改變了這一切。基于 Windows 2000 的配置檔案,在安裝過程中為所有使用者建立帳号。如果需要,使用者可以建立密碼,但預設情況下系統不要求密碼。一個友好的新歡迎螢幕代替了登入對話框,上面有使用者名、圖檔或圖示,而不是使用者代号或别名。并且,新的控制台小程式使編輯使用者帳号更加簡單。每個使用者都有各自的設定,包括牆紙、音樂、圖檔、個人收藏夾等等。

在快速使用者切換中,多個使用者使用同一台計算機時無需登出。相反,各個帳号總是登入的,使用者可以在所有打開的帳号之間迅速切換。

例如,父親回家來,開始使用他的機器。他打開 PowerPoint 來編寫一個文檔。然後兒子 Billy 要求用一會兒計算機,他傳回到“歡迎”螢幕,單擊“Billy”,然後登入并開始玩遊戲。但是,此時他的父親仍然處于登入狀态。如果需要,他無需登出就可以迅速切換回自己的打開的帳号。他的 PowerPoint 示範文稿仍然打開着,Internet 連接配接也會被保持。

一個相關的特性是遠端桌面,它使使用者能夠從遠端機器以自己的設定通路自己的資料。這種情形可能發生在一個網絡裡,也可能是使用者在辦公室中鎖定了工作站,回家,然後從家中的一台計算機來遠端控制工作站應用程式。

Windows XP 通過終端伺服器來實作這些功能。對于開發人員,支援快速使用者切換和過去可能遇到的一些情況大體相同,例如商業環境下的計算機共享、漫遊使用者、輪班使用者、居家辦公族,以及使終端伺服器環境中的伺服器程式運作良好。

MSDN 将在 2001 年 3 月的一篇文章中進一步探讨使用者切換。請參閱這篇文章:為 Microsoft Windows 2000 Terminal Services 和 Windows NT Server 4.0 優化應用程式,終端伺服器版(英文)。 現在,要記住為了支援快速使用者切換,應用程式應遵循已經确認的 Windows 資料和設定管理規範 (http://msdn.microsoft.com/library/default.asp? URL=/library/specs/w2kserve.htm)(英文)。

  • 預設設定為在“我的檔案”檔案夾中存儲使用者建立的資料。
  • 正确分類和存儲應用程式資料。
  • 遇到“通路被拒絕”消息時體面地降級。

此外,還要考慮一些因素。應用程式應滿足下列條件:

  • 支援“所有使用者”安裝。
  • 正确檢測其他執行個體。
  • 與服務通訊。

此外,要考慮當您的應用程式不在目前桌面時的情況:

  • 最小化處理器的占用。
  • 不要播放聲音。
  • 不要更新顯示。
  • 讓系統資源能夠檢測到它。

其他特性

雖然從開發的角度我們還可以再介紹一些 Windows XP 的特性,但全面介紹這個作業系統顯然已超出了本文的範疇。

電源管理:

Windows XP 采用 Windows 2000 的電源管理特性,Robert Di Benedetto 的文章“在 Windows 2000 應用程式中支援 OnNow(電源管理)的竅門”(英文)很好地介紹了這個問題。

GDI

+

Graphics Device Interface Plus (GDI+) 是 Microsoft Windows.NET 的一部分,提供二維矢量圖形、圖象處理和輸出功能。通過添加新特性和優化現有特性,GDI+ 改進了 GDI(較早期 Windows 版本提供的圖形裝置接口)。Beta 2 SDK 将提供更多資訊。

64 位 Windows:

Microsoft 從一個源代碼樹同時為 32 位和 64 位的 Windows 建構 Windows XP。在未來某一天,您的應用程式将成為 64 位的,我們極力推薦您現在就開始使您的應用程式符合 64 位系統的要求。請參閱 MSDN Library 中 Platform SDK 的有關小節,标題為“Getting Ready for 64-bit Windows”(為 64 位的 Windows 作好準備)。

支援高密度顯示:

133 DPI 新型螢幕已經面世,而 200 DPI 的螢幕也将推出。您需要用 140 DPI 字型和大圖示來測試您的應用程式。Windows XP 對話框、按鈕、标題欄和語音輸入都可以使用大字型。請在 2001 年 3 月的 MSDN 文章中查找有關如何為高密度顯示編寫應用程式的内容。

Microsoft Windows XP:它為開發人員提供了什麼? 摘要: 本文介紹 Microsoft Windows XP 的一些新特性并探讨這些變化給 Windows 軟體帶來的影響。集中讨論了 Windows XP 的新外觀和 ComCtl32、并列元件共享,以及快速使用者切換。

簡介

關于 Microsoft® Windows® XP,一個好消息當然是它具有各種精彩的新特性和能力。其次是,雖然系統有些變化,但隻要您能為 Windows 編寫成功的程式,您就能夠為新的 Windows XP 寫出更好的程式。

簡單地說,Windows XP(Beta 版代号為“Whistler”)是 Microsoft 期待已久的作業系統,它以 Microsoft Windows 2000 的優點為基礎,揉和并擴充了 Windows Millennium Edition (Me) 對個人使用者的親和力。

為 Windows XP 編寫程式需要一些新的技巧,不過這些技巧并不艱深。更重要的是我們一再提起(尤其是推出 Windows 2000 之後更加強調)的那些話:您的應用程式越“遵紀守法”,在 Windows XP 上它們就運作得越好。Windows XP 應用程式應該遵循您在幼稚園時學到的規則:共享您的資源,與他人和平共處,并且要守規矩。也就是說要“合作”。

初釋 Windows XP

Windows XP 是延續并準備替代 Microsoft Windows 2000 和 Microsoft Windows Me 的 Microsoft Windows 作業系統。Windows XP 采用 Windows 2000 的代碼基礎,繼承了它的可靠性和良好性能。Windows XP 還繼承和加強了 Windows Me 作業系統的新特性:系統恢複、Windows Media Player、Windows 鏡象擷取,等等。

對于用戶端的機器,Windows XP 有專業版和家用版兩個版本。專業版提供公司和其他企業所需的功能,适于商用和替代 Windows 2000 Professional。家用版則适于個人使用者和替代 Windows Me。Windows XP 的兩個版本都包含一些共同的特性,例如對數字媒體的增強支援,快速使用者切換新帶來的計算機共享能力。

在伺服器端,有三種與 Windows 2000 伺服器配置對應的版本:伺服器;進階伺服器,适于部門級伺服器、業務單元、Web 應用支援等;資料中心伺服器,适于高可用性和關鍵任務應用。本文集中讨論用戶端版本。至于各伺服器版本,它們各有一些類似的特性組合,我們将在以後的文章中再讨論。

為了實作提供一套同時滿足商務和個人應用的承諾,Windows XP 增加了一些新特性。也許最明顯的一點就是它有一個全新的外形,完全是新的外觀和更大、更好的圖示,用最小的開發成本就可以給使用者更好的使用體驗。工作列上有許多改進,使使用者更易于組織資訊,例如把同一應用程式的視窗放到一起。此外還有更多的内容:增強的電源管理,并列元件共享,快速使用者切換,支援高密度顯示,Passport 內建,更易于使用的氣球提示,還有 GDI+。這個清單并未包含全部内容。

在這篇文章中,我們将簡要地介紹您需要了解的一些重要方面:用新的 ComCtl32 版本 6 編寫新 UI,運用并列共享,編寫利用 Windows XP 快速使用者切換和遠端桌面特性的應用程式。在後面幾個月,MSDN 将更深入地介紹這些和其他更多專題。PSDK 包含關于這些特性的資訊。Windows XP Beta 2 SDK 版有更多内容,将随 Beta 2 軟體分發給所有的 MSDN 訂戶。如果您不是訂戶,在今年晚些時候才可能得到它。

新面貌

Microsoft Windows 的外觀風格自 Windows 95 以來一直未發生顯著改變。輪廓分明的灰色三維對話框控件已成為 Windows 的同義詞。随着 Windows XP 的釋出,我們将看到一個全新的外觀風格。Windows XP 以由 Windows 95 Plus Pack 首先引入的桌面主題為基礎,提供多個主題來确定不同的系統外觀風格。原來的桌面改變使用者色彩配置、字型和字号、牆紙設定,而 Windows XP 主題改變控件、視窗邊框和菜單的繪制方式。

工作列已被全面翻新。由于工作列空間有限,視窗開得越多,按鈕就變得越小。我們采取了措施來消除這個問題。大家都曾經碰到過工作列按鈕變得太小而幾乎無法使用的情形。如果由于同時打開許多視窗而導緻按鈕太小,Windows XP 将把按鈕分組。例如,假設使用者打開了五個 Microsoft® Word 文檔,顯示的按鈕将是一個而不是五個。隻要單擊這個按鈕,就會出現一個菜單,列出所有打開的視窗。

提醒框也得到了整理。提醒框本來是用來向使用者提示目前問題的,但後來逐漸失去了這個作用而成為啟動應用程式的地方。Windows XP 把目前并未給使用者提示資訊的圖示隐藏起來,進而減少了混亂。使用者通過 > 形符号可以顯露隐藏的圖示,也可以關閉這種行為,選擇哪些圖示總是顯示而哪些總是隐藏。

Windows 打開的方式改變了。為了使桌面整潔,除了資源回收筒外,所有圖示都移到了新的更大的開始菜單中。在開始菜單中,系統提供的功能單獨出現在一個藍色的區域中,旁邊顯示使用者最常使用的應用程式。為了使桌面更加整潔,Windows XP 會定期搜尋沒使用過的應用程式圖示,然後由桌面向導幫助使用者把它們從桌面上清除掉。放在桌面上的所有資料則保持原樣。

Windows XP 本身提供兩種外觀風格:傳統 Windows 風格和我們稱為“Whistler 風格”的新風格。在此基礎上,Windows XP 有讓 ISV 與新風格同步的機制,同時 Microsoft 會逐漸添加可展現個人偏好的各種風格,您為 Windows XP 編寫的應用程式将能夠自動接受它們。

乍一看,多重 Windows XP 風格很象 Window 媒體播放機這類程式的替換外觀功能,但實際上有些差別。主題可改變作業系統的外觀風格,但仍然提供和 Windows 早期版本一緻的 UI。這一點很重要,因為主題是在整個系統範圍内應用的。改變應用程式的外觀是可行的,例如去除一些按鈕。但在作業系統層次上,這并不合适。主題檔案的格式不是公開的。Microsoft 保留了主題的設計控制權,以保持一緻的使用者界面并能夠確定設計的連續性。Windows XP 将不提供主題開發工具。

您一定很熟悉傳統風格,就是那種灰灰的、輪廓分明的視窗和對話框。Windows XP 的這個選項允許使用者保持熟悉的界面。Windows XP Whistler 風格提供了一套全新的外觀效果。盡管新的外觀風格和傳統視窗有很大差異,總體效果還是讓人感到相當熟悉。Windows XP 新增加了一種按鈕和頁籤,當滑鼠指針從上面移過時,它們會改變顔色,和 Web 頁面上的熱點十分相似。

主題和控件

通過 Windows XP,Microsoft 把 User Win32 控件和 ComCtl32 版本 6 中的通用外殼控件結合起來了。這些新控件使用新的主題管理程式來顯示适當的外觀效果。

在以前的 32 位 Windows 中,部分控件在 User32.dll 中實作,其他的則在 ComCtl32 中實作。視窗非客戶區域(例如邊框和菜單)的顯示是由 User32.dll 完成的。User32.dll 是作業系統的核心元件,是以它隻能與相應特定版本的作業系統一同使用。對于 Windows 2000 和 Windows Me,ComCtl32 受 Windows 檔案保護機制控制,是以隻能通過系統更新或 Service Pack 來更改。對于以前版本的 Windows,ComCtl32 實際上是和許多系統元件和應用程式一同分發的,常常造成安裝一種應用程式或某個系統元件後另一種應用程式無法運作的情況。Windows XP 和最新的 Windows 2000 Service Pack 使用相同的 ComCtl32。

基于并列元件共享,Windows XP 為 Windows 元件開發指出了新方向。請記住控件外觀是由新的主題來确定。為了能在 Windows 中引入新外觀風格,并使設計人員能夠創新設計 UI 的外觀風格又不要求更改核心功能,Microsoft 正在引入主題管理程式 uxtheme.dll。這個新的 DLL 提供新控件的繪制支援,并且向控件提供資訊 API 來确定各個部分的位置。所有應用程式的非客戶區域,包括滾動條和标題欄,除非是自定義繪制的,均由它産生具有新 Windows XP 風格的外觀。這意味着每一個應用程式都将涉及主題管理程式。主題管理程式和 ComCtl32 一起來設定大部分 Windows 應用程式的主題,同時提供一定的靈活性,使 ISV 設計者能夠讓新的 Windows XP 介入他們的應用程式。

我們充分意識到新的 ComCtl32 可能會中斷一些應用程式。為了防止出現這種情況,ComCtl32 版本 6 以共享程式集的形式和 ComCtl32 版本 5 并列安裝在 System32 目錄下。隻有向作業系統聲明能夠使用這個新 DLL 的應用程式才能擷取它。現有應用程式如果不提供聲明就繼續使用 ComCtl32 版本 5。Windows XP 同時提供版本 5 和 6 的 DLL 并以并列方式安裝。在後面的小節我們将進一步讨論有關聲明的問題。

注意:

ComCtl32 版本 6 将不提供給早期的 Windows 版本;它們将繼續使用 ComCtl32 版本 5。版本 5 不提供新外觀效果、超連結控件或分組檢視等特性。如果您使用這些特性,就應該在 Windows 95、Windows 98 和 Windows 2000 上測試您的應用程式。

要確定您的應用程式在 Windows XP 中使用新的外觀風格,您需要使用一個聲明來指定對 ComCtl32 版本 6 的依賴,進而確定連結到 ComCtl32。如果您有任何自行繪制的控件,那麼今後要通過 uxtheme.dll 來繪制它們,而不是自己繪制。如果您想讓它們看起來和 UI 的其他部分相似,就應該這樣做。

下面這段代碼繪制可識别主題的按鈕:

rtButton.top = 100;rtButton.left = 10;rtButton.bottom = 130;rtButton.right = 200;hTheme = OpenThemeData(hWnd, L"Button");DrawThemeBackground(hTheme, hdc, BP_PUSHBUTTON,  PBS_NORMAL, &rtButton, NULL);DrawThemeText(hTheme, hdc, BP_PUSHBUTTON, PBS_NORMAL, wzTMB, wcslen(wzTMB),DT_CENTER | DT_VCENTER | DT_WORD_ELLIPSIS | DT_SINGLELINE, 0, &rtButton);
           

建立自行繪制的按鈕的一個常見原因是想添加位圖。現在,ComCtl32 版本 6 的按鈕通過與一個圖象清單相關聯,能夠結合開發人員提供的位圖。無論您是更新現有應用程式,還是編寫新應用程式,一定要用 ComCtl32 版本 6 聲明和版本 5 測試您的應用程式,看看您的視窗、對話框和新外觀放在一起效果如何。

下面的代碼繪制帶位圖的按鈕:

Button_ImageList.himl = himl;Button_ImageList.uAlign = BUTTON_IMAGELIST_ALIGN_LEFT;Button_ImageList.margin.top = 3;Button_ImageList.margin.bottom = 3;Button_ImageList.margin.left = 3;Button_ImageList.margin.right = 3;hwndImageBtn = CreateWindow(L"Button",wzText,WS_CHILD | BS_PUSHBUTTON,0,0,0,0,hWndParent,
NULL,hInst,NULL);Button_SetImageList(hwndImageBtn, &Button_ImageList);Button_GetIdealSize(hwndImageBtn, &sizeBtn);SetWindowPos(hwndImageBtn, hWndParent, 10, 10, sizeBtn.cx, sizeBtn.cy, SWP_SHOWWINDOW | 
SWP_NOZORDER | SWP_NOACTIVATE);
           
注意:

如果您用 Microsoft Internet Explorer 技術以 HTML 繪制 UI,您可以在 HTML 中放一個元标記來確定 HTML 控件采用主題。

注意:

提醒一下,對于第三方擴充,在您将它們全部進行測試之前,請不要為它們設定主題。關于主要第三方應用程式的情形,我們将在一篇預定于 2001 年 3 月發表的 MSDN 文章中讨論如何在您的程序中處理其他應用程式。

圖示

與傳統圖示相比,Windows XP 中的圖示不僅看起來漂亮,而且能夠容納更多細節來表示更複雜和完善得多的資訊。新圖示可支援最多 24 位的色彩深度,在 Alpha 通道中支援 8 位掩碼。用于圖示、平鋪和縮略視圖中的圖象可以是 48x48 象素那麼大。順便說一句,以平鋪顯示圖示是表示資訊的絕好的新方法。這種圖示帶有兩三行注釋,您可以在圖示旁邊标明關鍵資訊。

圖示格式并未改變,Microsoft 已在圖象清單 API 中添加支援來顯示 32 位的圖示。為了正确制作這些圖示,使它們在早期版本的 Windows 中也能使用,您需要為每個圖示制作多幅圖象,如圖 2 所示。

圖 2:多幅圖示圖象

在這個例子中,前三個圖象用于 16 色的安全模式。後面三個圖示用于 Windows XP 256 色模式。最後三個圖示有 Alpha 通道,僅适用于以 24 位顔色運作的 Windows XP 或更高版本的作業系統。

請注意,在圖示格式中這些圖象應該按順序排列。如果順序錯了,低版本 Windows 抽取這些圖示時性能會很差。這意味着記憶體錯誤和不正确的繪制。還要注意低版本 Windows 有 10 個圖示的資源限制,而 Whistler 支援包含上千個圖示資源的圖示檔案。

可以這樣來看待新的圖示:過去您用象 Microsoft 畫筆這樣相對簡單的工具來建立圖示,而現在您需要用 Photoshop。

注意:

Gamani 工具、GIF Movie Gear for Icons 可以生成 24 位色彩、八位 Alpha 通道的 Windows 圖示 (ICO) 檔案。請參考 http://www.moviegear.com/foricons。

并列共享

新 UI 的運作依賴于一個滿足并列共享條件的結構。作為版本管理和 DLL 問題的一個解決方案,Microsoft 極力推薦應用程式應采用并列版本管理政策。正如 ComCtl 版本 6 實施所顯示的,并列元件是 Windows 開發的未來。這一節我們将概述 Windows XP 并列共享的新特性。在 2001 年 3 月,MSDN 将發表一篇文章進一步深入讨論這個主題。

有關并列元件共享問題和 DLL 重定向的背景知識,請參閱 David D'Souza、BJ Whalen 和 Peter Wilson 撰寫的“在應用程式中實施并列元件(擴充)”(英文)。

應用并列元件時,一個元件的多個版本将被同時安裝。應用程式被綁定到設計時采用并經過測試的特定版本的元件。

Windows XP 提供了基礎結構來支援集合以及隔離的應用程式,包括 COM+ 和 Win32 程式。從 Win32 應用程式擷取并列程式集不需要改變代碼。應用程式可以使用最新的系統程式集而不會帶來全局影響。

總之,由于隔離的應用程式比較可靠,它們具有更高的價值。在生成和分發過程中,它們都包含了所有必需的元件,不會受其他應用程式帶來的變化的影響。隔離的應用程式使用一個 XML 檔案作為聲明,該聲明包含對程式集或應用程式的自我描述。現在,所有的綁定和激活中繼資料,例如 COM 類、接口、類型庫都存儲在聲明中,而不是系統資料庫裡。有兩種類型的聲明檔案:應用程式聲明(描述隔離的應用程式),以及程式集聲明(描述各個程式集)。

隔離的應用程式可以使用并列程式集。程式集是進行命名、綁定、版本管理、部署和配置的基本機關。它們又有兩種變體,即共享和私有。共享程式集安裝在 Windows 目錄中的 WinSxS 檔案夾裡,可供計算機上的多個應用程式使用。私有程式集部署在應用程式的目錄結構中,并隻有該應用程式才能使用。

對于應用程式開發人員,使用并列共享還有另一個好處,那就是計劃可以更清晰,因為您的開發計劃不會受所采用元件的釋出計劃的影響。

快速使用者切換

Windows XP 引入了一種被稱為“快速使用者切換”的新功能。快速使用者切換基于 Windows 2000 的計算機共享功能和 Windows 2000 Terminal Server 的多任務特性,它使多個使用者可以很友善、快捷的共享同一台計算機。

調查表明 80% 的 Windows 個人使用者和他們的家庭成員共用一台計算機。盡管 Windows 98 有一個叫做配置檔案的功能,但很少有人使用。Windows 2000 提供了單獨管理帳号的特性,卻很難在家庭環境中使用。

Windows XP 改變了這一切。基于 Windows 2000 的配置檔案,在安裝過程中為所有使用者建立帳号。如果需要,使用者可以建立密碼,但預設情況下系統不要求密碼。一個友好的新歡迎螢幕代替了登入對話框,上面有使用者名、圖檔或圖示,而不是使用者代号或别名。并且,新的控制台小程式使編輯使用者帳号更加簡單。每個使用者都有各自的設定,包括牆紙、音樂、圖檔、個人收藏夾等等。

在快速使用者切換中,多個使用者使用同一台計算機時無需登出。相反,各個帳号總是登入的,使用者可以在所有打開的帳号之間迅速切換。

例如,父親回家來,開始使用他的機器。他打開 PowerPoint 來編寫一個文檔。然後兒子 Billy 要求用一會兒計算機,他傳回到“歡迎”螢幕,單擊“Billy”,然後登入并開始玩遊戲。但是,此時他的父親仍然處于登入狀态。如果需要,他無需登出就可以迅速切換回自己的打開的帳号。他的 PowerPoint 示範文稿仍然打開着,Internet 連接配接也會被保持。

一個相關的特性是遠端桌面,它使使用者能夠從遠端機器以自己的設定通路自己的資料。這種情形可能發生在一個網絡裡,也可能是使用者在辦公室中鎖定了工作站,回家,然後從家中的一台計算機來遠端控制工作站應用程式。

Windows XP 通過終端伺服器來實作這些功能。對于開發人員,支援快速使用者切換和過去可能遇到的一些情況大體相同,例如商業環境下的計算機共享、漫遊使用者、輪班使用者、居家辦公族,以及使終端伺服器環境中的伺服器程式運作良好。

MSDN 将在 2001 年 3 月的一篇文章中進一步探讨使用者切換。請參閱這篇文章:為 Microsoft Windows 2000 Terminal Services 和 Windows NT Server 4.0 優化應用程式,終端伺服器版(英文)。 現在,要記住為了支援快速使用者切換,應用程式應遵循已經确認的 Windows 資料和設定管理規範 (http://msdn.microsoft.com/library/default.asp? URL=/library/specs/w2kserve.htm)(英文)。

  • 預設設定為在“我的檔案”檔案夾中存儲使用者建立的資料。
  • 正确分類和存儲應用程式資料。
  • 遇到“通路被拒絕”消息時體面地降級。

此外,還要考慮一些因素。應用程式應滿足下列條件:

  • 支援“所有使用者”安裝。
  • 正确檢測其他執行個體。
  • 與服務通訊。

此外,要考慮當您的應用程式不在目前桌面時的情況:

  • 最小化處理器的占用。
  • 不要播放聲音。
  • 不要更新顯示。
  • 讓系統資源能夠檢測到它。

其他特性

雖然從開發的角度我們還可以再介紹一些 Windows XP 的特性,但全面介紹這個作業系統顯然已超出了本文的範疇。

電源管理:

Windows XP 采用 Windows 2000 的電源管理特性,Robert Di Benedetto 的文章“在 Windows 2000 應用程式中支援 OnNow(電源管理)的竅門”(英文)很好地介紹了這個問題。

GDI

+

Graphics Device Interface Plus (GDI+) 是 Microsoft Windows.NET 的一部分,提供二維矢量圖形、圖象處理和輸出功能。通過添加新特性和優化現有特性,GDI+ 改進了 GDI(較早期 Windows 版本提供的圖形裝置接口)。Beta 2 SDK 将提供更多資訊。

64 位 Windows:

Microsoft 從一個源代碼樹同時為 32 位和 64 位的 Windows 建構 Windows XP。在未來某一天,您的應用程式将成為 64 位的,我們極力推薦您現在就開始使您的應用程式符合 64 位系統的要求。請參閱 MSDN Library 中 Platform SDK 的有關小節,标題為“Getting Ready for 64-bit Windows”(為 64 位的 Windows 作好準備)。

支援高密度顯示:

133 DPI 新型螢幕已經面世,而 200 DPI 的螢幕也将推出。您需要用 140 DPI 字型和大圖示來測試您的應用程式。Windows XP 對話框、按鈕、标題欄和語音輸入都可以使用大字型。請在 2001 年 3 月的 MSDN 文章中查找有關如何為高密度顯示編寫應用程式的内容。

Microsoft Windows XP:它為開發人員提供了什麼? 摘要: 本文介紹 Microsoft Windows XP 的一些新特性并探讨這些變化給 Windows 軟體帶來的影響。集中讨論了 Windows XP 的新外觀和 ComCtl32、并列元件共享,以及快速使用者切換。

簡介

關于 Microsoft® Windows® XP,一個好消息當然是它具有各種精彩的新特性和能力。其次是,雖然系統有些變化,但隻要您能為 Windows 編寫成功的程式,您就能夠為新的 Windows XP 寫出更好的程式。

簡單地說,Windows XP(Beta 版代号為“Whistler”)是 Microsoft 期待已久的作業系統,它以 Microsoft Windows 2000 的優點為基礎,揉和并擴充了 Windows Millennium Edition (Me) 對個人使用者的親和力。

為 Windows XP 編寫程式需要一些新的技巧,不過這些技巧并不艱深。更重要的是我們一再提起(尤其是推出 Windows 2000 之後更加強調)的那些話:您的應用程式越“遵紀守法”,在 Windows XP 上它們就運作得越好。Windows XP 應用程式應該遵循您在幼稚園時學到的規則:共享您的資源,與他人和平共處,并且要守規矩。也就是說要“合作”。

初釋 Windows XP

Windows XP 是延續并準備替代 Microsoft Windows 2000 和 Microsoft Windows Me 的 Microsoft Windows 作業系統。Windows XP 采用 Windows 2000 的代碼基礎,繼承了它的可靠性和良好性能。Windows XP 還繼承和加強了 Windows Me 作業系統的新特性:系統恢複、Windows Media Player、Windows 鏡象擷取,等等。

對于用戶端的機器,Windows XP 有專業版和家用版兩個版本。專業版提供公司和其他企業所需的功能,适于商用和替代 Windows 2000 Professional。家用版則适于個人使用者和替代 Windows Me。Windows XP 的兩個版本都包含一些共同的特性,例如對數字媒體的增強支援,快速使用者切換新帶來的計算機共享能力。

在伺服器端,有三種與 Windows 2000 伺服器配置對應的版本:伺服器;進階伺服器,适于部門級伺服器、業務單元、Web 應用支援等;資料中心伺服器,适于高可用性和關鍵任務應用。本文集中讨論用戶端版本。至于各伺服器版本,它們各有一些類似的特性組合,我們将在以後的文章中再讨論。

為了實作提供一套同時滿足商務和個人應用的承諾,Windows XP 增加了一些新特性。也許最明顯的一點就是它有一個全新的外形,完全是新的外觀和更大、更好的圖示,用最小的開發成本就可以給使用者更好的使用體驗。工作列上有許多改進,使使用者更易于組織資訊,例如把同一應用程式的視窗放到一起。此外還有更多的内容:增強的電源管理,并列元件共享,快速使用者切換,支援高密度顯示,Passport 內建,更易于使用的氣球提示,還有 GDI+。這個清單并未包含全部内容。

在這篇文章中,我們将簡要地介紹您需要了解的一些重要方面:用新的 ComCtl32 版本 6 編寫新 UI,運用并列共享,編寫利用 Windows XP 快速使用者切換和遠端桌面特性的應用程式。在後面幾個月,MSDN 将更深入地介紹這些和其他更多專題。PSDK 包含關于這些特性的資訊。Windows XP Beta 2 SDK 版有更多内容,将随 Beta 2 軟體分發給所有的 MSDN 訂戶。如果您不是訂戶,在今年晚些時候才可能得到它。

新面貌

Microsoft Windows 的外觀風格自 Windows 95 以來一直未發生顯著改變。輪廓分明的灰色三維對話框控件已成為 Windows 的同義詞。随着 Windows XP 的釋出,我們将看到一個全新的外觀風格。Windows XP 以由 Windows 95 Plus Pack 首先引入的桌面主題為基礎,提供多個主題來确定不同的系統外觀風格。原來的桌面改變使用者色彩配置、字型和字号、牆紙設定,而 Windows XP 主題改變控件、視窗邊框和菜單的繪制方式。

工作列已被全面翻新。由于工作列空間有限,視窗開得越多,按鈕就變得越小。我們采取了措施來消除這個問題。大家都曾經碰到過工作列按鈕變得太小而幾乎無法使用的情形。如果由于同時打開許多視窗而導緻按鈕太小,Windows XP 将把按鈕分組。例如,假設使用者打開了五個 Microsoft® Word 文檔,顯示的按鈕将是一個而不是五個。隻要單擊這個按鈕,就會出現一個菜單,列出所有打開的視窗。

提醒框也得到了整理。提醒框本來是用來向使用者提示目前問題的,但後來逐漸失去了這個作用而成為啟動應用程式的地方。Windows XP 把目前并未給使用者提示資訊的圖示隐藏起來,進而減少了混亂。使用者通過 > 形符号可以顯露隐藏的圖示,也可以關閉這種行為,選擇哪些圖示總是顯示而哪些總是隐藏。

Windows 打開的方式改變了。為了使桌面整潔,除了資源回收筒外,所有圖示都移到了新的更大的開始菜單中。在開始菜單中,系統提供的功能單獨出現在一個藍色的區域中,旁邊顯示使用者最常使用的應用程式。為了使桌面更加整潔,Windows XP 會定期搜尋沒使用過的應用程式圖示,然後由桌面向導幫助使用者把它們從桌面上清除掉。放在桌面上的所有資料則保持原樣。

Windows XP 本身提供兩種外觀風格:傳統 Windows 風格和我們稱為“Whistler 風格”的新風格。在此基礎上,Windows XP 有讓 ISV 與新風格同步的機制,同時 Microsoft 會逐漸添加可展現個人偏好的各種風格,您為 Windows XP 編寫的應用程式将能夠自動接受它們。

乍一看,多重 Windows XP 風格很象 Window 媒體播放機這類程式的替換外觀功能,但實際上有些差別。主題可改變作業系統的外觀風格,但仍然提供和 Windows 早期版本一緻的 UI。這一點很重要,因為主題是在整個系統範圍内應用的。改變應用程式的外觀是可行的,例如去除一些按鈕。但在作業系統層次上,這并不合适。主題檔案的格式不是公開的。Microsoft 保留了主題的設計控制權,以保持一緻的使用者界面并能夠確定設計的連續性。Windows XP 将不提供主題開發工具。

您一定很熟悉傳統風格,就是那種灰灰的、輪廓分明的視窗和對話框。Windows XP 的這個選項允許使用者保持熟悉的界面。Windows XP Whistler 風格提供了一套全新的外觀效果。盡管新的外觀風格和傳統視窗有很大差異,總體效果還是讓人感到相當熟悉。Windows XP 新增加了一種按鈕和頁籤,當滑鼠指針從上面移過時,它們會改變顔色,和 Web 頁面上的熱點十分相似。

主題和控件

通過 Windows XP,Microsoft 把 User Win32 控件和 ComCtl32 版本 6 中的通用外殼控件結合起來了。這些新控件使用新的主題管理程式來顯示适當的外觀效果。

在以前的 32 位 Windows 中,部分控件在 User32.dll 中實作,其他的則在 ComCtl32 中實作。視窗非客戶區域(例如邊框和菜單)的顯示是由 User32.dll 完成的。User32.dll 是作業系統的核心元件,是以它隻能與相應特定版本的作業系統一同使用。對于 Windows 2000 和 Windows Me,ComCtl32 受 Windows 檔案保護機制控制,是以隻能通過系統更新或 Service Pack 來更改。對于以前版本的 Windows,ComCtl32 實際上是和許多系統元件和應用程式一同分發的,常常造成安裝一種應用程式或某個系統元件後另一種應用程式無法運作的情況。Windows XP 和最新的 Windows 2000 Service Pack 使用相同的 ComCtl32。

基于并列元件共享,Windows XP 為 Windows 元件開發指出了新方向。請記住控件外觀是由新的主題來确定。為了能在 Windows 中引入新外觀風格,并使設計人員能夠創新設計 UI 的外觀風格又不要求更改核心功能,Microsoft 正在引入主題管理程式 uxtheme.dll。這個新的 DLL 提供新控件的繪制支援,并且向控件提供資訊 API 來确定各個部分的位置。所有應用程式的非客戶區域,包括滾動條和标題欄,除非是自定義繪制的,均由它産生具有新 Windows XP 風格的外觀。這意味着每一個應用程式都将涉及主題管理程式。主題管理程式和 ComCtl32 一起來設定大部分 Windows 應用程式的主題,同時提供一定的靈活性,使 ISV 設計者能夠讓新的 Windows XP 介入他們的應用程式。

我們充分意識到新的 ComCtl32 可能會中斷一些應用程式。為了防止出現這種情況,ComCtl32 版本 6 以共享程式集的形式和 ComCtl32 版本 5 并列安裝在 System32 目錄下。隻有向作業系統聲明能夠使用這個新 DLL 的應用程式才能擷取它。現有應用程式如果不提供聲明就繼續使用 ComCtl32 版本 5。Windows XP 同時提供版本 5 和 6 的 DLL 并以并列方式安裝。在後面的小節我們将進一步讨論有關聲明的問題。

注意:

ComCtl32 版本 6 将不提供給早期的 Windows 版本;它們将繼續使用 ComCtl32 版本 5。版本 5 不提供新外觀效果、超連結控件或分組檢視等特性。如果您使用這些特性,就應該在 Windows 95、Windows 98 和 Windows 2000 上測試您的應用程式。

要確定您的應用程式在 Windows XP 中使用新的外觀風格,您需要使用一個聲明來指定對 ComCtl32 版本 6 的依賴,進而確定連結到 ComCtl32。如果您有任何自行繪制的控件,那麼今後要通過 uxtheme.dll 來繪制它們,而不是自己繪制。如果您想讓它們看起來和 UI 的其他部分相似,就應該這樣做。

下面這段代碼繪制可識别主題的按鈕:

rtButton.top = 100;rtButton.left = 10;rtButton.bottom = 130;rtButton.right = 200;hTheme = OpenThemeData(hWnd, L"Button");DrawThemeBackground(hTheme, hdc, BP_PUSHBUTTON,  PBS_NORMAL, &rtButton, NULL);DrawThemeText(hTheme, hdc, BP_PUSHBUTTON, PBS_NORMAL, wzTMB, wcslen(wzTMB),DT_CENTER | DT_VCENTER | DT_WORD_ELLIPSIS | DT_SINGLELINE, 0, &rtButton);
           

建立自行繪制的按鈕的一個常見原因是想添加位圖。現在,ComCtl32 版本 6 的按鈕通過與一個圖象清單相關聯,能夠結合開發人員提供的位圖。無論您是更新現有應用程式,還是編寫新應用程式,一定要用 ComCtl32 版本 6 聲明和版本 5 測試您的應用程式,看看您的視窗、對話框和新外觀放在一起效果如何。

下面的代碼繪制帶位圖的按鈕:

Button_ImageList.himl = himl;Button_ImageList.uAlign = BUTTON_IMAGELIST_ALIGN_LEFT;Button_ImageList.margin.top = 3;Button_ImageList.margin.bottom = 3;Button_ImageList.margin.left = 3;Button_ImageList.margin.right = 3;hwndImageBtn = CreateWindow(L"Button",wzText,WS_CHILD | BS_PUSHBUTTON,0,0,0,0,hWndParent,
NULL,hInst,NULL);Button_SetImageList(hwndImageBtn, &Button_ImageList);Button_GetIdealSize(hwndImageBtn, &sizeBtn);SetWindowPos(hwndImageBtn, hWndParent, 10, 10, sizeBtn.cx, sizeBtn.cy, SWP_SHOWWINDOW | 
SWP_NOZORDER | SWP_NOACTIVATE);
           
注意:

如果您用 Microsoft Internet Explorer 技術以 HTML 繪制 UI,您可以在 HTML 中放一個元标記來確定 HTML 控件采用主題。

注意:

提醒一下,對于第三方擴充,在您将它們全部進行測試之前,請不要為它們設定主題。關于主要第三方應用程式的情形,我們将在一篇預定于 2001 年 3 月發表的 MSDN 文章中讨論如何在您的程序中處理其他應用程式。

圖示

與傳統圖示相比,Windows XP 中的圖示不僅看起來漂亮,而且能夠容納更多細節來表示更複雜和完善得多的資訊。新圖示可支援最多 24 位的色彩深度,在 Alpha 通道中支援 8 位掩碼。用于圖示、平鋪和縮略視圖中的圖象可以是 48x48 象素那麼大。順便說一句,以平鋪顯示圖示是表示資訊的絕好的新方法。這種圖示帶有兩三行注釋,您可以在圖示旁邊标明關鍵資訊。

圖示格式并未改變,Microsoft 已在圖象清單 API 中添加支援來顯示 32 位的圖示。為了正确制作這些圖示,使它們在早期版本的 Windows 中也能使用,您需要為每個圖示制作多幅圖象,如圖 2 所示。

圖 2:多幅圖示圖象

在這個例子中,前三個圖象用于 16 色的安全模式。後面三個圖示用于 Windows XP 256 色模式。最後三個圖示有 Alpha 通道,僅适用于以 24 位顔色運作的 Windows XP 或更高版本的作業系統。

請注意,在圖示格式中這些圖象應該按順序排列。如果順序錯了,低版本 Windows 抽取這些圖示時性能會很差。這意味着記憶體錯誤和不正确的繪制。還要注意低版本 Windows 有 10 個圖示的資源限制,而 Whistler 支援包含上千個圖示資源的圖示檔案。

可以這樣來看待新的圖示:過去您用象 Microsoft 畫筆這樣相對簡單的工具來建立圖示,而現在您需要用 Photoshop。

注意:

Gamani 工具、GIF Movie Gear for Icons 可以生成 24 位色彩、八位 Alpha 通道的 Windows 圖示 (ICO) 檔案。請參考 http://www.moviegear.com/foricons。

并列共享

新 UI 的運作依賴于一個滿足并列共享條件的結構。作為版本管理和 DLL 問題的一個解決方案,Microsoft 極力推薦應用程式應采用并列版本管理政策。正如 ComCtl 版本 6 實施所顯示的,并列元件是 Windows 開發的未來。這一節我們将概述 Windows XP 并列共享的新特性。在 2001 年 3 月,MSDN 将發表一篇文章進一步深入讨論這個主題。

有關并列元件共享問題和 DLL 重定向的背景知識,請參閱 David D'Souza、BJ Whalen 和 Peter Wilson 撰寫的“在應用程式中實施并列元件(擴充)”(英文)。

應用并列元件時,一個元件的多個版本将被同時安裝。應用程式被綁定到設計時采用并經過測試的特定版本的元件。

Windows XP 提供了基礎結構來支援集合以及隔離的應用程式,包括 COM+ 和 Win32 程式。從 Win32 應用程式擷取并列程式集不需要改變代碼。應用程式可以使用最新的系統程式集而不會帶來全局影響。

總之,由于隔離的應用程式比較可靠,它們具有更高的價值。在生成和分發過程中,它們都包含了所有必需的元件,不會受其他應用程式帶來的變化的影響。隔離的應用程式使用一個 XML 檔案作為聲明,該聲明包含對程式集或應用程式的自我描述。現在,所有的綁定和激活中繼資料,例如 COM 類、接口、類型庫都存儲在聲明中,而不是系統資料庫裡。有兩種類型的聲明檔案:應用程式聲明(描述隔離的應用程式),以及程式集聲明(描述各個程式集)。

隔離的應用程式可以使用并列程式集。程式集是進行命名、綁定、版本管理、部署和配置的基本機關。它們又有兩種變體,即共享和私有。共享程式集安裝在 Windows 目錄中的 WinSxS 檔案夾裡,可供計算機上的多個應用程式使用。私有程式集部署在應用程式的目錄結構中,并隻有該應用程式才能使用。

對于應用程式開發人員,使用并列共享還有另一個好處,那就是計劃可以更清晰,因為您的開發計劃不會受所采用元件的釋出計劃的影響。

快速使用者切換

Windows XP 引入了一種被稱為“快速使用者切換”的新功能。快速使用者切換基于 Windows 2000 的計算機共享功能和 Windows 2000 Terminal Server 的多任務特性,它使多個使用者可以很友善、快捷的共享同一台計算機。

調查表明 80% 的 Windows 個人使用者和他們的家庭成員共用一台計算機。盡管 Windows 98 有一個叫做配置檔案的功能,但很少有人使用。Windows 2000 提供了單獨管理帳号的特性,卻很難在家庭環境中使用。

Windows XP 改變了這一切。基于 Windows 2000 的配置檔案,在安裝過程中為所有使用者建立帳号。如果需要,使用者可以建立密碼,但預設情況下系統不要求密碼。一個友好的新歡迎螢幕代替了登入對話框,上面有使用者名、圖檔或圖示,而不是使用者代号或别名。并且,新的控制台小程式使編輯使用者帳号更加簡單。每個使用者都有各自的設定,包括牆紙、音樂、圖檔、個人收藏夾等等。

在快速使用者切換中,多個使用者使用同一台計算機時無需登出。相反,各個帳号總是登入的,使用者可以在所有打開的帳号之間迅速切換。

例如,父親回家來,開始使用他的機器。他打開 PowerPoint 來編寫一個文檔。然後兒子 Billy 要求用一會兒計算機,他傳回到“歡迎”螢幕,單擊“Billy”,然後登入并開始玩遊戲。但是,此時他的父親仍然處于登入狀态。如果需要,他無需登出就可以迅速切換回自己的打開的帳号。他的 PowerPoint 示範文稿仍然打開着,Internet 連接配接也會被保持。

一個相關的特性是遠端桌面,它使使用者能夠從遠端機器以自己的設定通路自己的資料。這種情形可能發生在一個網絡裡,也可能是使用者在辦公室中鎖定了工作站,回家,然後從家中的一台計算機來遠端控制工作站應用程式。

Windows XP 通過終端伺服器來實作這些功能。對于開發人員,支援快速使用者切換和過去可能遇到的一些情況大體相同,例如商業環境下的計算機共享、漫遊使用者、輪班使用者、居家辦公族,以及使終端伺服器環境中的伺服器程式運作良好。

MSDN 将在 2001 年 3 月的一篇文章中進一步探讨使用者切換。請參閱這篇文章:為 Microsoft Windows 2000 Terminal Services 和 Windows NT Server 4.0 優化應用程式,終端伺服器版(英文)。 現在,要記住為了支援快速使用者切換,應用程式應遵循已經确認的 Windows 資料和設定管理規範 (http://msdn.microsoft.com/library/default.asp? URL=/library/specs/w2kserve.htm)(英文)。

  • 預設設定為在“我的檔案”檔案夾中存儲使用者建立的資料。
  • 正确分類和存儲應用程式資料。
  • 遇到“通路被拒絕”消息時體面地降級。

此外,還要考慮一些因素。應用程式應滿足下列條件:

  • 支援“所有使用者”安裝。
  • 正确檢測其他執行個體。
  • 與服務通訊。

此外,要考慮當您的應用程式不在目前桌面時的情況:

  • 最小化處理器的占用。
  • 不要播放聲音。
  • 不要更新顯示。
  • 讓系統資源能夠檢測到它。

其他特性

雖然從開發的角度我們還可以再介紹一些 Windows XP 的特性,但全面介紹這個作業系統顯然已超出了本文的範疇。

電源管理:

Windows XP 采用 Windows 2000 的電源管理特性,Robert Di Benedetto 的文章“在 Windows 2000 應用程式中支援 OnNow(電源管理)的竅門”(英文)很好地介紹了這個問題。

GDI

+

Graphics Device Interface Plus (GDI+) 是 Microsoft Windows.NET 的一部分,提供二維矢量圖形、圖象處理和輸出功能。通過添加新特性和優化現有特性,GDI+ 改進了 GDI(較早期 Windows 版本提供的圖形裝置接口)。Beta 2 SDK 将提供更多資訊。

64 位 Windows:

Microsoft 從一個源代碼樹同時為 32 位和 64 位的 Windows 建構 Windows XP。在未來某一天,您的應用程式将成為 64 位的,我們極力推薦您現在就開始使您的應用程式符合 64 位系統的要求。請參閱 MSDN Library 中 Platform SDK 的有關小節,标題為“Getting Ready for 64-bit Windows”(為 64 位的 Windows 作好準備)。

支援高密度顯示:

133 DPI 新型螢幕已經面世,而 200 DPI 的螢幕也将推出。您需要用 140 DPI 字型和大圖示來測試您的應用程式。Windows XP 對話框、按鈕、标題欄和語音輸入都可以使用大字型。請在 2001 年 3 月的 MSDN 文章中查找有關如何為高密度顯示編寫應用程式的内容。

繼續閱讀