Комментарии 22
Уважаемые минусующие! Огромная просьба аргументировать минусы и сделать небольшую скидку для человека написавшего первый пост.
Коэффициент бесполезности ещё одного куска GUI кода без комментариев на WinAPI в 2012 году достигает единицы.
Извеняюсь, с работы прийду все откомментирую. Просто не хотелось статью в очередной hello world превращать
Не хотите хелло-ворлд — так уберите 80% boilerplate и оставьте саму суть.
А что такое этот — boilerplate?
А про то что убрать часть — это же win api, убери строчку и черт ногу сломит где что.
А про то что убрать часть — это же win api, убери строчку и черт ногу сломит где что.
Boilerplate — шаблонный и неинтеренсый в контексте данной статьи код.
WindowProc(), TextOut(), InvalidateRect() не имеют никакого отношения к теме. Если хотите выложить весь код — выложите на гитхаб или ещё куда-то.
WindowProc(), TextOut(), InvalidateRect() не имеют никакого отношения к теме. Если хотите выложить весь код — выложите на гитхаб или ещё куда-то.
Я например все понял и так, полезная статья. Автор создает 2 приложения и передает из одного в другое данные используя функцию SendMessage. Поиск дескриптора окна осуществляется через функцию FindWindow…
Этого нет в формулировке задания.
Что здесь происходит? Я правильно понимаю, что во-первых, результаты функции FindFirstFile не используются, а во-вторых, вы делаете проверку на наличие одного приложения, а запускаете другое?
Нет единого стиля форматирования кода и именования переменных.
Магические числа. Здесь же непонятно, зачем вам нужна структура и набор переменных с такими же именами как в структуре.
Вычисляет(в многопоточном режиме(не удивляетесь, это было одним из пунктов задания))
Что здесь происходит? Я правильно понимаю, что во-первых, результаты функции FindFirstFile не используются, а во-вторых, вы делаете проверку на наличие одного приложения, а запускаете другое?
hFile = FindFirstFile(«Application B.exe», &FindFileData);
WinExec(«App B.exe», 1);
FindClose(hFile);
Нет единого стиля форматирования кода и именования переменных.
Магические числа. Здесь же непонятно, зачем вам нужна структура и набор переменных с такими же именами как в структуре.
char a1[100];
char razn[100];
char colvo[100];
Еще раз слезно прошу — не минусовать за малое кол-во комментариев. Вечером исправлю, а если минус за что то другое — то аргументировать
Ну нафига ещё один hello world?! Кому надо тот сам Петцольда пускай читает, книжка грамотная, я с неё когда-то изучение C начинал.
По существу:
1. WinExec — гавно. Используйте CreateProcess.
2. Передача параметра через хэндл? Не интересно. Memory-mapped file( msdn.microsoft.com/en-us/library/ms810613.aspx ), задоно и с мьютексом бы разобрались и поняли как и для чего он используется.
3. Ну ладно, у вас передача параметров происходит не часто. А если понадобятся частые вычисления в потоках, что тогда? Каждый раз будете создавать поток, а не жирно ли?
Почитайте про пул потоков: если мне не изменяет память то у Рихтера на эту тему есть хороший код, посмотрите его книгу по Win32. Или же www.codeproject.com/Articles/11976/Win32-Thread-Pool
Но Рихтер лучше.
Как итог: почитайте дядьку Рихтера и переделайте код согласно его рекамендациям.
По существу:
1. WinExec — гавно. Используйте CreateProcess.
2. Передача параметра через хэндл? Не интересно. Memory-mapped file( msdn.microsoft.com/en-us/library/ms810613.aspx ), задоно и с мьютексом бы разобрались и поняли как и для чего он используется.
3. Ну ладно, у вас передача параметров происходит не часто. А если понадобятся частые вычисления в потоках, что тогда? Каждый раз будете создавать поток, а не жирно ли?
Почитайте про пул потоков: если мне не изменяет память то у Рихтера на эту тему есть хороший код, посмотрите его книгу по Win32. Или же www.codeproject.com/Articles/11976/Win32-Thread-Pool
Но Рихтер лучше.
Как итог: почитайте дядьку Рихтера и переделайте код согласно его рекамендациям.
Рихтер при работе с WinAPI в принципе обязателен к прочтению.
А в пункте 2 можно было бы заменить на именованные каналы, тогда хоть по сети команды/данные гоняй msdn.microsoft.com/en-us/library/aa365590%28VS.85%29.aspx
А в пункте 2 можно было бы заменить на именованные каналы, тогда хоть по сети команды/данные гоняй msdn.microsoft.com/en-us/library/aa365590%28VS.85%29.aspx
Когда нужно добавить в hello world пару функций, отправляют обычно даже не в msdn, а в гугл, где уже есть ну ОЧЕНЬ много примеров IPC. Хорошо бы если бы вы написали какой-нибудь гайд о действительно редких функциях, но вы взяли одну из самых обычных замусоленных тем (причём осветили один маленький аспект её. Где пайпы? Где общая память? Сокеты? Синхронизация?), и представляете её как будто у вас единственный мануал на эту тему. Чёрт побери, насчёт IPC даже в самом msdn примеры есть… Не говоря уже обо всяких CodeProject…
Просто оставлю это здесь:
alexsoft.home.nov.ru/download/books/Richter__2011_03_21.rar
PS но лучше все же купить.
alexsoft.home.nov.ru/download/books/Richter__2011_03_21.rar
PS но лучше все же купить.
Не много отредактировал и откомментировал код.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Взаимодействие процессов (приложений) на WinApi