У меня есть приложение на основе MFC Dialog.Я поместил Picture Control (типа Bitmap) для отображения исходного / стандартного растрового изображения ресурса.Это прекрасно отображается при запуске приложения.
Когда пользователь выбирает элемент в CListbox, я хочу изменить отображаемый растровый ресурс.Была создана управляющая переменная CStatic m_Bitmap, и я меняю ее в зависимости от выбора списка пользователей.Затем я обновляю элементы управления.
После выполнения исходное растровое изображение просто исчезает, и элемент управления не может отобразить новое растровое изображение.Я использовал ту же технику со статическими переменными управления текстом и CStrings, и она отлично работает.
Почему мои растровые изображения не меняются?Попытка вызова функции RedrawWindow () элементов управления изображением с указателем CWnd, который тоже ничего не делает.
Это должно быть легко сделать в MFC ...
//Code Snippet
//
//Picture Control (IDC_BitmapCntl), control variable is m_Bitmap
// DDX_Control(pDX, IDC_BitmapCntl, m_Bitmap);
//
//Code from CList Control, OnLbnSelchange() function, CListbox variable is m_Selection
//
switch (m_Selection) { //Select a coresponding bitmap to display
case (0):
m_Bitmap.SetBitmap((HBITMAP)IDB_Bitmap1);
break;
case (1):
m_Bitmap.SetBitmap((HBITMAP)IDB_Bitmap2);
break;
//additional cases ommited for brevity
default:
break;
}
UpdateData(FALSE); //this should update the control but does not display new bitmap
//Failed attempt to then redraw control
CWnd* pDlg;
pDlg = GetDlgItem(IDC_BitmapCntl);
pDlg->RedrawWindow(); //cannot access OnPaint() via a pointer
//end snippet
Нет ошибок насборник.Исходное растровое изображение отображается ОК, но исчезает, когда пользователь выбирает элемент в списке.Новое растровое изображение не отображается.