|
14 / 14 / 3
Регистрация: 16.04.2013
Сообщений: 404
|
||||||
Изучение WinAPI07.06.2014, 00:54. Показов 3975. Ответов 14
Метки нет (Все метки)
Добрый вечер.
Начал изучать WinApi, но как увидел код простого окна, то немного очумел ![]() Расскажите кто как его учил и посоветуйте как лучше изучать, ведь что бы написать код одного окна, это же сколько нужно всего запомнить. Я знаю что можно использовать шаблоны, но хотелось бы понимать и уметь самому писать код. Вот простой код окна с Hello World Меня он как то пугает) Или всё же с опытом придёт?) Спасибо)
0
|
||||||
| 07.06.2014, 00:54 | |
|
Ответы с готовыми решениями:
14
Изучение Winapi Изучение WINAPI Изучение WinAPI на С++ |
|
Заблокирован
|
||||||
| 07.06.2014, 08:51 | ||||||
|
1. Именно он и есть самое трудное в изучении WinAPI. Все остальное намного легче.
Начните лучше с такого проекта (это его код целиком)
Первый - старинное шаманское средство))))) просто сохраните его в такое место, где он будет под рукой, и копипастите оттуда, как заклинание, не разбираясь, и будет вам счастье)))))))) А второй - разобрать, что все это означает)))))) Объяснения есть тут http://netcode.ru/cpp/?artID=3920 http://softcraft.ru/coding/winapi/generic.shtml - на последнем сайте несколько статей по вашей теме, смотрите все а если они вам не нравятся, именно для этого и существует гугл
2
|
||||||
|
Ушел с форума
|
||
| 07.06.2014, 10:04 | ||
|
С опытом Вы поймете, что в этой "портянке" все составляющие нужны. И стартовый код, и регистрация класса, и цикл выборки оконных сообщений, и сама оконная процедура с обработчиками. Просто в серьезных приложениях такие вещи пишутся, как правило, на базе различных GUI-библиотек, которые скрывают всю эту "кашу" за простыми и приятными фасадиками. Но знать, как оно там, внутри, устроено, все равно нужно.
2
|
||
|
Программист
119 / 97 / 11
Регистрация: 22.03.2011
Сообщений: 244
|
|
| 10.06.2014, 20:45 | |
|
Доброго времени суток. Есть очень хорошая книжечка: "Юрий Щупак Win32 API Эффективная разработка приложений". Там всё разжевано. В Интернете найти не проблема.
1
|
|
|
68 / 65 / 21
Регистрация: 01.05.2014
Сообщений: 247
|
|
| 11.06.2014, 10:23 | |
|
Приветствую - ВСЕХ!
Ни надо ничего учить. Нужно знать - где точку с запятой установить, ну и ещё "пару" мелочей. Просто: нужно грамотно знать структуру, функции "WndProc". Вот ОНА - пожалуй самая Важная и Интересная, т.к. неверный "return" - "завалит" всю программу. Также. Программы создаются ни для того, чтобы показать - вот я , мол программист, для того чтобы Это пользу приносило - непосредственно ВАМ.
0
|
|
|
14 / 14 / 3
Регистрация: 16.04.2013
Сообщений: 404
|
|
| 12.06.2014, 13:05 [ТС] | |
|
Спасибо, учу по этой книге)
0
|
|
|
Заблокирован
|
||||||||||||||||||||||||||
| 13.08.2014, 20:50 | ||||||||||||||||||||||||||
|
Ритуал некродлиннопостирования в честь вопросов вокруг кода с MSDN и его копий и пародий разной степени перевранности.
Код этот кажется чрезмерно сложным, потому что, во-первых, в нем много лишнего, во вторых, он плохо структурирован. Лишнее в коде: 1) стили CS_HREDRAW | CS_VREDRAW. Они вызывают перерисовку окна при растягивании. Что нужна далеко не всегда и иногда лишь приводит к мерцанию содержимого. Достаточно вместо них писать 0. 2) почему используется WNDCLASSEX и RegisterClassEx, а не WNDCLASS и RegisterClass соответственно? Из-за этого приходится заполнять свойство wc.hIconSm. Может при каких-то условиях это и имеет смысл: hIcon -это большая иконка для панели задач, hIconSm - маленькая для заголовка окна. Но здесь все равно в обоих случаях используется одна и та же иконка! Да и она, если уж на то пошло, в хелловорлде необязательна. Достаточно поставить hIcon в NULL и все будет нормально. 3) что может такого случиться, что не получится зарегистрировать класс окна хелловорлда (!) и создать это окно?
А вызывать MessageBox, если не получилось создать основное окно - это, должно быть, что-то в стиле "Не найдена клавиатура, нажмите клавишу F2". Если почему-то не создалось окно, то и MessageBox может не появиться. Вообще, параноики и прочие индусы часто фаршируют учебные коды трукатчами и прочей защитой-от-фиг-пойми-чего, чем их удлинняют. 4) Зачем (HWND)NULL, зачем (HINSTANCE)hInstance? Кто-то передает параметром hWnd или hInstance что-то другое, что не является дескриптором окна или экземпляра приложения? Да еще и в хелловорлде. 5) Зачем это?
Плохая структурированность кода: 1)
2)
Достаточно переделать код в соответствии со всеми этими пунктами - и разобраться в нем станет во много раз легче.
0
|
||||||||||||||||||||||||||
|
Ушел с форума
|
||
| 13.08.2014, 21:22 | ||
|
Со всеми пунктами согласен, кроме этого:
Качество такого кода, разумеется, "на высоте" - он хорошо читается и так же "хорошо" предсказуем. А какие занятные ошибки порой в таком коде можно найти, м-м !..
0
|
||
|
Заблокирован
|
||||||||||||
| 13.08.2014, 21:33 | ||||||||||||
|
Убежденный,
Например, в этом коде есть никому не нужная проверка, зарегистрировался ли класс окна и создался ли дескриптор окна, но зато не учтено, что вот такая конструкция
И что им мешало дописать десяток-другой лишних букаф и сделать вот так?
0
|
||||||||||||
|
Ушел с форума
|
||
| 13.08.2014, 23:21 | ||
|
проверки или нет. Если функция/метод бросает исключение - его нужно ловить. Если функция/метод возвращают bool или код ошибки - его нужно проверять. Всегда и везде. Код, который не следует этому правилу, не может считаться корректным по определению. IMHO. Добавлено через 17 минут Да, и я хотел бы добавить, что "зашумление" кода проверками на каждом шагу - это не приговор. Если сделать грамотное разделение на бизнес-слой и слой обработки ошибок, "шума" не будет. Например, можно спрятать все проверки внутри оберток, кидающих исключения. А исключения ловить на верхних уровнях. В итоге бизнес-уровень останется компактным и выразительным.
0
|
||
|
Заблокирован
|
||
| 13.08.2014, 23:30 | ||
|
Убежденный,
А до того, что покупателям куда важнее чтобы код компилировался в VS как надо, ибо это платный набор GUIшных свистоперделок за штуку баксов, и покупателям его в своих проектах в VS использовать, - дурак начальник просто не допетрит.
0
|
||
|
Ушел с форума
|
|
| 13.08.2014, 23:40 | |
|
Водяной Змей, что Вы по существу можете возразить против проверки всего и вся ?
Только давайте не будем про индусов и то, что код, обложенный проверками, вдруг почему-то должен перестать компилироваться. Эти вещи никак друг с другом не связаны: от того, что я лишний раз проверю возвращаемое RegisterClassExW значение, код компилироваться не перестанет. Да, и оговорюсь сразу, что не ставлю никаких "холиварных" целей, боже упаси. Свою позицию по этому вопросу, если интересно, я могу расписать в более подробной форме, но сначала хотел бы услышать Ваш ответ.
0
|
|
|
Заблокирован
|
|||
| 14.08.2014, 00:47 | |||
|
Убежденный,
Для всяких платных контролов и прочих средств разработки это особо важно: новичок попробует триал - ничего не поймет - полную версию не купит - да еще и отзыв плохой в инете напишет, так что и профи выберет лучше продукт конкурентов.
0
|
|||
| 14.08.2014, 06:17 | |||||||
0
|
|||||||
| 14.08.2014, 06:17 | |
|
Помогаю со студенческими работами здесь
15
С чего начать изучение WinAPI? Посоветуйте с чего начать изучение WinAPI winApi изучение изучение C# изучение с++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|