» Visual C++ Express - как написать полноценное Win32 приложение : Берлога инженера - бесплатные программы - стереофото - справочные материалы - обои для рабочего стола


Visual C++ Express - как написать полноценное Win32 приложение

Сегодня, как было обещано ранее, я расскажу вам страшную тайну, как при помощи Visual C++ Express собирать полноценные Win32 приложения.

На самом деле, признаюсь честно, это не такой уж и большой секрет. На сайте Microsoft есть даже посвященная этому страничка. Вот только найти ее не совсем просто. А находится она здесь.

Для тех, кто не очень дружен с английским, расскажу вкратце, что нужно сделать.

  1. Качаем отсюда Platform SDK, устанавливаем его.
  2. В меню Tools выбираем пункт Options. В появившемся диалоге, открываем ветку Projects and Solutions и выбираем VC++ Directories. В соответствующие секции добавляем следующие пути:

    Executable files: C:\Program Files\Microsoft SDK\Bin

    Include files: C:\Program Files\Microsoft SDK\include

    Library files: C:\Program Files\Microsoft SDK\lib

    Естественно, если вы установили PSDK в другое место, пути должны быть другими.

  3. Далее, находим на диске файл corewin_express.vsprops, находящийся в папке %VSINSTALLDIR%\VC\VCProjectDefaults и меняем строку

    AdditionalDependencies=”kernel32.lib” на

    AdditionalDependencies=”kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib”

  4. В файле default.js , находящемся в %VSINSTALLDIR%\VC \VCWizards\AppWiz\Generic\Application\scripts\1033
    комментируем две строки.

    LinkTool.AdditionalDependencies = ”kernel32.lib $(NoInherit)”;

    вот так:

    // LinkTool.AdditionalDependencies = ”kernel32.lib $(NoInherit)”;

  5. В файле AppSettings.htm, лежащем в %VSINSTALLDIR%\VC \VCWizards\AppWiz\Generic\Application\html\1033 необходимо закомментировать строки 441-444 вот так:

    //WIN_APP.disabled = true;
    //WIN_APP_LABEL.disabled = true;
    //DLL_APP.disabled = true;
    //DLL_APP_LABEL.disabled = true;

Теперь заходим File->New->Project. Выбираем Win32 Console Application. В появившемся диалоге выбираем Application Settings и видим, что у нас теперь появилась возможность создавать не только консольные приложения, но и полноценные Windows-программы, а также динамические и статические библиотеки.

Умельцы с Codeproject.com подружили Visual C++ Express с библиотекой WTL. К сожалению, полноценная работа с MFC и ATL в данной среде невозможна.

В следующей статье цикла я расскажу вам, как обойти отсутствие в Visual C++ Express встроенного редактора ресурсов. Есть два пути… но о них вы узнаете позже ;).

 Рекомендуйте на news2.ru     Занесите в del.icio.us

Читайте также:
Visual C++ Express - бесплатная среда разработки от Microsoft
CodeBlocks – бесплатная среда для разработки ПО
9. Программирование
Visual C++ Toolkit 2003 - бесплатный компилятор C++ от Microsoft
2. Text, HEX





27 комментария to “Visual C++ Express - как написать полноценное Win32 приложение”

  1. Владимир :

    Испробовал массу редакторов ресурсов (для *.rc файлов) - ничего не удовлетворило. Самый лучший от Borland С++ 5.0, им и пользуюсь. Но у него есть один недостаток - не позволяет работать с 32 битными bmp.
    Поэтому ОЧЕНЬ ЖДУ продолжения Вашей статьи с Вашим решение этой проблемы.

  2. Алексей :

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

    Только, пожалуйста, не ждите от меня каких-то особых откровений. Совсем идеального решения я, к сожалению, пока тоже не нашел.

  3. Алексей Винидиктов :

    У меня в файле default.js две строки

    LinkTool.AdditionalDependencies = ”kernel32.lib $(NoInherit)”;

    Закомменитровал их обе, попробовал создать проект Windows Application, но когда нажал на кнопку “Finish”, получил сообщение “Невозможно создание объекта сервером программирования объектов”.

    Что я делаю неправильно?

  4. Алексей :

    Действительно, нужно закомментировать обе строки - мое упущение, я уже поправил в тексте.

    Теперь по поводу ошибки. Я честно пытался получить ее у себя, но пока не вышло. По идее эти строчки не должны особо влиять на этапе создания проекта, ибо поддержка win32 изначально заложена в VC Express.

    Кстати, в VC Express нет проекта Windows Application. Есть Win32 Console Application. Может у вас другой дистрибутив?

  5. Алексей Винидиктов :

    Из-за ошибки проект просто не создался.

    Я делал следующее: Зашел в File -> New -> Project, выбрал Win32 Console Application, указал имя проекта, затем в Мастере создания приложения выбрал страницу Application Settings, на этой странице выбрал из списка Windows Application, все остальное оставил по умолчнию, потом нажал на Finish и получил ошибку.

    Кстати, не поясните, для чего нужно комментировать строки LinkTool.AdditionalDependencies = ”kernel32.lib $(NoInherit)”;?

    Дело в том, что я успешно использовал VC 2005 Express для создания графических Win32 приложений (я выбирал тип проекта Console Application) на базе wxWidgets, и мне не помешали эти строчки.

    Спасибо.

  6. Алексей :

    Я не такой уж и майкрософтовед, но осмелюсь предположить, что они устанавливают дополнительные параметры для линкера в случае работы VC Express в “чистом” виде. Но после того, как мы прописали пути к PSDK, они наверное просто становятся не нужны. Хотя, возможно, все обстоит совсем не так.

    Просто сам Microsoft здесь сказал это сделать.

  7. » Turbo С++ Explorer - Бесплатная среда разработки от Borland : Берлога инженера - бесплатные программы - стереофото - справочные материалы - обои для :

    […] Описывая бесплатные продукты от Microsoft, было бы странным, продолжая тематику сред для разработки программного обеспечения, обойти вниманием новый продукт от Borland, а именно, Turbo Explorer. […]

  8. Дмитрий :

    Уж полночь близится, а Байрона все нет… Где же обещанный обзор рес-эдиторов?

  9. Алексей :

    Еще и года не прошло, а народ уже возмущается… :)

    Ребята, как (если) только разгребу дела, сразу же сделаю обзор.

  10. Иван Моисееыия :

    visual c++ 2005 txspress
    Сообщите,пожалуйста, есть ли в ..vc\include или в других библиотеках заголовочный фойл windows.h, необходимый
    для русификации вывода на консоль. Спасибо

  11. Алексей :

    Он имеется в Platform SDK, так же как и необходимые библиотеки.

    Кстати, не совсем понятно, что подразумевается под русификацией консоли.

  12. Иван Моисееыия :

    Author: Алексей
    Comment:
    Он имеется в Platform SDK, так же как и необходимые библиотеки.

    Кстати, не совсем понятно, что подразумевается под русификацией консоли.
    ——————–
    В моем visuac++ 2005 Express, который я поставил с диска, который купил на рынке в Москве, какой-то куцый
    DSK\v2.0/ В нем библиотеки Bin; Boolstrapper; Does; Lib
    и библиотеки Include там нет.
    Я хотел скачать по вашим рекомендация старый SDK,
    зашел на сайт Microsoft. но там столько разных редакций.
    Какой вариант качать я пока не разобрался
    Что касается русификации, то Вы легко поймете, посмотрев эту рабочую программку
    //——-
    //Microsoft Visual c++ 2005 Express
    //Эта Win32-приложение формально работает. Оно копирует содержимое файла
    //D:\MyLib\test.txt в вектор строк. Функция cout выводит на экран в коде..
    //вместо з - ч, 0 - Ю, р - Е а - п и т.д. Короче, консоль работает с кодовой
    // страницей 866, а редактор VС++ c кодовой страницей win-1251, SWin=”ёЁTюабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФ
    // ГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ”;
    //————–
    // Как быстро запустить программу?
    // 1. Скопируйте эту программу в Блокнот и запомнте на диске
    // 2. Создайте win32-приложение, удалить там все строки и скопировать туда эту программу
    // 3. Запустите Builg и завтем выполните.

    #include
    #include
    #include
    #include
    #include
    #include
    using namespace std;

    int main()
    {
    setlocale(LC_ALL,”rus_rus.866″);
    vector v;
    ifstream in(”D:/MyLib/test.txt”);
    string line;
    while(getline(in, line))
    v.push_back(line); // Занесение строки в конец вектора
    // Нумерация строк:
    for(int i = 0; i

  13. Алексей :

    Думаю, для Вашего случая сгодится любой SDK (даже, думаю, и DDK, начиная от win98).

    Еще более простым вариантом (если SDK нужен только для для этого) будет являться собственный перекодировщик, а именно, массив на 255 элементов, или даже меньше, если не решать задачу “в лоб”.

    И ещё вариант. Если в Вашем “куцем” SDK есть библиотека kernel32.lib, то можно самому написать h-файл для функций LoadLibrary и.т.д, а дальше грузить любые необходимые функции динамически.

    Если и такой библиотеки нет, существуют утилиты, позволяющие сделать *.lib файлы из *.dll

  14. Иван Моисеевич :

    Спасибо, Алексей.
    1.библиотека kernel32.lib есть:
    2.пока пишу перекодировщик для русских больших и малых букв. Это два массива
    const char win[67]={127, // Кодовая таблица Win-1251 при работе
    192,193,194,195,196,197,168,198,199,200,201, // в редакторе
    202,203,204,205,206,207,208,209,210,211,212,
    213,214,215,216,217,218,219,220,221,222,223,
    224,225,226,227,228,229,184,230,231,232,233,
    234,235,236,237,238,239,240,241,242,243,244,
    245,246,247,248,249,250,251,252,253,254,255
    };

    const char dos[67]={127, // Кодовая таьлица 866 = ОЕМ для вывода на дисплей
    128,129,130,131,132,133,240,134,135,136,137,
    138,139,140,141,142,143,144,145,146,147,148,
    149,150,151,152,153,154,155,156,157,158,159,
    160,161,162,163,164,165,241,166,167,168,169,
    170,171,172,173,174,175,224,225,226,227,228,
    229,230,231,232,233,234,235,236,237,238,239
    };
    ———- ищу индекс символа в Win и по нему опрелеляю код символа в Dos.
    К SDK вернусь попоэже

  15. _Andrey_ :

    2Иван Моисеевич:
    Не самый оптимальный способ перекодировки - у вас появляется цикл. Лучше сделать перекрестные массивы - код символа в одной кодировке, является индексом во втором массиве.

  16. Иван Моисеевич :

    Привет,Алексей
    Пол дела сделам. Но мне надо читать
    текстовый файл и в перекодированном виде выводить на консоль. Читаю символьный файл, а функция работает с unsigned char и пока не могу состыковать их.
    Но это дело времени. Спасибо за внимание
    —————
    #include
    #include
    using namespace std;

    //функция определения длины массива символов
    unsigned int Length(const unsigned char str[])
    {
    int len = 0;
    while (str[len++]);
    return len - 1;
    }

    // функция перекодирования Win-1251 в Dos (OEM)
    void WinToDos (unsigned char t[])
    {
    int n = Length(t); // 23 c
    for (int i = 0; i 239) { t[i] -= 16; continue; }
    if (t[i] > 191) { t[i] -= 64; continue; }
    if (t[i] == 184) { t[i] = 241; continue; }
    if (t[i] == 168) t[i] = 240; // 29
    }
    }
    // Контрольный пример
    int main ()
    {
    unsigned char text1[] = “А Б В Г Д Е Ё Ж Э И Й К Л М Н О П Р С ТУФХЦЧШЩЪЫЬЭЮЯ\n”;
    WinToDos(text1);
    cout

  17. Алексей :

    Здесь, в комментариях, некоторые символы обрезаются парсером, поэтому код становится плохо читаемым и понимаемым.

    Предлагаю продолжить обсуждение на нашем форуме в этом разделе http://beta.delta-z.com/cgi-bin/yabb2/YaBB.pl?board=application

  18. _Andrey_ :

    //функция определения длины массива символов
    unsigned int Length(const unsigned char str[])
    {
    int len = 0;
    while (str[len++]);
    return len - 1;
    }

    Я вижу, вы легких путей не ищете. Или функция strlen() для вас не удобна?

  19. Серега :

    А у меня винда нелицензионная, не могу скачать Platform SDK…
    но ведь надо ж) подскажите, пожалуйста, где б еще качнуть)

  20. Stan :

    Мегабайт с хвостиком весит - могу скинуть. Но он еще потом с инета качает

  21. uchtinka :

    Можно отсюда http://ftp.ufanet.ru/pub/microsoft/sdk/

  22. julia :

    здравствуйте
    а никто случайно не работал с libxml2 - есть проблема с русскими символами в xml-документе, т.е. они вроде должны читаться в формате utf8, но на экран выводится нечитабельное сообщение, как с этим бороться?

  23. Micha :

    Спасибо за статью, прикрутил SDK от 2003 студии и очень рад что не приходится заморачиваться с про версией

  24. Владимир :

    ОЧЕНЬ!!!! жду статью о редакторе ресурсов для MS Visual C++ 2008 Express.
    Только учусь, и не хочу писать под .NET, а редактора ресурсав(кнопочки окошки…) для чистого с++ там НЕТ :(. ОЧЕНЬ ЖДУ!!!

  25. Алексей :

    Есть ли разница, если стоит Vista Basic и VC++ 2008 Express?

  26. apexx :

    Добрый день!
    Скажите пожалуйста, можно ли использовать визуальный редактор экранных форм при создании win32 Forms application.
    Проще говоря, если использовать CLR то можно из ToolBox`а накидать control`ов на форму, а для win32 - не получается….

  27. stalker :

    2 Владимир… MFC не нужен, редактор ресурсов тоже не нужен. Есть wxWidgets и Qt4, есть из чего выбрать на чем делать гуй в экспесс версиях VS.

Оставить комментарий

 
Хостинг от Караван регистрация доменов com ua, провайдеры москва ; эксклюзивные обои на рабочий стол, картинки; Dauerhafte Haarentfernung Berlin; cradle for HTC TyTN II; Турция, Кемер