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

на главную - закладки

Жанры

Поделиться:

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

Шрифт:

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

Выпуск №1

Добрый день всем!

Итак, свершилось: вы видите перед собой первый выпуск рассылки.

Я понимаю, что ведение такой рассылки – это огромная ответственность, принимая во внимание огромное количество сайтов по этой теме (кстати, именно вопиющее отсутствие рассылки о Visual C++ на горкоте и подвигнуло меня на ее создание). Это мой первый опыт такого рода, так что пока я прошу вас не судить слишком строго. Я же со своей стороны постараюсь сделать все от меня зависящее, чтобы рассылка была интересной, занимательной и полезной.

Прежде всего, я хотел бы уточнить тематику наших бесед. А именно то, что вы здесь не найдете учебника по программированию типа "шаг-за-шагом". По этому принципу построено очень много разных книг, сайтов в Рунете и других источников. На мой взгляд, такие учебники учат только тому, что в них заложено. Они предлагают решение какой-то задачи, но если вам нужно решить задачу немного отличную от описанной, то начинаются проблемы. Ведь очень часто авторы для упрощения изложения выбирают самые тривиальные решения, не подходящие для большинства реальных задач. И приходится выкручиваться своими силами – штудируя help, делая методом "тыка". И, хочу заметить, гораздо чаще такие вот искания оказываются полезнее тупого выполнения шагов учебника, потому что в процессе поиска выдумаете и решаете сами.

С другой стороны, не поймите меня неверно – я вовсе не отрицаю право таких учебников на существование (думаю, что на какой-то стадии они могут быть даже очень полезны), я лишь подчеркиваю их ограниченную применимость.

Именно поэтому в рассылке не будет учебников типа "пишем свою записную книжку".

Хочу подчеркнуть, что все вышеизложенное является моим личным мнением и вы вправе быть с ним не согласны. По правде говоря, я на это рассчитываю ;) Пишите мне – и мы это обсудим.

Итак, что же будет освещено в рассылке?

Во-первых, некоторые теоретические сведения – знание теории никогда и никому не вредило. Причем основной упор будет делаться вовсе не на C++ как язык программирования (хотя это я тоже не исключаю), а на такие вещи, как MFC и WinAPI. Во-вторых, разные полезные приемы программирования и хитрости, советы и трюки. Еще, объяснение некоторых английских терминов по программированию. Потом, обзор некоторых книг по данной теме, перевод интересных статей из интернета и, конечно же, ваши письма, вопросы, мнения.

Но этим я не хотел бы жестко ограничиваться. Пишите, что интересно Вам лично?

Я долго думал, с чего лучше всего будет начать. Ведь уровень у каждого из вас совершенно разный. И решил, что для начала это должно быть что-то "легкое", понятное всем, но и не совсем бесполезное в то же время.

Поэтому следующий материал к программированию как таковому не относится, он лишь позволяет сделать его более комфортным.

Пробовали ли Вы хоть раз менять стандартную синтаксическую подсветку в Visual C++ IDE? Если да, то знаете, что, к сожалению, в настройках доступно только 16 возможных цветов. Какая жалость! Ведь можно было бы сделать очень приятную цветовую схему, ярко выражающую вашу индивидуальность… ну или просто более приятную для глаз.

Неужели ничего нельзя поделать? Оказывается, можно! Для исполнения этого желания нам придется воспользоваться стандартным виртуальным "ломом" для Windows. Нет, я не имею ввиду дизассемблирование – избави бог! ;) В качестве лома в данном случае будет выступать просто редактор реестра (regedit.exe).

Запустите RegEdit и откройте ветвь

HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Format\Source Window

В окне просмотра появится список значений. Каждому синтаксическому элементу соответствует определенный набор шестнадцатеричных чисел. Первые три из них – это цвет самого элемента в виде RGB. Потом одно число пропускается (там, как правило, 0) и три следующие числа – это цвет фона. Т.е. формат такой: RGB-0-RGB-0 (остальные числа лучше не трогать).

Вот и все – теперь для любого элемента программы ( комментария, строки, ключевого слова или др.) вы можете назначить любой из 16 млн. доступных цветов!

ВОПРОС-ОТВЕТ

Q. Как изменить стили окон, создаваемых MFC AppWizard'ом по умолчанию?

