Программирование на 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, ведь любой элемент управления - это, в принципе, тоже окно.

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

Измена. Жизнь заново

Верди Алиса
1. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Жизнь заново

Его огонь горит для меня. Том 2

Муратова Ульяна
2. Мир Карастели
Фантастика:
юмористическая фантастика
5.40
рейтинг книги
Его огонь горит для меня. Том 2

Командир Красной Армии

Поселягин Владимир Геннадьевич
1. Командир Красной Армии
Фантастика:
попаданцы
8.72
рейтинг книги
Командир Красной Армии

Брачный сезон. Сирота

Свободина Виктория
Любовные романы:
любовно-фантастические романы
7.89
рейтинг книги
Брачный сезон. Сирота

Сама себе хозяйка

Красовская Марианна
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Сама себе хозяйка

Барону наплевать на правила

Ренгач Евгений
7. Закон сильного
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Барону наплевать на правила

Единственная для невольника

Новикова Татьяна О.
Любовные романы:
любовно-фантастические романы
5.67
рейтинг книги
Единственная для невольника

Вторая невеста Драконьего Лорда. Дилогия

Огненная Любовь
Вторая невеста Драконьего Лорда
Любовные романы:
любовно-фантастические романы
5.60
рейтинг книги
Вторая невеста Драконьего Лорда. Дилогия

Любовь по инструкции

Zzika Nata
Любовные романы:
любовно-фантастические романы
5.85
рейтинг книги
Любовь по инструкции

Город Богов

Парсиев Дмитрий
1. Профсоюз водителей грузовых драконов
Фантастика:
юмористическая фантастика
детективная фантастика
попаданцы
5.00
рейтинг книги
Город Богов

Эволюционер из трущоб. Том 5

Панарин Антон
5. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 5

Мастер Разума II

Кронос Александр
2. Мастер Разума
Фантастика:
героическая фантастика
попаданцы
аниме
5.75
рейтинг книги
Мастер Разума II

Сердце Дракона. Том 9

Клеванский Кирилл Сергеевич
9. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.69
рейтинг книги
Сердце Дракона. Том 9

Нечто чудесное

Макнот Джудит
2. Романтическая серия
Любовные романы:
исторические любовные романы
9.43
рейтинг книги
Нечто чудесное