日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

基于Windows 7中的 Ribbon開發(fā)技術(shù)應(yīng)用

Windows 7的畫圖工具采用了微軟所稱的Scenic Ribbon 界面,這種界面起初是在Office 2007中出現(xiàn)的,也在WordPad出現(xiàn)過 。雖然很多用戶還在抱怨"不習(xí)慣Ribbon界面"、"很多功能找不到位置"等等,但是,隨著微軟的"強制" 推行,Ribbon界面也在越來越被人們所接受, 很多應(yīng)用軟件也開始采用Ribbon界面 。更重要的是,在即將到來的Windows 7中,操作系統(tǒng)本身更是大量地應(yīng)用了Ribbon界面 。不管我們愿意或者不愿意,Ribbon界面開始大張旗鼓地攻占我們的軟件界面,成為繼下拉式菜單后新的標(biāo)準(zhǔn)用戶界面 。作為用戶,我們需要逐漸熟悉這種新的軟件用戶界面;而作為開發(fā)者,更是需要了解和認(rèn)識這種新的軟件用戶界面,新的交互方式,從而利于這種新界面的優(yōu)勢,為用戶提供更加優(yōu)秀的軟件 。"Ribbon來了!"
為了支持開發(fā)人員,微軟正在確保其設(shè)備驅(qū)動程序和應(yīng)用模式在 Vista和Windows 7 之間不變,以確保其兼容性 。但是公司正在努力工作使開發(fā)人員接觸Windows 7的新技術(shù),以使他們能夠在他們自己的解決方案中應(yīng)用一些新的高級特性 。這包括諸如Jump Lists,PowerShell(《Windows Powershell應(yīng)用編程最佳實踐》此書我正在編寫中6月左右出版),"畫圖"的Scenic Ribbon control以及寫字板,以及其它的組件 。
在Office 2007之后介紹了這個Scenic Ribbon.許多昂貴的商業(yè)解決方案都已經(jīng)用到它 。但最后,在即將推出的Windows 7,微軟推出了Scenic Ribbon.在這里我第一次嘗試在實例中使用從而在這里講解出來 。Scenic Ribbon是一個在ActiveX對象附加在窗口上,它的整個寬度的窗口,它的高度可配置的 。它的尺寸會根據(jù)你的需要而調(diào)整 。Ribbon從一個XML 中獲得顯示數(shù)據(jù) 。這意味著您只使用幾個函數(shù)調(diào)用,一些初始化并加載數(shù)據(jù),以及一個意外事件處理程序觸發(fā)Ribbon 。由于Ribbon是一個 ActiveX界面,應(yīng)用程序在XP或Vista下使用會初始化失敗,但它會繼續(xù)運行 。當(dāng)創(chuàng)建的XML時,運行intentcl.exe程序,創(chuàng)建項目工程文件 。
- 創(chuàng)建一個IUIFramework
IUIFramework* u_f = 0;HRESULT hr = CoCreateInstance(CLSID_ScenicIntentUIFramework, 0,CLSCTX_ALL,__uuidof(IUIFramework),(void**)&u_f);
- 執(zhí)行一個IUIApplication
這個界面(除了IUnknown成員)有以下三個功能:
1、當(dāng)一個命令創(chuàng)建時調(diào)用ribbon:
virtual HRESULT __stdcall OnCreateUICommand(UINT32 commandId,UI_COMMANDTYPE typeID,IUICommandHandler **commandHandler);
2、當(dāng)ribbon被一個命令是釋放時:
virtual HRESULT __stdcall OnDestroyUICommand(UINT32 commandId, UI_COMMANDTYPE typeID,IUICommandHandler *commandHandler);
3、當(dāng)ribbon變化時,視圖也被相應(yīng)的改變:
virtual HRESULT __stdcall OnVIEwChanged(UINT32 viewId,UI_VIEWTYPE typeID, IUnknown *view,UI_VIEWVERB verb,INT32 uReasonCode);
-調(diào)用IUIFramework::Initialize( )與父窗口的ribbon,和執(zhí)行IUIApplication。-調(diào)用IUIFramework::LoadUI( )與HINSTANCE和資源名稱 。
下面的圖解釋了需要采取的步驟,以實現(xiàn)一個簡單的Ribbon應(yīng)用 。
命令處理程序OnCreateUICommand是調(diào)用每一個命令 ??纯聪旅娴拿钍荴ML格式 。必須返回一個執(zhí)行IUICommandHandler(AddRef () !)將處理命令兩個成員函數(shù):
HRESULT __stdcall UpdateProperty(UINT32 commandId,REFPROPERTYKEY key,const PROPVARIANT *currentValue,PROPVARIANT *newValue);
當(dāng)命令調(diào)用執(zhí)行時 。這個"verb"是UI_EXECUTIONVERB枚舉,并通知您,觸發(fā)什么樣的事件,例如,字體選擇下拉,一個按鈕按下等使用OnDestroyUICommand時,將沒有必要了調(diào)用接口,但不調(diào)用Release()。Ribbon將調(diào)用它 。這只是通知你的目的是要被銷毀,而不是請求釋放它自己 。
nVIEwChanged允許從 IUIFramework和查詢其狀態(tài)請求一個接口 。如果typeId == UI_VIEWTYPE_RIBBON和verb== UI_VIEWVERB_CREATE或UI_VIEWVERB_SIZE 例如,這會告訴你,ribbon創(chuàng)建或改變大小,這樣你就可以查詢IUnknown指針的IUIRibbon并獲得其預(yù)期的高度 。

推薦閱讀