Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 24.04.2018, 12:18   #1
ArhiCoder
Пользователь
 
Регистрация: 03.04.2018
Сообщений: 11
Репутация: 10
Лампочка MSVC IDE для WinAPI

Интересует ряд вопросов, касательно VisualStudio, для работы только по функционалу WinAPI.
*надеюсь тема в том разделе в котором нужно.

Как различить и отключить подсветку и поддержку сторонних библиотечных функций в среде VisualStudio.
*Множество библиотек устанавливаются автоматически при установке (любой?) версии VisualStudio, такие как WTL, MFC, NET.. Но ни в одной версии VisualStudio нельзя отключить установку доп. функционала, например (это основная проблема) отключение MFC библиотеки.
Когда пишеш код, и даже изучаеш, частенько путаешся, где и какой функционал относится к какой библиотеке. При том что даже создавая проэкты без подключения каких то библиотек и хидеров (которые явно указывают на поддержку сторонних библиотечных функций), многие функции всё равно подсвечиваются и разпознаются средой программирования, и даже компилируются и запускаются (на искомом компьютере где установлена IDE с дефолтым набором библиотек для разработчика). Однако на компьютерах с старыми версиями ОС, на которых хотелось бы чтоб всё работало, программы не будут работать, по крайней мере пока не включиш опции "Use MFC in static Library" ну или ATL.. да и к тому же, даже с этими флагами нужно носить вместе с программой разные версии msvcr100500.dll т.к. после 2000ых(?) каждая IDE использует разные её версии, которые не входят в состав голой ОС (или старой ОС).
Основная проблема в библиотеке MFC, ибо именно она создаёт затруднения в способности отличить где же "стандартный" функционал, а где MFC'шный. Собственно вопрос размыт в рамках этого дополнительного функционала, который очень хочется отключить, дабы видеть наверняка во время разработки, что он не принадлежит к каким то сторонним библиотекам.
Точно сформулировать вопрос довольно сложно, возможно что ответ может быть как в смене версии среды программировния (номер версии, тип версии, например express), так и в настройках проэкта или же самой IDE VisualStudio.
Конечный результат хотелось бы видеть такой:
1) IDE VS для Си/С++ в учебных целях поддерживает и подсвечивает только WinAPI (не считая самого языка).
2) При переносе кода и/или на "устаревшие" ОС, типа WinXP (уж не знаю точно, но лично для меня это "золотой эквивалент"), код будет компилироваться, а приложения запускаться, даже на голые версии (без Service Pack'ов, без доп. DLL и т.п.).

*Конешно откат мира до времени Milenium не возможен, да может и не нужен, но лично для себя считаю возврат из удобного Win7-10 режима в стандарт, весьма нужным. Не исключаю возможность смены ОС на Linux, однако GUI от WinXP на мой взгляд! весьма хорошо и просто сделан, хотя всё же имеет ряд недостатков, которые сильно заметны, особенно при попытках использовать GUI WinAPI с использованием графических библиотек OGL или DirectX(DD).
ArhiCoder на форуме   Ответить с цитированием
Старый 24.04.2018, 12:48   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 12,029
Репутация: 2028

icq: 216409213
По умолчанию

Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
Как различить и отключить подсветку и поддержку сторонних библиотечных функций в среде VisualStudio.
Не инклудить их. Убрать их папки из настроек и т.д.

Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
Множество библиотек устанавливаются автоматически при установке (любой?) версии VisualStudio, такие как WTL, MFC, NET..
WTL не ставится ни с одной.

Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
Но ни в одной версии VisualStudio нельзя отключить установку доп. функционала, например (это основная проблема) отключение MFC библиотеки.
Да вы шутите? В некоторых версиях ее специально надо было включать, пока не обновили. А в в 2017 инсталляторе вообще в двух окнах можно галочки расставлять.

Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
Когда пишеш код, и даже изучаеш, частенько путаешся, где и какой функционал относится к какой библиотеке.
Установите что-то из плагинов для более качественного интелисенса, хотя в последних версиях и так его подтянули.

Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
При том что даже создавая проэкты без подключения каких то библиотек и хидеров (которые явно указывают на поддержку сторонних библиотечных функций), многие функции всё равно подсвечиваются и разпознаются средой программирования, и даже компилируются и запускаются (на искомом компьютере где установлена IDE с дефолтым набором библиотек для разработчика).
Может глаза стоит разуть?

Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
Однако на компьютерах с старыми версиями ОС, на которых хотелось бы чтоб всё работало, программы не будут работать, по крайней мере пока не включиш опции "Use MFC in static Library" ну или ATL.. да и к тому же, даже с этими флагами нужно носить вместе с программой разные версии msvcr100500.dll т.к. после 2000ых(?) каждая IDE использует разные её версии, которые не входят в состав голой ОС (или старой ОС).
1. Это разные вещи. Если думаете программировать стоит различать статическую и динамическую сборку, чем они различаются и т.д.
2. Для всех так было. Можете посмотреть в истории какие редистриб паки были. А что вы хотели в старых ОС, естественно, новых либ не будет.

Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
Основная проблема в библиотеке MFC, ибо именно она создаёт затруднения в способности отличить где же "стандартный" функционал, а где MFC'шный.
Да вы второй раз шутите? У МФЦ свои заголовки, классы и часто типы. Даже наименования отличаются по формату от STL.

Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
1) IDE VS для Си/С++ в учебных целях поддерживает и подсвечивает только WinAPI (не считая самого языка).
Не подключайте ничего кроме ВинАпи хедеров и STL.

Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
2) При переносе кода и/или на "устаревшие" ОС, типа WinXP (уж не знаю точно, но лично для меня это "золотой эквивалент"), код будет компилироваться, а приложения запускаться, даже на голые версии (без Service Pack'ов, без доп. DLL и т.п.).
ВинХП не поддерживается. Нет можно взять старый компиль и компилировать, но ожидать что даже винапи с новым таргетом запустится на ней глупо.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x на форуме   Ответить с цитированием
Старый 24.04.2018, 12:58   #3
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 16,809
Репутация: 3300

icq: 512-765
skype: alexp.frl
По умолчанию

Не сможете вы .NET просто так использовать если не создадите CLR проект.

А с WTL что не так? Почему б не использовать его если можно?

А если ХР нужен, то можно же добавить соответствующие WINVER, _WIN32_WINNT

Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
частенько путаешся, где и какой функционал относится к какой библиотеке
Ну так не путайтесь, гуглите, смотрите MSDN )
Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
без Service Pack'ов
По-моему это невозможно в современных VS.
https://support.microsoft.com/en-us/...table-packages

