Форум города Днепр (Днепропетровска)

Форум города Днепр (Днепропетровска) (http://forum.dneprcity.net/index.php)
-   Уроки C++ (http://forum.dneprcity.net/forumdisplay.php?f=163)
-   -   Уроки программирования на C/C++ под Windows (http://forum.dneprcity.net/showthread.php?t=10710)

Strelok 22.03.2011 13:46

Уроки программирования на C/C++ под Windows
 
Эти уроки, как я надеюсь, помогут научить Вас тому, что считается классическим программированием для Windows. Для начала возьмем старый добрый C (а не C++) и используем напрямую базовый интерфейс программирования приложений (API), а не какую бы то ни было другую оболочку, скрывающую под упрощенным, на первый взгляд, интерфейсом все тот же API. Постепенно, по мере возрастания сложности примеров, будут добавляться тексты программ на C++.
Конечно, для программирующих, скажем на Delphi, написание программы на простом C с использованием только API покажется сложным, однако в любом случае Вы сможете более отчетливо представлять, как действует Windows и ее приложения. Такой подход даст Вам знания, о которых Вы никогда не пожалеете.
В дальнейшем Вы сможете пользоваться средствами, облегчающими программирование, такими как Microsoft Foundatoin Classes (MFC) или Object Windows Library (OWL), однако не советую делать это прежде, чем Вы научитесь программировать на обычном C.




Что Вам потребуется?


Компилятор C/C++
(Автор пользуется Microsoft Visual C++ 6.00). Настоятельно рекомендую пользоваться компилятором фирмы Microsoft, т.к. при использовании продуктов других фирм могут быть проблемы (в частности несоответствие библиотек). Если Вы послушались совета и используете Microsoft Visual C++, то Вам желательно также добавить в Ваш AUTOEXEC.BAT инструкцию:



CALL VCVARS32.BAT



Естественно, нужно указать правильный путь к файлу VCVARS32.BAT. Этот файл, включенный в VC++, устанавливает переменные среды DOS для компиляции программ с помощью командной строки DOS. Кроме того, желательно вставить в AUTOEXEC.BAT и вторую инструкцию CALL:

CALL MSC.BAT

и поместить файл MSC.BAT в удобный для вас каталог. Файл MSC.BAT
SET CC=cl
SET CFLAGS=-c -DSTRICT -G3 -Ow -W3 -Zp -Tp
SET CFLAGSMT=-c -DSTRICT -G3 -MT -Ow -W3 -Zp -Tp
SET LINKER=link
SET GUIFLAGS=-SUBSYSTEM:windows
SET DLLFLAGS=-SUBSYSTEM:windows -DLL
SET GUILIBS=-DEFAULTLIB:user32.lib gdi32.lib winmm.lib
comdlg32.lib comctl32.lib
SET RC=rc
SET RCVARS=-r -DWIN32



Ну а теперь...


Урок №1

Hello, World!


Не могу удержаться, чтобы не привести простейшую программу всех времен...

#include
void main(void)
{
printf("Hello, world!\n");
}

Если Вы думаете, что эта программа не будет работать под Windows, то глубоко ошибаетесь! Под Windows можно писать так называемые консольные приложения. Пример популярной консольной программы - Far manager. Для консольной программы в момент ее запуска операционной системой автоматически создается окно сеанса DOS, как и для обычной DOS-программы. На первый взгляд разницы между обычной DOS-программой и консольной программой нет. Однако это не так. Консольная программа может использовать всю мощь API (например работа с огромными блоками памяти, файлами, проецируемыми в память и т.д.), и даже создавать обычные Windows-окна.
Для запуска приведенной выше программы создайте в MS Visual C++ проект с типом Console Application, добавьте в проект файл (с любым именем и расширением .c или .cpp) с текстом программы и затем откомпилируйте проект.




Hello, Windows!
(1)

Однако наша задача - научиться писать полноценные программы под Windows (консольные приложения все же трудно назвать полноценными, хотя некоторые могут и не согласиться).
Вот простейшая программа из серии Hello, Windows:



//файл winmain.cpp
#include //этот файл всегда включается
//в Windows-программу

//Это главная функция программы.
int WINAPI WinMain(HINSTANCE hInst, //пусть Вас не смущает то,
HINSTANCE hPrevInst, //что здесь написано.
PSTR szCmdLine, //Мы разберем
int iCmdShow) //это позже.
{
//Вывести сообщение на экран.
MessageBox( //функция вывода сообщения
NULL, //окно сообщения не имеет родителя
"Hello, Windows!", //текст сообщения
"Наша первая программа", //заголовок окна
MB_ICONINFORMATION); //иконка, которая будет
//выведена левее сообщения
return 0;
}

Чтобы запустить эту программу, создайте проект с типом Win32 Application, добавьте в него файл с текстом программы и откомпилируйте.
Конечно, эта программа - не более, чем учебный пример. Ничего полезного она делать не может.





Hello, Windows!
(2)

Давайте теперь создадим скелет программы, который мы будем использовать в дальнейшем. Эта программа уже имеет нормальную структуру (т.е. примерно такую, какую имеют все Windows-программы).



//файл hellowin.cpp
#include

//описание оконной процедуры
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

//Это главная функция программы.
int WINAPI WinMain(HINSTANCE hInst,
HINSTANCE hPrevInst,
PSTR szCmdLine,
int iCmdShow)
{
HWND hwnd;
MSG msg;
WNDCLASSEX w;
static CHAR *szAppName={"HelloWin"};

w.cbSize=sizeof(w);
w.style=CS_HREDRAW|CS_VREDRAW;
w.lpfnWndProc=WndProc;
w.cbClsExtra=0;
w.cbWndExtra=0;
w.hInstance=hInst;
w.hIcon=LoadIcon(NULL,IDI_APPLICATION);
w.hCursor=LoadCursor(NULL,IDC_ARROW);
w.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH );
w.lpszMenuName=NULL;
w.lpszClassName=szAppName;
w.hIconSm=w.hIcon;
RegisterClassEx(&w);

hwnd=CreateWindow(
szAppName,
"Hello, Windows",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInst,
NULL);
ShowWindow(hwnd,iCmdShow);
UpdateWindow(hwnd);

while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

//Оконная процедура
LRESULT CALLBACK WndProc(HWND hwnd, UINT imsg,
WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT r;

switch(imsg)
{
case WM_CREATE:
return 0;
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
GetClientRect(hwnd,&r);
DrawText(hdc,"Hello, Windows!!!",-1,&r,
DT_SINGLELINE|DT_CENTER|DT_VCENTER);
EndPaint(hwnd,&ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}

return DefWindowProc(hwnd,imsg,wParam,lParam);
}


Эта программа уже имеет все свойства обычной Windows-программы. Вы можете изменять размер окна, при этом текст всегда будет выводиться в его центре. Вы можете свернуть окно или развернуть его на весь экран. Конечно, сложность исходного текста поначалу может пугать, но это только в начале. На следующем уроке Вам предлагается изучить весь исходный текст этой программы строчка за строчкой.

Leno4ka1990 04.03.2016 23:50

Ответ: Уроки программирования на C/C++ под Windows
 
Неплохой урок жаль только что нет продолжения:dontknow:

Andriana123 08.07.2016 13:45

Ответ: Уроки программирования на C/C++ под Windows
 
та про продовження це точно хороші уроки но дужу дуже короткі

krutoitip 29.07.2017 19:14

Ответ: Уроки программирования на C/C++ под Windows
 
Цитата:

Сообщение от Leno4ka1990 (Сообщение 295803)
Неплохой урок жаль только что нет продолжения:dontknow:

Вы всегда можете обратиться в агентство системных интернет-решений ВЕЗОМ. Эта веб студия не только предлагает различные курсы, но также сможет создать и продвинуть сайт, разработать мобильное приложение http://wezom.com.ua/razrabotka-mobilnyh-prilozhenij, окажут поддержку вашему бизнесу. Кто заинтересовался, обращайтесь к ним.

megaoksi 05.05.2018 19:45

Ответ: Уроки программирования на C/C++ под Windows
 
Да, специальность программиста с каждым днем становится все более популярной, по скольку люди с данной профессией получают достойную заработную плату, их труд высоко ценится. Когда я хотела стать хорошим программистом, начинала с курсов программирования javarush для начинающих в Киеве https://javarush.ru/groups/posts/559...jshikh-v-kieve и хочу сказать вам, что на данный момент это лучшие курсы по программированию в нашей стране. Они выпустили много программистов, которые сейчас работают в ведущих ит-компаниях. Но главным залогом конечно же будет ваше стремление учится данному делу и большой труд. Всем желаю удачи!!!

semena konopli 27.07.2018 21:51

Ответ: Уроки программирования на C/C++ под Windows
 
Классно всегда хаотел

semena konopli 27.07.2018 21:52

Ответ: Уроки программирования на C/C++ под Windows
 
Правда

semena konopli 27.07.2018 21:54

Ответ: Уроки программирования на C/C++ под Windows
 
Как долго нужно учить это все дело?

vorog50 29.11.2018 08:01

Ответ: Уроки программирования на C/C++ под Windows
 
Привет Спасибо за информацию Очень даже пригодится

andrew_belozerov93 22.05.2019 10:04

Ответ: Уроки программирования на C/C++ под Windows
 
В чем принципиальное различие объявление функции через void и через int? Как оно влияет на конечную отработку программы?

thzfsdhdty 22.05.2019 11:34

Ответ: Уроки программирования на C/C++ под Windows
 
Cho thuГЄ mГ*n hГ¬nh led tбєЎi tphcm, mГ*n hГ¬nh led tб»• chб»©c sб»± kiện, mГ*n hГ¬nh led trong nhГ*, led ngoГ*i trб»ќi

Cho thuê sân khấu ca nhạc/ tổ chức lễ hội/ lễ khai giảng bế mạc/ sân khấu 3D phối cảnh chuyên nghiệp

https://violetwedding.net/cho-thue-m...-san-khau.html

gtaa1994 11.06.2019 03:11

Re: Уроки программирования на C/C++ под Windows
 
отличная программа, которую я рекомендую
http://airdrop.hhos.ru/fast-copy/


Текущее время: 14:42. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.7.0
Copyright ©2000 - 2024, vBulletin Solutions Inc. Перевод: zCarot