Значок щита 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, который поддерживается многими элементами управления, чтобы нарисовать иконку самостоятельно.

В документации сказано:

Устанавливает требуемое состояние повышения для указанной кнопки или ссылки на команду для отображения значка с повышенными правами.

Это означает, что единственными поддерживаемыми элементами управления являются кнопки и ссылки на команды.

Другие вопросы по тегам