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

UAC shield icon (BCM_SETSHIELD) not on a button

以下代码将盾牌图标添加到按钮:

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

我已经对复选框、单选按钮组等进行了同样的尝试。除了一个按钮,什么都不起作用。

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

documentation 说:

Sets the elevation required state for a specified button or command link to display an elevated icon.

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

Is there a way to add the shield icon to any other control?

如果有问题的控件支持 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自己绘制图标。