Windows区对象(Bands)的创建与定制
2009-11-11 20:32:13 来源:WEB开发网注册
区对象必须作为进程内服务器(in-process)注册。其线程模型必须为“Apartment”。也就是说区对象必须以DLL的形式来实现。用来描述服务器注册条目的缺省值是一个菜单文本串。就拿浏览栏来说。这个菜单出现在资源管理器或IE “查看(View)”菜单的“浏览栏(Explorer Bar)”子菜单中。而工具栏的菜单则出现在资源管理器或IE “查看(View)”菜单的“工具栏(Toolbars)”子菜单中。桌面区出现在任务栏上下文菜单的“工具栏(Toolbars)”子菜单中。作为菜单资源,提供键盘快捷的方法与一般菜单快捷键相同。也就是将“&”字符放在某个单词字母前表示这个字母显示下划线来指示快捷键。
通常区对象的注册条目如下:
HKEY_CLASSES_ROOT
工具栏区对象必须还要注册对象的CLSID。为此必须在HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Toolbar下创建一个REG_SZ值,用工具栏区对象的CLSID GUID串命名。如:
...
CLSID
...
{Band 对象的 CLSID GUID} = "菜单文本串"
InProcServer32 = "DLL 路径名"
ThreadingModel = "Apartment"
HKEY_LOCAL_MACHINE
Software
Microsoft
Internet Explorer
Toolbar
{ Band 对象的 CLSID GUID }
除此之外,还有几个可选的注册值可以加到注册表中,本文的例子中未使用这些值。
HKEY_CLASSES_ROOT\CLSID\{Band 对象的 CLSID GUID}\Instance\CLSID, 它应该被设置为 "{4D5C8C2A-D075-11D0-B416-00C04FB90376}".
HKEY_CLASSES_ROOT\CLSID\{Band对象的CLSID GUID}\Instance\InitPropertyBag\Url 它应该被设置为要在浏览栏显示的包含HTML内容的文件位置。
\HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Explorer Bars\{Band 对象的 CLSID GUID}\BarSize 它应该被设置为栏目的高和宽,它需要八个字节才能作为串放入注册表,字节之间用逗号分开。开始的四个字节一像素为单位指定大小,格式要用十六进制,从最左边字节开始。最后四个字节是保留字节,应该将它置为零。例如,垂直浏览栏的缺省宽度为291(0x123)像素,则BarSize 的值应该是"23,01,00,00,00,00,00,00"
如果要用浏览栏显示HTML,则前两个注册项是必须的。最后一个注册项则根据垂直的或者水平的浏览栏定义相应的缺省宽度和高度。
能显示HTML的浏览栏(缺省宽度为291各像素单位)注册表条目的形式如下:
HKEY_CLASSES_ROOT
...
CLSID
...
{Band 对象的 CLSID GUID} = "菜单文本串"
InProcServer32 = "DLL 路径名"
ThreadingModel = "Apartment"
Instance
CLSID = "{4D5C8C2A-D075-11D0-B416-00C04FB90376}"
InitPropertyBag
Url = "HTML文件"
...
HKEY_CURRENT_USER
...
Software
...
Microsoft
...
Internet Explorer
...
Explorer Bars
{ Band 对象的 CLSID GUID }
BarSize = "23,01,00,00,00,00,00,00"
你可以通过编程的方式来处理区对象类别 CATID 的注册。创建一个组件类别管理器对象(CLSID_StdComponentCategoriesMgr)并请求一个指向ICatRegister接口的指针。将区对象的CLSID和CATID传递到ICatRegister::RegisterClassImplCategories。
更多精彩
赞助商链接