UAC盾牌图标(BCM_SETSHIELD)不在按钮上

时间:2017-11-07 09:19:24

标签: windows winapi uac shell-icons

以下代码为按钮添加了一个盾牌图标:

SendMessage(btn1.Handle, BCM_SETSHIELD, 0, 1);

我已尝试使用复选框,单选按钮组等。除按钮外无效。

有没有办法将盾牌图标添加到任何其他控件?

2 个答案:

答案 0 :(得分:2)

  

有没有办法将盾牌图标添加到任何其他控件?

如果有问题的控件支持显示HICON(例如静态控件),您可以通过调用带有IDI_SHIELD常量的LoadIconWithScaleDown加载标准盾牌图标并指定控制。

int cx = GetSystemMetrics( SM_CXSMICON );
int cy = GetSystemMetrics( SM_CYSMICON );
HICON hShieldIcon = NULL;
HRESULT hr = LoadIconWithScaleDown( NULL, MAKEINTRESOURCE( IDI_SHIELD ), cx, cy, 
                                    &hShieldIcon );
if( SUCCEEDED( hr ) )
{
    // Consult the reference on how to assign the HICON to the control.
}

如果相关控件不支持指定HICON,您可以使用许多控件支持的custom-draw自行绘制图标。

答案 1 :(得分:0)

documentation说:

  

为指定按钮或命令链接设置提升所需状态,以显示提升的图标。

这意味着唯一支持的控件是按钮和命令链接。