Владимир Волков - Программирование для карманных компьютеров

Здесь есть возможность читать онлайн «Владимир Волков - Программирование для карманных компьютеров» — ознакомительный отрывок электронной книги совершенно бесплатно, а после прочтения отрывка купить полную версию. В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Программирование для карманных компьютеров: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Программирование для карманных компьютеров»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Эта книга предназначена для того, чтобы читатель смог быстро научиться создавать мощные и эффективные приложения для наладонных компьютеров Pocket PC. Рынок программ для карманных компьютеров сейчас бурно развивается, и именно в этой отрасли программист-одиночка может успешно соперничать с большими корпорациями, которые создают программное обеспечение. Прочитав эту книгу, читатель сможет уверенно и быстро разрабатывать достаточно сложные приложения для Pocket PC. Огромное количество разнообразных примеров позволит быстро совершенствоваться и развиваться, обогащая свой опыт работы.
Книга предназначена для начинающих программистов.

Программирование для карманных компьютеров — читать онлайн ознакомительный отрывок

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Программирование для карманных компьютеров», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать
3. Прежде всего необходимо изменить тип объекта CNotePadView. Поскольку разрабатывается текстовый редактор, следует использовать тип CEditView. Для этого нужно открыть в окне рабочего пространства вкладку ClassView, найти класс CNotePadView и изменить его объявление:

class CNotePadView: public CEditView

4. В окне ClassView нужно раскрыть внутреннюю структуру класса CNotePadView и найти объявление метода PreCreateWindow(CREATESTRUCT& cs). Двойным щелчком на этом объявлении нужно открыть код реализации функции и изменить его, как показано в листинге 5.17. Листинг 5.17

BOOL CNotePadView::PreCreateWindow(CREATESTRUCT& cs)

{

if(!CEditView::PreCreateWindow(cs))

return FALSE;

cs.style &= ~WS_VSCROLL;

cs.style &= ~WS_HSCROLL;

cs.style &= ~ES_AUTOHSCROLL;

m_dwDefaultStyle &= ~WS_VSCROLL;

m_dwDefaultStyle &= ~WS_HSCROLL;

m_dwDefaultStyle &= ~ES_AUTOHSCROLL;

return TRUE;

}

5. Запустив программу после внесения этих изменений, можно увидеть, что окно документа начинает себя вести как окно текстового редактора. В нем появился текстовый курсор, пользователь может набирать текст, появились полосы прокрутки. Однако если набрать в окне достаточно большой объем текста и прокрутить его горизонтально или вертикально, можно обнаружить проблемы с перерисовкой окна и выводом текста на экран. Даже при использовании технологии MFC многое разработчик должен делать самостоятельно.

6. Добавить к классу CNotePadView новый приватный метод. Для этого нужно щелкнуть правой клавишей мыши на имени класса в окне ClassView и выполнить команду Add Member Function. На экран будет выведено окно мастера. Его надо заполнить так, как это показано на рис. 5.6. Код этого метода приведен в листинге 5.18.

Рис. 5.6. Окно мастера создания метода класса.

Листинг 5.18

void CNotepadView::UpdateViewWindow()

{

CEdit& edit = GetEditCtrl();

TEXTMETRIC tm;

CDC* pDC = edit.GetDC();

pDC->GetTextMetrics(&tm);

edit.ReleaseDC(pDC);

CRect r;

edit.GetRect(&r);

int noOfVisibleLines = r.Height() / tm.tmHeight;

if(edit.GetLineCount() > noOfVisibleLines)

{

long lwStyle =::GetWindowLong(edit.GetSafeHwnd(), GWL_STYLE);

if(!(lwStyle & WS_VSCROLL))

{

lwStyle |= WS_VSCROLL;

::SetWindowLong(edit.GetSafeHwnd(), GWL_STYLE, lwStyle);

}

int nCaretLine = edit.LineFromChar();

int nFirstVisible = edit.GetFirstVisibleLine();

if(nFirstVisible + noOfVisibleLines <= nCaretLine)

{

HideCaret();

edit.LineScroll(nCaretLine – nFirstVisible – noOfVisibleLines + 1);

ShowCaret();

}

if(nFirstVisible > nCaretLine)

{

HideCaret();

edit.LineScroll(nCaretLine – nFirstVisible);

ShowCaret();

}

}

else

{

long lwStyle =::GetWindowLong(edit.GetSafeHwnd(), GWL_STYLE);

if(!(lwStyle & WS_VSCROLL))

return;

int nFirstVisible = edit.GetFirstVisibleLine();

edit.LineScroll(-nFirstVisible, 0);

lwStyle &= ~WS_VSCROLL;

::SetWindowLong(edit.GetSafeHwnd(), GWL_STYLE, lwStyle);

}

}

