Никогда не занимался окнами в Windows и только позавчера впервые увидел WTL.
Есть класс показывающий картинки:
class CImageViewDlg : public CDialogImpl<CImageViewDlg>, public CWinDataExchange<CImageViewDlg>
{
public:
enum { IDD = IDD_IMAGE_VIEW };
//...
CStatic m_ctrlImageView;
BEGIN_DDX_MAP(CImageViewDlg)
DDX_CONTROL_HANDLE(IDC_IMAGE, m_ctrlImageView)
END_DDX_MAP()
//...
};
И где то в нем вызвается
m_ctrlImageView.SetBitmap(hBitmap);
Надо чтобы картинка при определенном была с полосами прокрутки.
Предполагаю, что для этого можно заменить CStatic на что то более продвинутое
делаю так :
typedef CWinTraits<WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN
| WS_CLIPSIBLINGS | WS_VSCROLL | WS_HSCROLL , 0> ScrollTraits;
class ScrollStaticWindowTest1: public CScrollWindowImpl < ScrollStaticWindowTest1, CStatic, ScrollTraits>
{
public:
operator HWND() const throw()
{
return m_hWnd;
}
const ScrollStaticWindowTest1 & operator =(HWND hWnd)
{
m_hWnd = hWnd;
return *this;
}
};
и заменяю строку определения на
ScrollStaticWindowTest1 m_ctrlImageView;
В результате не изменилось ничего (кроме того что WTL при закрытии окна ругается, что я не почистил m_hWnd)
А хотелось чтобы картинка оказалась с полосами прокрутки.
Времени у меня осталось мало поэтому очень прошу помочь.
Объясните, пожалуйста, подробно, "на пальцах", что я ещё должен сделать,
чтобы решить задачу двигаясь в этом направлении.
Либо каким более простым способом это можно сделать.
ЗЫ это не тестовое задание просто по работе пришлось не на долго сталкнуться, а в соответствующем разделе знаний я пока не сведущь.
A>Насколько помню, надо еще вызывать CScrollWindowImpl::SetScrollSize, в котором указать нужный вам размер области, в данном случае — размер картинки. Полосы прокрутки появятся, если размер контрола меньше ScrollSize.
Спасибо, но этого оказалось недостаточно.
Увы, с понедельника я переключился на более другую задачу, а эта так и останется не решенной.
Впрочем что то мне подсказывает что к WTL я ещё вернусь...