Baderd94 Ответов: 2

Как установить значок на кнопку в диалоговом окне в VC6


Привет

Я использую VC6, а компилятор-Win32 (для моего университетского проекта), у меня есть несколько кнопок в моем диалоге, и я хочу добавить разные значки, соответствующие разным кнопкам.

Что я уже пробовал:

Я попробовал этот код, так как моя кнопка называлась
IDC_BTN_AUTOSET
а моя икона называется
IDR_MAINFRAME
Этот код не дает никакой ошибки, но он не показывает мне ничего, даже если я изменяю свойство кнопки на значок.

			HICON h_Ico = (HICON) LoadImage( AfxGetResourceHandle(),"IDR_MAINFRAME", IMAGE_ICON, 32, 32,LR_LOADFROMFILE );
    CButton *Button=(CButton*)GetDlgItem(IDC_BTN_AUTOSET);
   Button->SetIcon( h_Ico );
SetIcon(h_Ico, TRUE);	
SetIcon(h_Ico, FALSE);

Manish K. Agarwal

пожалуйста обратитесь к нам https://www.codeproject.com/Tips/406870/Change-ICON-of-MFC-Application-and-Dialog

Manish K. Agarwal

тоже
https://support.microsoft.com/en-ae/help/179582/how-to-set-the-title-bar-icon-in-a-dialog-box

Baderd94

Извините, что я улучшил вопрос, это было не ясно, как я сказал, добавьте значок в диалог вместо кнопки в диалоге aq.

2 Ответов

Рейтинг:
8

Baderd94

Этот код прекрасно работает для меня

m_btn2.SetBitmap(LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP13)));

как
m_btn2
это имя моей кнопки и
IDB_BITMAP13
это имя моего растрового изображения
убедитесь, что вы добавили
Cbutton m_btn2;
в вашем заголовочном файле.


Рейтинг:
0

Jochen Arndt

То LoadImage() функция выдает ошибку, но вы не проверили, произошла ли ошибка (если возвращаемый дескриптор равен NULL). Читать документацию: Функция LoadImageA | Microsoft Docs[^].

Если вы хотите загрузить изображение или значок из ресурсов, встроенных в ваш исполняемый файл, вы должны передать идентификатор с помощью MAKEINTRESOURCE и не используйте LR_LOADFROMFILE:

HICON h_Ico = (HICON) LoadImage( AfxGetResourceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME), IMAGE_ICON, 32, 32, 0 );
if (h_Ico == NULL)
{
    // Handle error here
    // The error code can be retrieved by calling GetLastError()
}


Baderd94

Извините, что я улучшил вопрос, это было не ясно, как я сказал, добавьте значок в диалог вместо кнопки в диалоге aq.

Jochen Arndt

Сначала вы должны убедиться, что значок успешно загружен, как показано в моем примере. Как только это будет удовлетворено, вы можете использовать его там, где хотите.