Советую забить на это если у вас нет особой необходимости, на ХР без SP3 много чего не работает, да и вообще на ХР.

Последний раз редактировалось Alex11223; 24.04.2018 в 13:00.
Alex11223 вне форума   Ответить с цитированием
Старый 24.04.2018, 22:20   #4
ArhiCoder
Пользователь
 
Регистрация: 03.04.2018
Сообщений: 11
Репутация: 10
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
в старых ОС, естественно, новых либ не будет
Как бы мне как раз они и не нужны, а желательно, чтоб их даже и не было. Я почитал о версиях на вики, перед тем как создавать пост, другое дело что можно ли их вообще исключить из более новых версий VS. (я лично пользуюсь 2005, она более менее лайтовая, а всё что позднее - мне не очень нравится, хотя и 2005 уже "продвинутая" по сравнению с 6 например.

Вообще ряд вопросов и ответов весьма сложен, положить всю жизнь на то чтоб изучать тонкости того, как человечество усложняет совершенно не нужные вещи (и не только в плане программирования) лично мне не очень хочется, кое что я знаю, и кое что ещё узнаю, но.. в общем логика я думаю понятна. Хотя конешно, спасибо за наводки, почитаю кое что из того что вы посоветовали.

Цитата:
Сообщение от p51x Посмотреть сообщение
В некоторых версиях ее специально надо было включать, пока не обновили.
Ставил VS6 недавно, там галочка серая почему то (не снимается).

Цитата:
Сообщение от p51x Посмотреть сообщение
У МФЦ свои заголовки, классы и часто типы.
В том то и дело, что сложно отличить, где класс MFC'шный, а где стандартный WinAPI, а на MSDN когда ищеш, там вообще не написано к чему принадлежит то или иное, там единственное что есть, это "request OS version".

В данный момент в проэкте например только заголовки:
Код:

#include <windows.h>
#include "windowsx.h"
#include <atlbase.h>

А он всё равно подсвечивает и компилирует MFCшные классы.

Цитата:
Сообщение от p51x Посмотреть сообщение
ВинХП не поддерживается.
Не поддерживается, это значит что нельзя позвонить в службу тех поддержки с вопросом о XP? Или что?.. Или я не могу написать "hello world" консольное приложение на VS2017, перенести код на VS6, и скомпилить его с использованием стандартных библиотек? (даже можно на линуксе\и для линукса наверно скомпилить, если это лишь консольное приложение)


Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А с WTL что не так? Почему б не использовать его если можно?
Потому что любые сторонние библиотеки вызовут проблемы при переносе кода на старые версии ОС или на другие ОС вообще. (конешно, сам WinAPI для линухи это уже приговор использовать Wine, но как я сказал ранее - сам посебе WinAPI сделан весьма хорошо, если его допилить, то это можно было бы назвать в полной мере "золотым эквивалентом", и ко времени, когда откроют полностью код winXP, можно будет.. ладно, тут я уже не силён в ньюансах закона, поэтому продолжать мысль не буду.

А по поводу фразы "если можно", то это не значит что это стоит того.

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А если ХР нужен, то можно же добавить соответствующие WINVER, _WIN32_WINNT
Что даст? =)

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Советую забить на это если у вас нет особой необходимости, на ХР без SP3 много чего не работает, да и вообще на ХР.
А нужно ли это, то что не работает? - Приимущества превышают потери? Как показывает мой опыт, много чего сделано лишь бы облегчить труд программиста, хотя всё тоже что можно сделать новыми трюками, всё это можно было сделать и старыми методами, но самое главное, что даже не смотря на громоздкость кода времён XP, там была очень точная логическая цепочка всего что ты делаеш, и она была намного проще для понимания. Нынешние 100500 наворотов стоят лишь того, чтоб создать как можно больше рабочих мест и занять народ этим вот ковырянием, в место того, чтоб реально развиваться. (напомнило мне извечную тему "мне начальник сказал сделать всё через классы, а я ему говорю, что есть способ проще, надёжнее и быстрее, но раз начальник сказал.." ^^)
ArhiCoder на форуме   Ответить с цитированием
Старый 24.04.2018, 22:27   #5
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 16,809
Репутация: 3300

icq: 512-765
skype: alexp.frl
По умолчанию

Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
Как показывает мой опыт, много чего сделано лишь бы облегчить труд программиста
Дык без облегчения какие-то программы/фичи никогда не были бы написаны или имели бы больше багов.

Вы ж не хотите на ассемблере писать почему-то?

Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
мне начальник сказал сделать всё через классы
Фигня какая-то, а не начальник. Лучше бежать от него.
Впрочем зависит от конкретной ситуации и этого самого "простого, надежного и быстрого" способа.
Alex11223 вне форума   Ответить с цитированием
Старый 25.04.2018, 00:14   #6
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 12,029
Репутация: 2028

icq: 216409213
По умолчанию

Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
Ставил VS6 недавно, там галочка серая почему то (не снимается).
А вы случаем на на вин 98 работаете?

Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
В том то и дело, что сложно отличить, где класс MFC'шный, а где стандартный WinAPI
Легко. У ВинАПИ нет классов.

Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
А он всё равно подсвечивает и компилирует MFCшные классы.
Может ATLшные? Код показывайте.

Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
Не поддерживается, это значит что нельзя позвонить в службу тех поддержки с вопросом о XP? Или что?
Все. Не позвонить, не обновлений, не гарантий работы новых приложений/драйверов на них.

Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
Или я не могу написать "hello world" консольное приложение на VS2017, перенести код на VS6, и скомпилить его с использованием стандартных библиотек? (даже можно на линуксе\и для линукса наверно скомпилить, если это лишь консольное приложение)
Если ХВ и перенести и скопилить старым, то сработает. А дальше начнутся веселья: в 2017 стандарт по новее, для компиляции под хп нужен сдк старый с тулсет с таргетом на хп...

Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
Что даст? =)
Правильно настроенный СДК. Но фактически студия ама их прописывает при генерации.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x на форуме   Ответить с цитированием
Старый 25.04.2018, 10:37   #7
ArhiCoder
Пользователь
 
