Я абсолютно новичок в C ++, и мне нужно отредактировать C ++. Мне нужно заменить графические кнопки графического интерфейса на значки изображений. Я не уверен, но, возможно, Button создается в этой части кода:
BOOL CButtonDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetDlgItemText(IDC_BUTTON_LOAD,_T("Load"));
return TRUE;
}
Когда я смотрю в код, я вижу, что кнопки включены с таким кодом:
m_dButtondlg.GetDlgItem(IDC_BUTTON_LOAD)->EnableWindow(true);
Где IDC_BUTTON_LOAD — это целочисленное значение. Я не могу найти никакого другого использования константы в коде, поэтому я не уверен, как кнопка была создана. Я просто знаю что
m_dButtondlg.GetDlgItem(IDC_BUTTON_LOAD)
возвращает указатель на CWnd
Как я могу прикрепить изображения к кнопке, используя объект CWnd?
РЕДАКТИРОВАТЬ: я обнаружил, что кнопка, идентифицированная с IDC_BUTTON_LOAD, является экземпляром производного класса CDIalog, а не CButton.
Лучший способ заключается в том, что вы конвертируете свой указатель CWnd в CButton, как показано ниже,
CButton * DlgButton = (CButton*)GetDlgItem(IDC_BUTTON_LOAD);
И вы можете легко загрузить изображение на объект CButton.
РЕДАКТИРОВАТЬ
Код для загрузки растрового изображения в CButton,
CButton * DlgButton = (CButton*)GetDlgItem(IDC_BUTTON_LOAD);
DlgButton->ModifyStyle( 0, BS_ICON );
HICON hIcn= (HICON)LoadImage(
AfxGetApp()->m_hInstance,
MAKEINTRESOURCE(IDI_ICON3),
IMAGE_ICON,
0,0, // use actual size
LR_DEFAULTCOLOR
);
DlgButton->SetIcon( hIcn );
Других решений пока нет …