UAC 盾牌图标 (BCM_SETSHIELD) 不在按钮上
UAC shield icon (BCM_SETSHIELD) not on a button
以下代码将盾牌图标添加到按钮:
SendMessage(btn1.Handle, BCM_SETSHIELD, 0, 1);
我已经对复选框、单选按钮组等进行了同样的尝试。除了一个按钮,什么都不起作用。
有没有办法将盾牌图标添加到任何其他控件?
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自己绘制图标。
以下代码将盾牌图标添加到按钮:
SendMessage(btn1.Handle, BCM_SETSHIELD, 0, 1);
我已经对复选框、单选按钮组等进行了同样的尝试。除了一个按钮,什么都不起作用。
有没有办法将盾牌图标添加到任何其他控件?
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自己绘制图标。