A. Чтобы изменить стиль по умолчанию какого-нибудь окна, нужно перекрыть виртуальную функцию PreCreateWindow класса этого окна. Эта функция позволяет приложению получить доступ к процессу созданию окна, который по умолчанию происходит в недрах MFC с помощью класса CDocTemplate. Библиотека вызывает PreCreateWindow перед созданием окна. Этой функции передается параметр – указатель на структуру CREATESTRUCT. Путем изменения членов этой структуры вы можете влиять на стиль создаваемого окна.

Q. Как сделать так, чтобы положение элементов управления менялось, когда размер окна изменяется, т.е., например, чтобы они выравнивались по правому или нижнему краю?

А. Увы, это не так элементарно делается, как, скажем, в C++ Builder. Но и здесь есть свои плюсы – вы получаете больший контроль. Пусть, скажем, у Вас есть кнопка, которую Вам нужно выровнять по правому краю, и соответствующая переменная m_Btn типа CButton в классе вашего окна или вида. Тогда в функции обработки сообщения WM_SIZE – OnSize.

void CMyView::OnSize(UINT nType, int cx, int cy) {

 CFormView::OnSize(nType, cx, cy);

 .

 .

 // ... добавьте вот это:

 if (::IsWindow(m_Btn.m_hWnd)) // условие на корректность

m_Btn.MoveWindow(cx - BtnWidth - 10, BtnY, cx - 10, BtnY + BtnHeight, 0); // двигаем кнопку

 // конец кода для добавления.

 .

 .

}

Здесь вместо BtnY вставьте желаемую Y-координату кнопки, BtnWidth и BtnHeight – соответственно целевые ширина и высота кнопки.

Параметр cx, передаваемый в функцию - это новая ширина окна. Данный код изменяет положение кнопки, чтобы она оставалась ширины Btn_Width и отстояла от правого края окна на 10 единиц. Функция MoveWindow меняет размер и положение кнопки. Если вы не знаете BtnY|Width|Height, то их можно определить с помощью функции m_btn.GetClientRect, ведь любой элемент управления - это, в принципе, тоже окно.

Комментарии:
Популярные книги

Один на миллион. Трилогия

Земляной Андрей Борисович
Один на миллион
Фантастика:
боевая фантастика
8.95
рейтинг книги
Один на миллион. Трилогия

Слово мастера

Лисина Александра
11. Гибрид
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Слово мастера

Страж Кодекса. Книга V

Романов Илья Николаевич
5. КО: Страж Кодекса
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Страж Кодекса. Книга V

Локки 10. Потомок бога

Решетов Евгений Валерьевич
10. Локки
Фантастика:
фэнтези
юмористическое фэнтези
героическая фантастика
боевая фантастика
5.00
рейтинг книги
Локки 10. Потомок бога

На границе империй. Том 9. Часть 4

INDIGO
17. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 4

Ермак. Противостояние. Книга одиннадцатая

Валериев Игорь
11. Ермак
Фантастика:
попаданцы
альтернативная история
4.50
рейтинг книги
Ермак. Противостояние. Книга одиннадцатая

Егерь

Поселягин Владимир Геннадьевич
3. Маньяк в Союзе
Фантастика:
боевая фантастика
альтернативная история
6.31
рейтинг книги
Егерь

Холодный ветер перемен

Иванов Дмитрий
7. Девяностые
Фантастика:
попаданцы
альтернативная история
6.80
рейтинг книги
Холодный ветер перемен

Черный маг императора 3

Герда Александр
3. Черный маг императора
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Черный маг императора 3

Рубежник

Билик Дмитрий Александрович
1. Бедовый
Фантастика:
юмористическая фантастика
городское фэнтези
мистика
5.00
рейтинг книги
Рубежник

Технарь

Муравьёв Константин Николаевич
1. Технарь
Фантастика:
космическая фантастика
попаданцы
7.13
рейтинг книги
Технарь

Телохранитель Генсека. Том 4

Алмазный Петр
4. Медведев
Фантастика:
попаданцы
альтернативная история
6.00
рейтинг книги
Телохранитель Генсека. Том 4

Герой

Бубела Олег Николаевич
4. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.26
рейтинг книги
Герой

Зодчий. Книга III

Погуляй Юрий Александрович
3. Зодчий Империи
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Зодчий. Книга III