Диалог прокрутки в MFC на Win CE / Windows Mobile - PullRequest
2 голосов
/ 10 августа 2009

Я создаю диалоговое приложение для Windows Mobile. В моем главном диалоговом окне контейнера есть элемент управления вкладками, который чередуется между различными дочерними диалоговыми окнами (как отдельные вкладки).

Поскольку у меня ограниченное пространство отображения, мне нужны мои диалоговые окна для вертикальной прокрутки. Следуя некоторому онлайн-примеру, я добавил вертикальную полосу прокрутки и соответствующее сообщение и обработчик для вертикальной прокрутки.

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

Чтобы изолировать проблему, я изменил обработчик сообщений прокрутки и жестко закодировал команду ScrollWindow () всякий раз, когда происходит прокрутка, например:

void SettingsDialog::OnVScroll(UINT nSBCode, 
    UINT nPos, CScrollBar* pScrollBar)
{
    ScrollWindow(0,30,NULL,NULL);
}

Код достигнут, но прокрутка в моем диалоге по-прежнему отсутствует. Кто-нибудь может пролить свет на эту тайну?

Между прочим, я нашел тему о Coding Guru, в которой обсуждается точно такая же проблема, но она не решена здесь: http://www.codeguru.com/forum/showthread.php?t=54304

Ответы [ 2 ]

3 голосов
/ 10 августа 2009

Я столкнулся с той же проблемой. Я никогда не использую MFC, но функция Win32 для правильной работы такова:

         ScrollWindowEx(hDlg, 0, currentPos - si.nPos, NULL, NULL, NULL, NULL, SW_SCROLLCHILDREN | SW_INVALIDATE);
1 голос
/ 18 августа 2009

MSDN говорит это ...!

Примечание. Функция ScrollWindow предназначена для обратной совместимости. Новые приложения должны использовать функцию ScrollWindowEx.

http://msdn.microsoft.com/en-us/library/bb787591(VS.85).aspx

...