Невозможно добавить переменную управления

У меня есть приложение, в которое я хочу добавить элемент управления изображением и показать несколько растровых изображений внутри него. Однако я не могу добавить переменную элемента управления к элементу управления изображением.

В начале я даже не мог добавить переменную. Потому что не было enum {IDD = ID_OF_MY_DIALOG;} строка в моем заголовочном файле. Я починил это. Однако теперь я не могу добавить переменную управления. Когда я щелкаю правой кнопкой мыши элемент управления изображением и щелкаю строку «Добавить переменную», я не могу установить флажок «Переменная элемента управления».

Как я могу добавить управляющую переменную в свой проект, как я могу динамически отображать растровое изображение, или в чем здесь моя ошибка?

Я протестировал некоторые приложения MFC и увидел часть переменной управления. Так что, должно быть, в моем проекте чего-то не хватает — наверное.

Вот мои скриншоты:

Добавить переменный экран в моем проекте ATL

Добавить переменный экран в случайном проекте MFC

Большое спасибо.

1

Решение

Предположим, вы добавили STATIC контроль в диалоговом шаблоне. Прямо там, в редакторе шаблонов, в свойствах элемента управления вы можете назначить идентификатор, например, IDC_PICTURE, Оттуда — контроль уже будет создан для вас во время выполнения. В коде вы добавите CWindow переменная, и в вашем OnInitDialog обработчик (я предполагаю, что он у вас уже есть — AFAIR он создан по умолчанию и существует в различных примерах), вы добавите инициализацию переменной-члена, чтобы она была доступна вашему коду для дальнейших действий, таких как обработка сообщений.

class CMainDialog :
public CDialogImpl<CMainDialog>
{
// ...
private:
CWindow m_PictureStatic;
HBITMAP m_hPictureBitmap;

// Window Message Handlers
LRESULT OnInitDialog(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
m_PictureStatic = GetDlgItem(IDC_PICTURE);
m_hPictureBitmap = LoadBitmap(_AtlBaseModule.GetResourceInstance(), MAKEINTRESOURCE(IDB_PICTURE));
ATLASSERT(m_hPictureBitmap);
m_PictureStatic.SendMessage(STM_SETIMAGE, IMAGE_BITMAP, (LPARAM) m_hPictureBitmap);
// ...
}
LRESULT OnDestroy(UINT nMessage, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
ATLVERIFY(DeleteObject(m_hPictureBitmap));
return 0;
}

Само изображение (в этом фрагменте кода могут быть и другие параметры) является растровым ресурсом с идентификатором. IDB_PICTURE, Код загружает растровое изображение из ресурса и передает его элементу управления.

введите описание изображения здесь

Исходный код + Исходный код перед добавлением Picture Static.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]