📄 csdn_文档中心_创建更易理解的动态注释用户界面.htm
字号:
<TD width="26%"><FONT class=90v size=2>(VT_I4)</FONT></TD></TR>
<TR vAlign=top>
<TD width="74%"><FONT class=90v
size=2>PROPID_ACC_STATE</FONT></TD>
<TD width="26%"><FONT class=90v size=2>(VT_I4)</FONT></TD></TR>
<TR vAlign=top>
<TD width="74%"><FONT class=90v
size=2>PROPID_ACC_VALUE</FONT></TD>
<TD width="26%"><FONT class=90v
size=2>(VT_BSTR)</FONT></TD></TR></TBODY></TABLE><BR>
<P><B>示例 1:设置对话框中图标的 Description 属性。</B> <PRE><CODE>#include <oleacc.h>
...
BOOL CALLBACK DialogProc( HMENU Hmenu,
UINT uMsg,
WPARAM wParam,
LPARAM lParam )
{
switch( uMsg )
{
case WM_INITDIALOG:
{
IAccPropServices * pAccPropSvc = NULL;
HRESULT hr = CoCreateInstance( CLSID_AccPropServices,
NULL,
CLSCTX_SERVER,
IID_IAccPropServices,
(void **) & pAccPropSvc );
if( hr == S_OK && pAccPropSvc )
{
HMENU HmenuIcon = GetDlgItem( Hmenu, IDC_ICON1);
pAccPropSvc->SetHmenuPropStr( HandleToLong(HmenuIcon),
OBJID_CLIENT,
0,
PROPID_ACC_DESCRIPTION,
L"Picture of a thermometer");
pAccPropSvc->Release();
}
...
}
...
}
...
}
</CODE></PRE>
<P><B>数值映射注释</B>
<P>除了直接注释 <B><FONT face=arial>IAccessible</FONT></B>
属性外,经常需要将控件专用数值或索引转换为用户可理解的字符串。一个示例就是<B>显示属性,设置</B>选项卡上的屏幕分辨率游标。尽管每个游标位置对应于不同的分辨率(例如,640
x 480,1024 x 768),但是控件并不知道这种对应关系,因此不能将该信息传递给 Active
Accessibility。只有使用该控件的开发人员才能提供这种关系。</P>
<P>幸运的是,利用 Active Accessibility 2.0
的数值映射注释,该任务极为简单。要使用这种注释,开发人员定义从游标位置到显示分辨率的映射并将其传递给注释服务。Active
Accessibility 将控件内部值映射到应该显示的属性字符串。</P>
<P><B>支持的映射</B>
<P>由于需要控件专用知识来支持映射,因此只有有限数量的控件和属性支持数值映射注释。</P>
<P class=indent><B>游标数值映射:<FONT
face=arial>PROPID_ACC_VALUEMAP<BR></FONT></B>由 LEACC
游标(也称为轨迹条)代理所支持,该属性包含从内部游标位置到人类可读字符串的映射。如果当前游标值存在于数值映射中,将显示对应的字符串,替换默认的百分比字符串(例如,"50")。</P>
<P class=indent>这在游标用于从有限的离散选项中选择一个选项的场合很有用。</P>
<P class=indent><B><FONT face=arial>ListView 和 TreeView
</FONT>数值映射:<FONT face=arial>PROPID_ACC_ROLEMAP,
PROPID_ACC_STATEMAP</B></P></FONT>
<P class=indent>由 OLEACC ListView 和 TreeView
代理所支持,这些映射提供从状态图象索引到角色和状态值的映射。</P>
<P class=indent>某些 ListViews 和 TreeViews
使用外观如复选框和单选按钮的状态图象来实现列表或复选框和单选选项树。这些映射使这些状态图象映射到相应的角色(典型情况为
ROLE_SYSTEM_RADIOBUTTON 或 ROLE_SYSTEM_CHECKBOX)和附加状态位(典型情况为
STATE_SYSTEM_CHECKED)。</P>
<P class=indent>注释状态值与 OLEACC(例如焦点和可见性)使用位 OR 运算符 (|)
计算出的状态位相结合。</P>
<P class=indent>映射可以使用 TreeView 或 ListView
项的图象索引、状态图象索引或覆盖图象索引作为关键字,并分别以 0、1 或 2 等索引关键字表示。</P>
<P><B>注释映射格式</B>
<P>注释映射包含一系列以分隔字符分隔的<B>字段</B>:
<UL type=disc>
<LI><B>大写字母 'A':</B>表示使用了该特殊编码方案。未来的编码方案可能支持附加前缀。<BR><BR>
<LI><B>分隔字符:</B>典型情况使用分号 (':'),但是这可以是除空 (NUL)
或空格以外的任何字符。由于该字符将用于分隔字段的分隔符,因此不能用作映射值的一部分。<BR><BR>
<LI><B>表示使用哪个关键字的值:</B>对于 <B><FONT face=arial>TreeView</FONT></B>
和 <B><FONT face=arial>ListView</FONT></B>
角色和状态映射,该关键字可以为表示各个图象索引、状态图象索引或覆盖图象索引的 0、1 或
2。对于游标或其他没有提供关键字选项的控件,该值必须为 0。<BR><BR>
<LI>分隔符<BR><BR>
<LI>一系列键-值对,每对由下列内容组成:
<UL type=disc>
<LI><B>键字符串:</B>通常为数字,可以为十进制或十六进制(以 "0x" 前缀开头)。<BR><BR>
<LI><B>分隔符</B><BR><BR>
<LI><B>值字符串:</B>这是数值映射中的字符串和角色和状态映射中的数字(可以使用十进制或十六进制)。<BR><BR>
<LI><B>分隔符</B> </LI></UL></LI></UL>
<P>映射字符串的示例包括:</P><PRE><CODE>A:0:0:Cold:1:Warm:3:Hot:
</CODE></PRE>
<P>如果数值映射应用于游标控件,游标在位置 1 时将显示 "Warm"。请注意该示例映射中没有值
2,因此在该位置时将显示默认值(在游标中,应该是百分比值 "33")。</P><PRE><CODE>A:1:0:34:1:0x2C:
</CODE></PRE>
<P>该映射中的初始值 '1' 表示状态图象索引(而不是图象索引或覆盖图象索引)将用作关键字。当用作 TreeView
的角色映射时,如果该项的状态图象索引为 0,则角色将以 ROLE_SYSTEM_LISTITEM(对应于十进制值
34)显示。对于状态图象索引为 1 的项,其角色将显示为 ROLE_SYSTEM_CHECKBUTTON(对应于十六进制值
0x2C)。具有其他状态图象索引的 TreeView 项将具有 TreeView 项的默认角色
ROLE_SYSTEM_OUTLINEITEM。</P>
<P><B>回调注释</B>
<P>回调注释为 Active Accessibility 2.0
支持的第三种注释。它允许开发人员注册回调对象响应元素注释属性客户请求。该回调对象必须实现 <B><FONT
face=arial>IAccPropServer</FONT></B> 接口并注册为 Active Accessibility
注册服务。一旦注册,它将负责响应所有访问元素属性注释的客户请求。</P>
<P>要使用回调注释注释对象属性:
<UL type=disc>
<LI>获得指向要注释的访问元素的 <B><FONT face=arial>IAccessible</FONT></B>
接口指针。<BR><BR>
<LI>IAccIdentity 接口的 QI,并调用 GetIdentityString()
获得访问元素的标识字符串。<BR><BR>
<LI><B>同时创建</B> <B><FONT face=arial>AccPropServices</B></FONT>
对象。<BR><BR>
<LI>创建实现 <B><FONT face=arial>IAccPropServer</B></FONT> 的 COM
对象。<BR><BR>
<LI>调用 <B><FONT
face=arial>IAccPropServices::SetPropServer</FONT></B>,传递标识字符串,表示要重载属性的
GUID,和指向 <B><FONT face=arial>IAccPropServer</FONT></B>
回调对象的指针。<BR><BR>
<LI>当有客户端请求访问元素的注释属性时,将调用回调对象提供正确的值。 </LI></UL>
<P>使用直接注释时,<B><FONT face=arial>SetHwndPropServer</B> 或
<B>SetHmenuPropServer</FONT></B> 方法可用于指定 HWND/HMENU、对象 ID 和子
ID,而不是检索标识字符串并用其调用 <B><FONT
face=arial>SetPropServer</FONT></B>。在容器对象上使用 <B><FONT
face=arial>SetPropServer</B>、<B>SetHwndPropServer</B> 或
<B>SetHmenuPropServer</B></FONT> 时,开发人员还可以指定注释应该应用于该容器的所有子元素。</P>
<P>下列属性只能使用回调注释进行注释,返回值通常为 VT_DISPATCH 变量中的 <B><FONT
face=arial>IAccessible</FONT></B>:</P>
<P class=indent>PROPID_ACC_FOCUS</P>
<P class=indent>PROPID_ACC_SELECTION</P>
<P class=indent>PROPID_ACC_PARENT</P>
<P class=indent>PROPID_ACC_NAV_UP</P>
<P class=indent>PROPID_ACC_NAV_DOWN</P>
<P class=indent>PROPID_ACC_NAV_LEFT</P>
<P class=indent>PROPID_ACC_NAV_RIGHT</P>
<P class=indent>PROPID_ACC_NAV_PREV</P>
<P class=indent>PROPID_ACC_NAV_NEXT</P>
<P class=indent>PROPID_ACC_NAV_FIRSTCHILD</P>
<P class=indent>PROPID_ACC_NAV_LASTCHILD</P>
<P><B>示例 2:根据 ListView
项的需求提供自定义帮助字符串<BR></B></P></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>
<TABLE align=center bgColor=#006699 border=0 cellPadding=0 cellSpacing=0
width=770>
<TBODY>
<TR bgColor=#006699>
<TD align=middle bgColor=#006699 id=white><FONT
color=#ffffff>对该文的评论</FONT></TD>
<TD align=middle>
<SCRIPT src="CSDN_文档中心_创建更易理解的动态注释用户界面.files/readnum.htm"></SCRIPT>
</TD></TR></TBODY></TABLE><BR>
<DIV align=center>
<TABLE align=center bgColor=#cccccc border=0 cellPadding=2 cellSpacing=1
width=770>
<TBODY>
<TR>
<TH bgColor=#006699 id=white><FONT
color=#ffffff>我要评论</FONT></TH></TR></TBODY></TABLE></DIV>
<DIV align=center>
<TABLE border=0 width=770>
<TBODY>
<TR>
<TD>你没有登陆,无法发表评论。 请先<A
href="http://www.csdn.net/member/login.asp?from=/Develop/read_article.asp?id=3229">登陆</A>
<A
href="http://www.csdn.net/expert/zc.asp">我要注册</A><BR></TD></TR></TBODY></TABLE></DIV><BR>
<HR noShade SIZE=1 width=770>
<TABLE border=0 cellPadding=0 cellSpacing=0 width=500>
<TBODY>
<TR align=middle>
<TD height=10 vAlign=bottom><A
href="http://www.csdn.net/intro/intro.asp?id=2">网站简介</A> - <A
href="http://www.csdn.net/intro/intro.asp?id=5">广告服务</A> - <A
href="http://www.csdn.net/map/map.shtm">网站地图</A> - <A
href="http://www.csdn.net/help/help.asp">帮助信息</A> - <A
href="http://www.csdn.net/intro/intro.asp?id=2">联系方式</A> - <A
href="http://www.csdn.net/english">English</A> </TD>
<TD align=middle rowSpan=3><A
href="http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001032100010"><IMG
border=0 height=48 src="CSDN_文档中心_创建更易理解的动态注释用户界面.files/biaoshi.gif"
width=40></A></TD></TR>
<TR align=middle>
<TD vAlign=top>百联美达美公司 版权所有 京ICP证020026号</TD></TR>
<TR align=middle>
<TD vAlign=top><FONT face=Verdana>Copyright © CSDN.net, Inc. All rights
reserved</FONT></TD></TR>
<TR>
<TD height=15></TD>
<TD></TD></TR></TBODY></TABLE></DIV>
<DIV></DIV><!--内容结束//--><!--结束//--></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -