Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Visual C++ 6.0 или Visual C++ 2008


Автор: Riddik 25.1.2009, 22:47
У меня есть  Visual C++ 6.0, сейчас скачал  Visual C++ 2008 Expess Edition с оф.сайта.
К изучению ни того, ни другого ещё не приступал. 
Есть книга в бумажном варианте Холзнера  Visual C++ 6.0 
По Visual C++ 2008 Expess Edition нет ничего.
На чём посоветуете остановиться? Раз 6-ой полная версия, может лучше на нём, чем на Expess Edition 2008-ом? 
Действительно ли в Expess Edition нет MFC?

Добавлено через 2 минуты и 53 секунды
И ещё вопрос, уж простите за дремучесть в этих делах: Visual C++. NET и Visual C++ 2008 Expess Edition - это равносильные вещи?

Автор: bel_nikita 25.1.2009, 23:31
Устанавливай VC++ 2008 и VC++ 6 smile
В Express Edition действительно нет MFC.
Если твоя цель изучить MFC, то бери VC++ 6 тем более, что и книга есть.  После основ, заложенных на VC6, перейти на VC 2008 не будет никаких проблем.
Я, например, до сих пор пользуюсь VC6.


Visual C++ .NET - это скорее всего VC 7.1, а  Visual C++ 2008 - это версия VC 9.х. Ну, и Visual C++ 2005 - это версия VC 8.х.

Автор: Pion 25.1.2009, 23:44
Мне 2008 очень понравилась... Благо если студент, то можно бесплатно получить... А вот шестерка че-то подвисала со временем во время компиляции, хотя тоже очень ниче.

Автор: Riddik 26.1.2009, 01:53
Благодарю за ответы ))

Вобщем, пока на VC6 буду в основном, а 2008 добавочка)), хотя не MFC моя цель, а DirectX))



Автор: mrbrooks 26.1.2009, 09:26
Цитата(Riddik @  26.1.2009,  01:53 Найти цитируемый пост)
хотя не MFC моя цель, а DirectX))

тогда 2008  smile 

Автор: Riddik 26.1.2009, 10:25
Только вот проблема, снова извиняюсь за дремучесть, но без MFC я и виндовское окошко не  смогу создать в  Visual C++ 2008  )) 
Я правильно понимаю, тогда нужно winAPI? Или я совсем бред несу? 

Автор: mrbrooks 26.1.2009, 10:27
Цитата(Riddik @  26.1.2009,  10:25 Найти цитируемый пост)
Я правильно понимаю, тогда нужно winAPI? 

совершенно верно  smile 

Цитата(Riddik @  26.1.2009,  10:25 Найти цитируемый пост)
Или я совсем бред несу?  

все ок  smile 

Автор: Riddik 26.1.2009, 11:56
Благодарю))

Автор: Riddik 27.1.2009, 02:25
Я в затруднении... что же это за различия такие между Visual C++ 6.0 и Visual C++ 2008?

Вот код простого построения окна для Visual C++ 6.0 с использованием винАПИ:
Только те строки, которые не работают для Visual C++ 2008:
Код

int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow)
{
     WNDCLASSEX mywindow;
      ...
      mywindow.lpszClassName="WINCLASS";   //имя для моего класса
      ...
      CreateWindowEx(NULL, "WINCLASS", "Пустое окошко", 
         WS_OVERLAPPEDWINDOW|WS_VISIBLE, 0,0, 1024, 768, NULL, NULL, 
         hinstance, 0);        //создаётся окошко             


Visual C++ 6.0 всё понятно, появляется окошко.

А Visual C++ 2008 ругается, что не может преобразовать "WINCLASS" в тип LPCWSTR.
Поэтому я переделал так для него:
Код

mywindow.lpszClassName=(LPCWSTR)"WINCLASS";   //имя для моего класса
      ...
      CreateWindowEx(NULL, (LPCWSTR)"WINCLASS", (LPCWSTR)"Пустое окошко", 
         WS_OVERLAPPEDWINDOW|WS_VISIBLE, 0,0, 1024, 768, NULL, NULL, 
         hinstance, 0);        //создаётся окошко 


 Почему так происходит? И что самое интересное, если для Visual C++ 6.0 указать преобразование в LPCWSTR перед "текст" то он не работает.  Т.е., первый вариант работает только для 6.0., а второй только для 2008.

Добавлено через 11 минут и 48 секунд
И ещё я подсмотрел, что вместо (LPCWSTR) лучше просто L ставить перед "text". Почему, что это за L?

В Visual C++ 2008 функция CreateWindowEx(...,  (LPCWSTR)"Пустое окошко", ...); выводит квадратики в заголовок окна, а если так:
CreateWindowEx(...,  L"Пустое окошко", ...); То всё в порядке.

А для Visual C++ 6.0 всё прекрасно работает просто так: 
CreateWindowEx(..., "Пустое окошко", ...);


Автор: Earnest 27.1.2009, 08:44
Это не разница между компиляторами; они оба поддерживают и Юникод и Анси; просто у них разные умолчания: у MSVC 6.0 по умолчанию проект Multibyte, а в 2008 - Юникод. Пиши строковые литералы используя макрос TEXT ("MyStr"), и не будет никакой разницы. Иди сходи в настройки проекта и поменяй charset.

Автор: Riddik 27.1.2009, 10:32
Спасибо))

Автор: stat007 27.1.2009, 12:11
Как по мне, то лучше всего это 6-я версия.

Автор: IKM2007 27.1.2009, 12:57
Цитата(stat007 @  27.1.2009,  12:11 Найти цитируемый пост)
Как по мне, то лучше всего это 6-я версия.

Ага, я тоже только начал MFC, хотел в 2008 Team Edition, но книги по 6.0, установил 6.0, за день 150 страниц перевалил. Очень быстро все учишь. Да и почти везде 6.0, например у нас в универе, а 2008 редко попадается. В итоге использую 2008 - для консольных приложении; 6.0 - для windows-приложении.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)