7. Теперь необходимо связать этот метод со стандартным обработчиком события перерисовки измененного окна. Для этого надо добавить данное событие к классу CNotePadView и написать его обработчик. Нужно щелкнуть правой клавишей мыши на имени класса CNotePadView в окне ClassView и выполнить команду Add Virtual Function. На экран будет выведено окно мастера (рис. 5.7).

Рис. 5.7. Мастер добавления виртуальных функций.

Этот мастер позволяет добавить к классу те функции, которые он наследует от базового класса. В данном случае добавляется существующее в базовом классе событие OnUpdate, которое вызывается после модификации документа для перерисовки его отображения в окне. В левом списке New Virtual Functions окна мастера нужно выбрать функцию OnUpdate, а затем нажать кнопку Add and Edit. Событие будет добавлено в класс, а в редакторе будет открыт код реализации этого события. Код нужно переписать, как показано в листинге 5.19. Листинг 5.19

void CNotePadView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)

{

CEditView::OnUpdate(pSender, lHint, pHint);

UpdateViewWindow();

}

8. Несколько иначе добавляется событие OnKeyDown. Снова потребуется вызвать контекстное меню на имени класса CNotePadView в окне ClassView. Поскольку событие OnKeyDown является обернутым в метод MFC сообщением Windows, то на этот раз необходимо выбрать из контекстного меню команду Add Windows Message Handler. На экран будет выведено окно мастера (рис. 5.8).

Рис. 5.8. Мастер добавления события, основанного на сообщениях Windows.

9. В левом списке New Windows Messages/events нужно выбрать функцию WM_ KEYDOWN, двойным щелчком на ее имени нужно переместите ее в правый список и нажать кнопку OK. В окне редактора будет открыт код обработчика этого события. Его нужно изменить, как показано в листинге 5.20. Листинг 5.20

void CNotePadView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)

{

CEditView::OnKeyDown(nChar, nRepCnt, nFlags);

if(nChar == VK_DELETE)

{

CEdit& edit = GetEditCtrl();

TEXTMETRIC tm;

CDC* pDC = edit.GetDC();

pDC->GetTextMetrics(&tm);

edit.ReleaseDC(pDC);

CRect r;

edit.GetRect(&r);

int noOfVisibleLines = r.Height() / tm.tmHeight;

if(edit.GetLineCount() <= noOfVisibleLines)

{

long lwStyle =::GetWindowLong(edit.GetSafeHwnd(), GWL_STYLE);

if(!(lwStyle & WS_VSCROLL))

return;

int nFirstVisible = edit.GetFirstVisibleLine();

edit.LineScroll(-nFirstVisible, 0);

lwStyle &= ~WS_VSCROLL;

::SetWindowLong(edit.GetSafeHwnd(), GWL_STYLE, lwStyle);

}

}

}

В результате всех этих манипуляций будет создано нормально обновляемое окно редактирования.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Программирование для карманных компьютеров»

Представляем Вашему вниманию похожие книги на «Программирование для карманных компьютеров» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


libcat.ru: книга без обложки
Владимир Волков
Владимир Волков - Русь Святая
Владимир Волков
Владимир Волков - Время пришло… Пауза
Владимир Волков
Отзывы о книге «Программирование для карманных компьютеров»

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

x