Алекс Jenter - Программирование на Visual C++. Архив рассылки

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

Программирование на Visual C++. Архив рассылки: краткое содержание, описание и аннотация

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

РАССЫЛКА ЯВЛЯЕТСЯ ЧАСТЬЮ
, НА САЙТЕ КОТОРОГО ВСЕГДА МОЖНО НАЙТИ ВСЮ НЕОБХОДИМУЮ РАЗРАБОТЧИКУ ИНФОРМАЦИЮ, СТАТЬИ, ФОРУМЫ, РЕСУРСЫ, ПОЛНЫЙ АРХИВ ПРЕДЫДУЩИХ ВЫПУСКОВ РАССЫЛКИ И МНОГОЕ ДРУГОЕ.

Программирование на Visual C++. Архив рассылки — читать онлайн бесплатно полную книгу (весь текст) целиком

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

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

Интервал:

Закладка:

Сделать

// чтобы мышь не улетала с окна при быстром движении

SetCapture();

// сохраняем координаты окна

GetWindowRect(m_RectDlg);

// сохраняем положение мышки внутри окна программы

ClientToScreen(&point);

m_MouseInDlg = point - m_RectDlg.TopLeft();

// меняем курсор, чтоб веселее было тащить

m_hCursor = m_hCursorDown;

::SetCursor(m_hCursor);

// вызываем обработчик по умолчанию

CDialog::OnLButtonDown(nFlags, point);

}

void CDragWinDlg::OnMouseMove(UINT nFlags, CPoint point) {

if (m_bMoveWindow) // надо тащить

{

// преобразуем координаты мыши в экранные

// именно они нужны будут для SetWindowPos()

ClientToScreen(&point);

// двигаем окно в соответствии с новыми координатами мыши

SetWindowPos(&wndTop, point.x - m_MouseInDlg.x, point.y - m_MouseInDlg.y,

m_RectDlg.right - m_RectDlg.left, m_RectDlg.bottom - m_RectDlg.top,

SWP_SHOWWINDOW);

// поскольку обработчик по умолчанию все равно будет использовать

// первоначальные параметры сообщения

// обратное преобразование ScreenToClient(&point);

// можно не вызывать

}

// вызываем обработчик по умолчанию

CDialog::OnMouseMove(nFlags, point);

}

void CDragWinDlg::OnLButtonUp(UINT nFlags, CPoint point) {

// перетаскивание закончилось

m_bMoveWindow = FALSE;

// "отпускаем" мышку

ReleaseCapture();

// меняем курсор на исходный

m_hCursor = m_hCursorUp;

// вызываем обработчик по умолчанию

CDialog::OnLButtonUp(nFlags, point);

}

BOOL CDragWinDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) {

// заменяем курсор на свой

::SetCursor(m_hCursor);

return TRUE; // !!! было return CDialog::OnSetCursor(pWnd, nHitTest, message);

}

Замена курсора естесственно не является критичной для собственно перетаскивания, а добавлена исключительно для визуализации процесса захвата окошка.

Способ 2

Реализован для окна About этого же приложения. Заключается в замене обработчика события WM_NCHITTEST, которое информирует об области, над которой в данный момент находится мышка. Обработчик этого сообщения также можно добавить через MFC ClassWizard. Предварительно на закладке ClassInfo для класса CAboutDlg нужно установить для Message Filter значение Window.

Переписываем функцию – обработчик следующим образом:

UINT CAboutDlg::OnNcHitTest(CPoint point) {

UINT ret = CDialog::OnNcHitTest(point);

// если обработчик по умолчанию говорит нам что мышка

// над клиентской областью окна, заменяем возвращаемое

// значение на HTCAPTION – мышка над заголовком окна,

// а за заголовок перемещать окно можно!

if (ret == HTCLIENT) return HTCAPTION;

return ret;

}

Второй способ проще, первый потенциально гибче, используйте тот, что лучше подходит к вашему конкретному случаю.

Если у вас есть вопрос по программированию, вы можете задать его одном из форумов на RSDN.

Это все на сегодня. Не забывайте заходить на RSDN. До встречи!

Алекс Jenter jenter@rsdn.ru Красноярск, 2001. Рассылка является частью Проекта RSDN

Программирование на Visual C++

Выпуск №42 от 29 апреля 2001 г.

Всем привет!

СТАТЬЯ

Сериализация в MFC

Скорость, гибкость, типонезависимость

Автор: Джим Биверидж

Перевод: Олег Быков

Источник: www.ddj.com

Опубликовано: 17.04.2001

Версия текста: 1.0

Я следил за разработкой многих коммерческих программных продуктов от начального проектирования до выпуска рабочей версии, поэтому я скептически отношусь к концепции "компонент – черный ящик", так как следовать ей все труднее и труднее по мере развития и усложнения проекта. Когда я впервые познакомился с механизмом сериализации в библиотеке MFC [ адекватного перевода английского слова "serialization" нет, поэтому здесь я использовал транслитерацию. В статье этот термин применяется для обозначения процесса сохранения/восстановления данных – прим.пер. ], мне стало интересно, насколько этот механизм гибок и производителен для коммерческого применения. В процессе исследования я обнаружил, что, несмотря на некоторые ограничения, механизм сериализации в MFC основан на современной теории объектно-ориентированного проектирования и более того, этот механизм не привязан к какому-то определенному типу и допускает свое дальнейшее развитие.

Использовать MFC-сериализации несложно. Любой класс, производный от CObject , может переопределить функцию Serialize() , принимающую в качестве параметра объект класса CArchive . В этой функции Вы можете добавить свой код для сохранения и восстановления любых данных Вашего класса.

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

Интервал:

Закладка:

Сделать

Похожие книги на «Программирование на Visual C++. Архив рассылки»

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


Алексей Макеев - Смертельный архив
Алексей Макеев
libcat.ru: книга без обложки
Алексей Апухтин
Отзывы о книге «Программирование на Visual C++. Архив рассылки»

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

x