My-library.info
Все категории

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

На электронном книжном портале my-library.info можно читать бесплатно книги онлайн без регистрации, в том числе Владимир Волков - Программирование для карманных компьютеров. Жанр: Программирование издательство неизвестно, год 2004. В онлайн доступе вы получите полную версию книги с кратким содержанием для ознакомления, сможете читать аннотацию к книге (предисловие), увидеть рецензии тех, кто произведение уже прочитал и их экспертное мнение о прочитанном.
Кроме того, в библиотеке онлайн my-library.info вы найдете много новинок, которые заслуживают вашего внимания.

Название:
Программирование для карманных компьютеров
Издательство:
неизвестно
ISBN:
нет данных
Год:
неизвестен
Дата добавления:
17 сентябрь 2019
Количество просмотров:
278
Читать онлайн
Владимир Волков - Программирование для карманных компьютеров

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

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

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

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

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);

}

}

}

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

10. Наконец, для того, чтобы при выходе за пределы видимой части окна, окно отображало полосы прокрутки, по алгоритму, описанному в пункте 8, нужно добавить к классу событие WM_CHAR и написать его обработчик, код которого приведен в листинге 5.21.

Листинг 5.21

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

{

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

UpdateViewWindow();

}

11. Если запустить приложение, то будет видно, что функции редактирования при помощи сочетаний клавиш Ctrl+C, Ctrl+V, Ctrl+X и Ctrl+Z уже работают. Такое взаимодействие уже встроено в класс CEditView. Необходимо связать эти действия с соответствующими пунктами меню редактирования.

12.В РР· контекстного меню РЅР° имени класса CNotePadView РІ РѕРєРЅРµ ClassView выбрать команду Add Windows Message Handler. Р’ открывшемся РѕРєРЅРµ мастера нужно найти СЃРїРёСЃРѕРє Class or Object to Handle Рё выбрать РІ нем строку ID_EDIT_COPY. Р’ СЃРїРёСЃРєРµ New Windows Message/Handler нужно найти строку COMMAND Рё дважды щелкнуть РЅР° ней мышью. РќР° экран будет выведено РѕРєРЅРѕ СЃ запросом имени функции, которое можно оставить без изменений. Эта строка будет добавлена РІ РѕРєРЅРѕ Existing Windows Message/Handler. После нажатия РєРЅРѕРїРєРё OK РІ общем РѕРєРЅРµ, РІ РєРѕРґРµ будет создан обработчик события OnEditCopy, связанный СЃ соответствующим пунктом меню.

13. Такие же действия нужно выполнить с идентификаторами ID_EDIT_CUT, ID_ EDIT_PASTE и ID_EDIT_UNDO.

14. Написать код обработчиков этих событий, который приведен в листинге 5.22.

Листинг 5.22

void CNotePadView::OnEditCopy()

{

CEditView::OnEditCopy();

UpdateViewWindow();

}

void CNotePadView::OnEditCut()

{

CEditView::OnEditCut();

UpdateViewWindow();


Владимир Волков читать все книги автора по порядку

Владимир Волков - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки My-Library.Info.


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

Отзывы читателей о книге Программирование для карманных компьютеров, автор: Владимир Волков. Читайте комментарии и мнения людей о произведении.

Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*
Все материалы на сайте размещаются его пользователями.
Администратор сайта не несёт ответственности за действия пользователей сайта..
Вы можете направить вашу жалобу на почту librarybook.ru@gmail.com или заполнить форму обратной связи.