Регистрация: 03.04.2018
Сообщений: 11
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Дык без облегчения какие-то программы/фичи никогда не были бы написаны или имели бы больше багов.
Для реализации одной и той же задачи, порой можно несколькими путями достичь результата, другое дело, что оптимизации и инструкции публичной нету, для того чтоб быстрее сделать и изучить WinAPI. Так что нет, не согласен, новое не всегда лучше.

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Вы ж не хотите на ассемблере писать почему-то?
Я бы не прочь изучить, но коли с WinAPI на С++ куча проблем (причём они все из за недостатка информации, которую очень сложно найти в качественном виде), то с ассемблером будет ещё сложнее. Но ваш вопрос слишком филосовский.. Я предполагаю где мне нужен ассемблер, и может руки дойдут, и я таки изучу и применю его. С другой стороны вы намекаете, что мол нужно полностью отказаться от всех языков, сделанные для удобства чтения, что противоречит логике "золотой середины".

Цитата:
Сообщение от p51x Посмотреть сообщение
на вин 98 работаете?
К чему этот вопрос? К галочке не имеет отношения.

Цитата:
Сообщение от p51x Посмотреть сообщение
У ВинАПИ нет классов.
Структуры то есть..

Цитата:
Сообщение от p51x Посмотреть сообщение
Может ATLшные? Код показывайте.
Каждый частный случай показывать? Я бы хотел сам знать что к чему относится, дабы все 100500 структур\классов\типов\и т.п. не бегать показывать кому то.. Всё тот же вопрос "где на MSDN" написано, какие функции, структуры и т.п. относятся к WinAPI, а какие к надстройке MFC ?".

