Рассылка закрыта
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
← Октябрь 2000 → | ||||||
1
|
||||||
---|---|---|---|---|---|---|
2
|
3
|
4
|
6
|
7
|
8
|
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
16
|
17
|
18
|
19
|
20
|
21
|
22
|
23
|
24
|
25
|
26
|
27
|
28
|
29
|
30
|
31
|
Статистика
за неделю
СообЧа. Программирование на С++ (лучше поздно, чем никогда)
СообЧа. Программирование на С++ |
Выпуск 3: К совершенно новому проекту будь готов! |
Голосование Итак, голосование продолжается. Пока что с большим отрывом побеждает изучение материала в виде отдельных лекций и Windows API в качестве основного объекта изучения. Хотя это и не окончательные сведения и голосование продолжается, сегодняшний выпуск я создавал, основываясь на этих результатах. Ниже представлена памятка для голосования.
"К совершенно новому проекту будь готов!" Для того, чтобы создавать программы, вам потребуется 2 основных вещи:
Теперь поговорим более подробно про каждый из этих 2-х компонентов. Компилятор. Компилятор представляет собой средство, позволяющее из исходных ресурсов создавать выполняемые программы. Компилирование переводит исходный код - тот, который понимает человек - в машинные инструкции, которые понимает компьютер. Процесс превращения исходного кода в машинный довольно сложен. В нем, например, определяется, как преобразовать инструкции верхнего уровня в специфические инструкции нижнего уровня, предназначенные для компьютера. После завершения этого процесса, получается исполняемая программа (если, конечно, в исходном коде нет ошибок). Ее-то как раз и можно запускать. В качестве хорошего компилятора могу порекомендовать Borland C++ Compiler. Этот компилятор обладает огромным количеством полезных особенностей (в частности, поддерживает стандарт ANSI C/C++) и, самое главное, абсолютно бесплатный. Да да, именно так. Видимо, компания Inprise (бывшая Borland) решила, что пользователи, поработав с Borland C++ Compiler, сразу же побегут покупать Borland C++ Builder. Скачать компилятор можно на официальном сайте компании www.borland.com. Здесь же можно приобрести и бесплатную версию Turbo Debugger (тем, кто не знает, что такое отладчик, она вряд ли понадобится). Редактор. Редактор используется для создания и редактирования того самого исходного кода. Программистские редакторы отличаются от обычных текстовых процессоров прежде всего тем, что:
Подсветка синтаксиса заключается в том, что те слова, которые нельзя использовать в качестве имен переменных (они называются ключевыми словами) редактор отображает одним цветом. Комментарии - другим. Куски исходного кода на Ассемблере - третьим. Ну и так далее. Подключение компилятора позволяет скомпилировать и запустить программу, не выходя из редактора - т.е. буквально одним щелчком мыши. Проекты - это специальные файлы, содержащие информацию о том, какие исходные файлы надо скомпилировать (и как), чтобы получить исполняемую программу. Все современные программы были созданы с использованием проектов. Вопрос: а можно ли обойтись без проектов? Ответ: можно. Для этого используются специальные make-файлы. Как и файлы проектов, make-файлы содержат информацию об исходных ресурсах, необходимых для создания программы. Однако make-файлы придется создавать вручную, в то врмя как проекты создаются автоматически самими редактором. Вот кусок типичного make-файла:
Посмотришь, и все сразу понятно, правда? Так что, использование проектов - вещь очень и очень нужная. В качестве редактора могу рекомендовать CrEdit (www.geocities.com/plamen_p/credit/index.html). Большинство людей (и я в их числе) использует не редакторы, а IDE - Integrated Development Environment или Интегрированную Среду Разработки. IDE отличается от редактора тем, что поставляется со встроенным компилятором, отладчиком, редактором ресурсов, менеджером проектов и 3-мя бутылками Coca Cola для подержания пользователей в бодром настроении. Существует 2 наиболее распространенных IDE:
Вышеперечисленные IDE можно также заказать в различных Интернет-магазинах, например www.megashop.ru После всего вышесказанного у меня осталось огромное чувство неудовлетворенности: вот насоветовал вам тут покупать что-то у каких-то там дилеров, а насчет того, где взять аналогичные программы, но подешевле, ничего не сказал. Поэтому говорю: заходите на любой каталог программного обеспечения и в разделе Development Tools (или как-нибудь иначе) ищите редактор или IDE. Нашли? Скачивайте! Не нашли? Ищите дальше. Внизу перечень каталогов бесплатного ПО.Русские серверы: Зарубежные серверы: Если у вас возникнут вопросы, связанные с одним из этих 2-х компонентов, то пишите письма:
Эта часть вообще-то должна изобиловать вопросами и ответами на них. Однако, пока что меня мало спрашивают, наверное уже все знают. Тем не менее, один вопрос я получил. Привет Павел. Подписался на вашу рассылку и теперь жду очередного выпуска. А пока жду, хочу рассказать о проблеме. Я начал изучать WinApi и написал простую программу, выводящую окно на экран. Но оно выводится и тут же исчезает. Как этого избежать? С уважением Денис Алексеев Автор вопроса прислал мне и исходный текст программы. Ошибку я обнаружил сразу (поскольку в свое время сам столкнулся с подобной проблемой). Дело в том, что окно закрывается в том случае, если получит событие WM_CLOSE. Следовательно в программе Юрия имеется кусок кода, который после создания окна посылает ему событие WM_CLOSE. Обнаружить его труда не составило: в функции WndProc, которая обрабатывает события главного окна, я нашел фрагмент кода, который независимо от действий пользователя или Windows посылал главному окну сообщение WM_CLOSE. Вот как это выглядит: LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ switch(message) { case WM_DESTROY: PostQuitMessage(0); break; default: DefWindowProc(hWnd, message, wParam, lParam); } return 0; } А должно быть вот как:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM
lParam) Т.е. если функции WndProc посылается событие WM_DESTROY, она должна завершить работу приложения, что достигается путем вызова функции PostQuitMessage. В противном случае следует вызвать функцию DefWindowProc и не просто вызвать (как было у Дениса), а передать ее результат функции WndProc (т.е. return DefWindowProc; в этом примере return играет главную роль, от которой и зависит, будет ли ваше приложение работать или же сразу завершаться).
Пока, пока! Ведущий: Павел Незамаев pnezamaev@hotmail.com Темы писем:
Рассылка СообЧа: http://subscribe.ru/catalog/comp.soft.prog.soobcha Сайт СообЧа: http://www.soobcha.boom.ru и его авторы Егор Гостев: evrica@nytva.permnet.ru?subject=Soobcha Алексей: mreset@mail.ru |
||
Авторское право (C) 2000 Павел Незамаев | pnezamaev@hotmail.com |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
В избранное | ||