为了避免上述所有的问题,把这些接口包装到类库 。一个RIBBON类,并且你使用如下:
RIBBON(HWND hh = 0);~RIBBON();bool Initialize();
Ribbon初始化成功返回Ture
bool LoadMarkup(HINSTANCE hInst,LPCWSTR resourceName);
Ribbon初始化成功返回Turebool LoadMarkup(HINSTANCE hInst,LPCWSTR resourceName);
从资源里加载ribbon,如果现有的ribbon被加载,则释放它 。void DestroyMarkup();销毁加载的ribbon 。int& DesiredHeight();
返回理想高度ribbonvoid SetHeight(int);允许设置ribbon高度
调用类库向父窗口发送一个预定义的MESSAGE_RIBBON (const int MESSAGE_RIBBON = RegisterWindowMessage(L"{E733E4DA-904C-486b-B5FB-6201773D69DE}");),与 WPARAM设置为RIBBON *类,和LPARAM设置为RIBBON_MESSAGE结构:
struct RIBBON_MESSAGE{ IUIFramework * u_f;
// Pointer to the IUIFramework of the ribbon UINT32 cmd;
// Command IDUINT32 reason;
// Reason code (When View is changed) UI_COMMANDTYPE type;
// Type of the command UI_VIEWTYPE vtype;
// Verb Type of the view change (When View is changed) UI_VIEWVERB vverb
; // Verb of the view change (When View is changed) UI_EXECUTIONVERB verb;
// Verb of the command const PROPERTYKEY* key;
// Contains the new value const PROPVARIANT* cv;
// Contains the current value IUISimplePropertySet* pset;
// Contains an interface which you can set/query values void* view;
// Contains an IUnknown* of the view interface
// (when view is changed) which you
// can use to query for an IUIRibbon. bool update;
// true if view is changed. };
因此,如果您只是想重定向消息到WM_COMMAND ,您检查update ==false,erb== UI_EXECUTIONVERB_EXECUTE ,和type == UI_COMMANDTYPE_ACTION。
LRESULT CALLBACK Main_DP(HWND hh,UINT mm,WPARAM ww,LPARAM ll)
{
if (mm == MESSAGE_RIBBON)
{
RIBBON_MESSAGE* rm = (RIBBON_MESSAGE*)ll;
if (!rm)
if (rm->update == false && rm->verb == UI_EXECUTIONVERB_EXECUTE
&& rm->type == UI_COMMANDTYPE_ACTION)
SendMessage(hh,WM_COMMAND,rm->cmd,0);
}
}
分析Ribbon的XML数据格式由于ribbon本质上是一个代表性的一个XML地图,在这里您将实际花费大部分的时间来制定一个好的和工作ribbon. 。
ribbon 基本要素:一套命令,每个人可以有一个ID,一个符号,一个标签,一个提示,和一套图像 。您定义这些命令为"按钮"和其他因素,如标签或一组标签 。一套要素,包括一个"应用程序的菜单" ,一个"快速访问工具栏"和"ribbon" ,其中载有一些标签 。每个标签可以有一些组,每个组都可以有一些预定义的控制 。
这些组都必须标明具体的"大小"和布局;所以举例来说,如果你想说, 6组内的按钮,你只有三种预定义的方式,安排他们 。这里是一组实例命令:
Comment="New"
Id="22001"
TooltipTitle="Tooltip Title"
TooltipDescription="Tooltip Text">
推荐阅读
- 对Windows 7系统大瘦身的详细介绍
- Windows7系统减肥3G的3个方法
- 64位windows 7与DNF的问题 轻松一招解决
- 巧用组策略提高Windows 7系统安全性
- 压榨空间 给你的Windows7“减肥”
- 找回被删改文件 Windows 7文件恢复
- Windows 7 默认字体一招轻松还原
- Windows 7出现“黑屏”的紧急处理
- Windows 7 Enterprise 90天评估期活动延长到年底
- Windows 7彻底卸载IE 8浏览器有门道