Цитата:
Сообщение от p51x Посмотреть сообщение
Все. Не позвонить, не обновлений, не гарантий работы новых приложений/драйверов на них.
Значит не звони, не обновляй, не запускай/устанавливай новые приложения/драйвера. Эта дискуссия скатывается куда то не туда. Чисто абстрактно, я могу дать несколько вариантов ответов: 1) XP поддерживает то что было в его время, поэтому эту ОС можно использовать для того оборудования и для тех программ которые были созданы для XP. 2) Написать свои программы, свои драйвера.
ArhiCoder на форуме   Ответить с цитированием
Старый 25.04.2018, 10:49   #8
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 12,029
Репутация: 2028

icq: 216409213
По умолчанию

Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
но коли с WinAPI на С++ куча проблем (причём они все из за недостатка информации, которую очень сложно найти в качественном виде)
мсдн, рсдн и so вас забанили?

Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
К чему этот вопрос? К галочке не имеет отношения.
К тому что на дворе середина 2018 года. Уже и стандарт несколько раз поменялся, и либы обновились, и сдк, и инсталяторы...

Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
Структуры то есть..
И? У вас интелисенс не показывает, что это класс или структура? А ну да... там же вс6...

Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
Всё тот же вопрос "где на MSDN" написано, какие функции, структуры и т.п. относятся к WinAPI, а какие к надстройке MFC ?".
Вас точно там забанили.
https://docs.microsoft.com/en-us/cpp...ce/mfc-classes
https://docs.microsoft.com/en-us/cpp...by-mfc-and-atl

Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
Эта дискуссия скатывается куда то не туда.
А ну если вы чисто для себя. Развиваться не собираетесь, то да. Тогда запасайтесь старыми статьями и документациями, а то начнете еще искать конструктор перемещения в вс6.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x на форуме   Ответить с цитированием
Старый 25.04.2018, 10:51   #9
waleri
Профессионал
 
