Прикрутить полосы прокрутки
От: pivcorp Россия  
Дата: 17.07.09 10:19
Оценка:
Никогда не занимался окнами в 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)

А хотелось чтобы картинка оказалась с полосами прокрутки.

Времени у меня осталось мало поэтому очень прошу помочь.
Объясните, пожалуйста, подробно, "на пальцах", что я ещё должен сделать,
чтобы решить задачу двигаясь в этом направлении.
Либо каким более простым способом это можно сделать.
wtl cscrollwindowimpl полоса прокрутки
Re: Прикрутить полосы прокрутки
От: pivcorp Россия  
Дата: 17.07.09 10:24
Оценка:
ЗЫ это не тестовое задание просто по работе пришлось не на долго сталкнуться, а в соответствующем разделе знаний я пока не сведущь.
Re: Прикрутить полосы прокрутки
От: algol Россия about:blank
Дата: 20.07.09 09:55
Оценка:
Здравствуйте, pivcorp, Вы писали:

P>Надо чтобы картинка при определенном была с полосами прокрутки.

P>Предполагаю, что для этого можно заменить CStatic на что то более продвинутое
P>делаю так :

Насколько помню, надо еще вызывать CScrollWindowImpl::SetScrollSize, в котором указать нужный вам размер области, в данном случае — размер картинки. Полосы прокрутки появятся, если размер контрола меньше ScrollSize.
Re[2]: Прикрутить полосы прокрутки
От: pivcorp Россия  
Дата: 21.07.09 06:26
Оценка:
A>Насколько помню, надо еще вызывать CScrollWindowImpl::SetScrollSize, в котором указать нужный вам размер области, в данном случае — размер картинки. Полосы прокрутки появятся, если размер контрола меньше ScrollSize.


Спасибо, но этого оказалось недостаточно.
Увы, с понедельника я переключился на более другую задачу, а эта так и останется не решенной.
Впрочем что то мне подсказывает что к WTL я ещё вернусь...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.