Значок щита UAC (BCM_SETSHIELD) отсутствует на кнопке
Следующий код добавляет иконку щита к кнопке:
SendMessage(btn1.Handle, BCM_SETSHIELD, 0, 1);
Я пробовал то же самое с флажками, группами переключателей и т. Д. Ничего не работает, кроме кнопки.
Есть ли способ добавить значок щита в любой другой элемент управления?
2 ответа
Есть ли способ добавить значок щита в любой другой элемент управления?
Если соответствующий элемент управления поддерживает отображение HICON
(например, статический элемент управления), вы можете загрузить стандартную иконку щита, вызвав LoadIconWithScaleDown
с IDI_SHIELD
постоянный и назначить это на контроль.
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, который поддерживается многими элементами управления, чтобы нарисовать иконку самостоятельно.
В документации сказано:
Устанавливает требуемое состояние повышения для указанной кнопки или ссылки на команду для отображения значка с повышенными правами.
Это означает, что единственными поддерживаемыми элементами управления являются кнопки и ссылки на команды.