Регистрация: 13.07.2012
Адрес: Нижний Новгород
Сообщений: 5,529
Репутация: 1728
По умолчанию

Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
коли с WinAPI на С++ куча проблем (причём они все из за недостатка информации, которую очень сложно найти в качественном виде)
Бред.

Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
Всё тот же вопрос "где на MSDN" написано, какие функции, структуры и т.п. относятся к WinAPI, а какие к надстройке MFC ?".
В WINAPI классов нет.
Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
Структуры то есть..
Толстый тролль? Хорошо, я разжую совсем - в MFC/ATL структур нет, только классы. Если класс, значит MFC/ATL, если структура значит WINAPI.
Если читаете про функцию, то это WINAPI, если читаете про класс то это MFC/ATL.

MSDN - это справочное пособие а не учебник, оно написано для людей, имеющих базовые знания.
waleri вне форума   Ответить с цитированием
Старый 25.04.2018, 13:35   #10
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 16,809
Репутация: 3300

icq: 512-765
skype: alexp.frl
По умолчанию

Цитата:
Сообщение от ArhiCoder Посмотреть сообщение
Для реализации одной и той же задачи, порой можно несколькими путями достичь результата, другое дело, что оптимизации и инструкции публичной нету, для того чтоб быстрее сделать и изучить WinAPI. Так что нет, не согласен, новое не всегда лучше.
Что-то вы не о том и в предыдущем сообщении вообще взаимоисключающие предложения.

Я о том, что "облегчение труда программиста" это не мелочь вообще-то.

Даже если это происходит за счет ресурсов системы, то как правило бизнесу намного выгоднее и проще купить более мощное железо, чем найти гуру-программистов-80лвла.

Если бы все до сих пор сидели на ассемблере или даже С, то наверняка не было бы многих приложений, сервисов, услуг, которые мы сейчас используем.

Ну и менее глобально про тот же С++: появились smart указатели — стало намного проще управлять памятью, меньше риск утечек и ошибок. Неужели они не стоят некоторого времени потраченного на их изучение?

Появились async/await и прочие упрощения асинхронности и параллельности в других ЯП: разработчиком стало намного проще реализовывать это, теперь можно позволить делать это не только по особым случаям раз в год, улучшается производительность и отзывчивость ПО.

Появились облачные хостинги серверов — стало намного проще и дешевле хостить различные веб-сервисы, расширять их и т.п., во многих случаях можно обойтись без своего физического сервера со всеми идущими с ним в комплекте проблемами.
Появились Chef/Ansible, Docker и т.п. — стало намного проще управлять инфраструктурой, сервис не упадет на неделю из-за того, что никто не знает как устанавливать все это чудо на новый сервер, а сисадмин делавший это 4 года назад уже уволился.

Кстати, а что за цель-то у вас? Десктопные приложения вообще уже не особо популярный выбор, ну или хотя бы берут что-нибудь типа Qt, а не на винапи с 0.
Alex11223 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен классовый оператор для процедуры, и паяльник для IDE Мордохвост Общие вопросы Delphi 5 29.08.2015 08:04
IDE для Node.js ACE Valery Общие вопросы Web 7 22.01.2013 15:08
IDE / билд-система для 1С-Битрикс для автоматического оверрайда компонетов/шаблонов Ivan_32 WordPress и другие CMS 0 15.12.2012 13:35
C++ IDE для OS X pinguinson Общие вопросы C/C++ 0 08.12.2012 21:58
Стоит ли использовать inline для оптимизации в MSVC? Kn793 Общие вопросы C/C++ 2 10.12.2010 17:07


02:20.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru