powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
25 сообщений из 49, страница 1 из 2
На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
    #37911538
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тяжелый конечно вопрос, но таки об этом задумался.
Думаю о Windows Forms Application VB.NET и о С (#.NET ???)
Вкратце(если получится вкратце):

1) VB6 - для меня USER интерфейс.
Придерживаюсь строго стиля текущей WIN OS без самодеятельностей, как правило модифицирую имеющиеся контролы (реже создаю) через API - хитрости, манифесты - для стиля, 32-битные иконки через ResHacker, всякие там WinProc и т.п. Ну в целом все красоты решаются -большим объемом нестандартных работ.
2) Использую API для решения ряда других прикладных вопросов. В частности очень много GDI+/-
3) В основном приложение VB6 состоит из форм и кучи модулей, классы терпеть не могу (использую наверно 2-3шт CMultiFrameImage от Бенедикта, ClsText, Splitter) и плохо в них разбираюсь, хотя в том же сплиттере и CMultiFrameImage модифицировал немало. OCX-ов никогда не писал, чужими (включая от Microsoft ) стараюсь не пользоваться, ActiveX.EXE не понял и не хочу, люблю CreateObject и оч. не люблю раннее связывание.
4). Использую БД аля MS Access через MS ADO и не о каких SQL и прочем слышать не хочу, мне достаточно.
5). Оч. люблю использовать Shell(proga.exe) и ShellAndContinue(proga.exe) -модификация Shell с контролем ожидания завершения вызванного процесса - как с системными, так и с нек. другими утилитами.

Ну, топиков моих тут много даб все это проиллюстрировать.

Если я правильно понимаю, новые VB/C(#?).NET + Windows Forms Application сильно облегчат создание красоты в части п.1.
Но при этом совсем без API все же думаю не обойтись. Ну т.е. все API, приемы и т.п. что я использую в VB хотелось бы иметь возможность также красиво использовать при необх.
Потом новые всякие прибамбасы. Какие-нибудь Ribbons (родные, от Win7) на VB6 небось при всем желании не вставишь -просто пример привел.

В пользу VB.NET думаю то, что язык хоть и отличается, но примерно такой же, т.е. если тупо пытаться переписывать имеющиеся чисто-VB6 проекты на VB.NET, то это сильно проще чем на C++#.

Но есть ряд подводных камней. Я много работаю с телефонией и использую в частности OpalVoip , при этом уж не знаю хвастаться или стыдиться, даже перечислен в списке разработчиков и имею доступ к репозиторию(сам правда править коды на сайте через SVN так и не научился - мож оно и к лучшему, а то еще понапорчу).
Стыдиться, это потому что C++ практически не знаю. Хотя умею тестировать и модифицировать имеющийся код библиотеки или консольного приложения.
Но стоит вопрос как пририсовать "морду" к приложению.
Если что-то запускаю из под VB6, генерирую из под VB6 "командный" файл и в зацикленном C++ консольном приложении использую конструкции типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
void TheProga::Main()
{
...
  for (;;) {
    PThread::Sleep(500);
    if( (_access( "the.file", 0 )) != -1 ){
      DeleteFile("the_file");
      //далее следует код куда звонить и чего делать...



Ну, аналогично, если C++ генерирует событие, то пуляет файл в сторону VB6, а VB6 ждет файл по таймеру и отображает что-нибудь на форме:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
void MySIPEndPoint::OnRegistrationStatus(const PString &aor, PBoolean wasRegistering, PBoolean reRegistering, SIP_PDU::StatusCodes reason)
{
  if (reason == SIP_PDU::Information_Trying)
    return;
  PString FNM;
  FNM = aor.Left(aor.Find(';'));
  ofstream outfile(FNM + ".rrg");
  if (reason == SIP_PDU::Successful_OK)
    outfile << "Registered OK\n";
  else
    outfile << "Not Registered (" << reason << ")\n";
  outfile.close();
}


Попытки установить прозрачное взаимодействие между VB6 и C++ давно закончились ничем, и до сих пор к этому не возвращался. Пока "пуляем файлы".
Жить конечно можно, живу, но все это сильно "тормозит развитие", и если нагрузка большая, то надежность приложения сильно снижается. Любой нормальный программист-профи обсмеет.
Если например, писать софтфон (идея как бы есть) с кучей кнопок и действий типа play/record/dial/hangup, то "форма-морда" и "интеллект-начинка" должны быть реализованы в рамках одного exe.
Т.е. по идее и в идеале хотелось бы (Я нарочно смешал C++ и VB6 код для иллюстрации желаемого решения типичной задачи):
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
void MySIPEndPoint::OnRegistrationStatus(const PString &aor, PBoolean wasRegistering, PBoolean reRegistering, SIP_PDU::StatusCodes reason)
{
  if (reason == SIP_PDU::Information_Trying)
    return;
  if (reason == SIP_PDU::Successful_OK)
    Form1.LabelStatus.Caption = "Registered OK"
  else
    Form1.LabelStatus.Caption = "Not Registered (" & reason & ")"
}


Начинка на C, значит наверно нужен C(#).NET для формы. Это в пользу C.

Хотя Windows Forms Application в VC2005 EE на дурака даже в примитиве с одной кнопкой типа Dial пока прикрутить не удалось.
В примерах есть OpenPhone но он использует WxWigest -так понял "левая морда", слышал еще про MFC, но сдается что это не то и для виндов (чтоб просто и по стандарту) нужен WinForms.
===
Еще проблемы, которые периодически всплывают - уж не знаю насколько относится к вопросу - многопользовательская среда, запуск приложения под обычным юзером (я злоупотребляю админом), при этом настройки приложение хранит в CURRENT_USER и в HKEY_USERS\.DEFAULT\Software (для WIN Service кот. скажем прямо не совсем настоящий), данные прога хранит в /Program Files/Proga/etc. что подозреваю неправильно. Пользователей у кот. возникают иногда проблемы (в основном на серверах, куда лазют разные юзеры под своими терминалами), кормлю советами-затычками, что в прочем обычно помогает.
===

Таковы в общих чертах "проблемы мировой революции".
Ну т.е. в каком направлении мне посоветуете двигаться. C ? VB ? NET?
Для C стоит VC2005EE. Я так понимаю это называется C#. Не?

Если VB.NET, то чего ставить? Рабочая система - XP и думаю надолго, от вистов глаза рябит. Но проги должны работать (ну это рынок) соотв. up to WIN7 x64 и выше со всеми Themes (что впрочем худо-бедно и с VB6 правдами и неправдами достигнуто).
Крайняя попытка более менее серьезно ставить VB.NET была этак году в 2005, восторгов VB.NET не вызвала, правда стоит чего-то на нотебуке.

Чего не хочу, так это глубоко закопаться в что-то новое а потом понять что это не то что надо.
...
Рейтинг: 0 / 0
На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
    #37911606
Ух0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дмитрий77,

Дим, отсыпь мне немного курева своего)
...
Рейтинг: 0 / 0
На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
    #37912252
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ух0отсыпь мне немного курева своего)
Да, кури пожалуйста .
Только я вообще-то жду не ответов в духе "дискриминация VB6", а рекомендаций от людей хорошо знающих VB6, но при этом знакомых с разными системами програмирования.
...
Рейтинг: 0 / 0
На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
    #37912260
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сложно что-то посоветовать. я так понимаю, что ты ищешь замену для своей конкретной программы. но беда в том, что программирование под .NET потребует от тебя полной переделки твоего текущего решения с отказом от уже существующего кода и прочих используемых библиотек. скорей всего, придётся писать с "0" с использованием существующих сборок из net framework. работа с неуправляемым кодом в том же NET (а у тебя это C dll) достаточно запутана и C# совсем не C/C++.
...
Рейтинг: 0 / 0
На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
    #37912265
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в любом случае, советую сразу переходить на C#. т.к. VB.NET , как это не прискорбно, совсем не VB6 по простоте, а лишь внешнее подобие простоты, хотя по сути это тот же C#, только со своеобразным синтаксисом.
...
Рейтинг: 0 / 0
На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
    #37912352
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneсложно что-то посоветовать. я так понимаю, что ты ищешь замену для своей конкретной программы....переделки твоего текущего решения ... VB.NET , как это не прискорбно, совсем не VB6 по простоте
Вот смотри. Что касается своих "чисто VB6 приложений", я как-то не сомневаюсь, что попотев и аккуратно переписав их заново, я смогу их переписать на VB.net (ну естественно наивно рассчитывать на "горе-мастеров"). Ну, допустим набью руку, научусь делать "красоту" меньшей ценой, заплатив б'ольшую цену за переделку/обучение но будет тоже самое. В принципе, мои VB6 проекты на достаточно хорошем уровне и можно пока об этом не думать.

Более интересна вторая часть, где я привожу пример как у меня "форма-морда" (на VB6) общается с "начинкой-консольным приложением C++" и чего бы мне хотелось.
Я хочу создать форму, нарисовать на ней кнопку и вызвать функцию из Opal.
На VB.NET я этого не сделаю. Так? API отдыхают - тупиковый вариант.

Konst_Oneработа с неуправляемым кодом в том же NET (а у тебя это C dll) достаточно запутана и C# совсем не C/C++.советую сразу переходить на C#.

Разжуй пожалуйста.
У меня есть ptlib.dll/opal.dll . Это C/C++. Так? Думаю ДА. Практически все имеющиеся примеры -консольные приложения.
Все это компилируется в Visual C++ 2005 Express Edition.
Там же можно создать
File -> Add new Project -> CLR -> Windows Form Application
Windows Form Application - это что C#.NET ???
Что мне надо сделать, чтоб начать чего-то понимать?
Я хочу создать форму, нарисовать на ней кнопку и вызвать функцию из Opal.
Это возможно?
И что это будет? Сборная солянка из C#.NET(для WinForm) и C/C++ для начинки? Или я чего-то не догоняю
в смысле
Konst_One C# совсем не C/C++.
Примеров с Windows Form Application в Opal нет, есть пример с mfc (на VC++ 2005 EE естественно не компилируется), причем структура файлов проекта очень похожа на структуру Windows Form.
М.б. попытаться по аналогии c mfc проектом пристыковать тестовый Windows Form к Opal?
Ну т.е. мне не от чего пока оттолкнуться.

Да еще.
У меня рабочий комп XP. VC++ 2005 EE Для моих тек. целей он работает "как надо".
Если я установлю VC++ 2010 EE параллельно (как выяснилось, для новых версий того же Opal 2005-й уже не поддерживается), то работа VC++ 2005 EE не нарушится? Типичные нарушения, это когда отлаженные проги при компиляции лезут не туда, а при переносе на другой комп почему-то перестают запускаться и т.п.
...
Рейтинг: 0 / 0
На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
    #37912369
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробую немного объяснить.

в VB6 для использования API ф-й используется Declare , в C# для этого используется DllImport

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
using System;
using System.Runtime.InteropServices;

class Example
{
    // Use DllImport to import the Win32 MessageBox function.
    [DllImport("user32.dll", CharSet = CharSet.Unicode)]
    public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);

    static void Main()
    {
        // Call the MessageBox function using platform invoke.
        MessageBox(new IntPtr(0), "Hello World!", "Hello Dialog", 0);
    }
}
...
Рейтинг: 0 / 0
На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
    #37912373
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
    #37912376
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Взаимодействие с неуправляемым кодом: http://msdn.microsoft.com/ru-ru/library/sd10k43k.aspx
...
Рейтинг: 0 / 0
На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
    #37912380
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://msdn.microsoft.com/ru-ru/library/0h9e9t7d.aspx

тут картинка , описывающая вызов ф-ии из DLL
...
Рейтинг: 0 / 0
На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
    #37912385
Фотография Qlewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77я вообще-то жду не ответов в духе "дискриминация VB6", а рекомендаций от людей хорошо знающих VB6 чё, блин, за камень в мой огород?)
...
Рейтинг: 0 / 0
На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
    #37912386
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на счёт "сборной солянки": С++ совместно c C#. основные вещи у тебя так и останутся в твоих c++ dll
...
Рейтинг: 0 / 0
На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
    #37912400
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneв VB6 для использования API ф-й используется Declare , в C# для этого используется DllImport
Это я все понимаю.
Но к теме отношения не имеет, я не хочу использовать API, я считаю что в Opal нормальных нет. Попытки 2-х летней давности использовать эти API с VB6 закончились ни чем.

Если есть консольное приложение, компилируемое в VC++ 2005, то оно не использует API .
Оно использует
1) Tools -> Options -> Project and Solutions -> VC++ Directories -> ccылки на include и Library Files (ведут в директории Opal и PtLib)
2) всякие там
#include <ptlib.h>
#include <opal/console_mgr.h>
в файлах самого exe.

Я хочу сделать приложение, но не консольное, а Windows Forms Application(с мордой). В этом собственно и вопрос.
...
Рейтинг: 0 / 0
На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
    #37912407
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
более-менее теперь ясно. но тут только пробовать надо. я с opal не работал, трудно сказать, что там не так и почему их api нельзя заюзать. в .NET можно в одном проекте делать винегрет из C++ и C#. надо пробовать.
...
Рейтинг: 0 / 0
На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
    #37912436
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneв .NET можно в одном проекте делать винегрет из C++ и C#. надо пробовать.
Вот это я наверно и хотел услышать.


Вот это попробовать? Разумно?
Konst_OneЯ хочу создать форму, нарисовать на ней кнопку и вызвать функцию из Opal.
VC++ 2005 EE
Там же можно создать
File -> Add new Project -> CLR -> Windows Form Application
Windows Form Application - это что C#.NET ???
...
попытаться по аналогии c mfc проектом пристыковать тестовый Windows Form к Opal?
Потому как если это получится, то уже есть что-то под ногами.
И тогда можно потихоньку изучать WinForms + C#. Видимо методом перегонки наработок на VB6 в новую среду.
...
Рейтинг: 0 / 0
На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
    #37912443
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
лучше VS 2010 , т.к. 3.5 FW
...
Рейтинг: 0 / 0
На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
    #37912448
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя , надо посмотреть что там на XP у тебя можно поставить из NET FW.
...
Рейтинг: 0 / 0
На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
    #37912467
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneлучше VS 2010 , т.к. 3.5 FW
3.5FW у меня и так стоит, хотя мало чего в этом понимаю.
Волнует вот это:
Дмитрий77Да еще.
У меня рабочий комп XP. VC++ 2005 EE Для моих тек. целей он работает "как надо".
Если я установлю VC++ 2010 EE параллельно (как выяснилось, для новых версий того же Opal 2005-й уже не поддерживается), то работа VC++ 2005 EE не нарушится? Типичные нарушения, это когда отлаженные проги при компиляции лезут не туда, а при переносе на другой комп почему-то перестают запускаться и т.п.
Думаю сначала надо смухлевать хоть что-то на рабочем VC++ 2005 EE, а потом уже думать об VC 2010
...
Рейтинг: 0 / 0
На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
    #37912476
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй, я бы сразу с VS2010 начал
...
Рейтинг: 0 / 0
На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
    #37912653
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Если я установлю VC++ 2010 EE параллельно (как выяснилось, для новых версий того же Opal 2005-й уже не поддерживается), то работа VC++ 2005 EE не нарушится?Нет. Вся линейка студий начиная с версии 6.0 прекрасно уживается на одном компе.
...
Рейтинг: 0 / 0
На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
    #37912655
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но лучше начинать их устанавливать по старшинству.
...
Рейтинг: 0 / 0
На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
    #37912686
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, смухлевать чего-нибудь на VC++2005 "самому" не получилось:
Все попытки кончаются так:
1>c:\ptlib\include\ptlib\msos/ptlib/contain.h(289) : error C2373: 'WinMain' : redefinition; different type modifiers

AntonariyНо лучше начинать их устанавливать по старшинству.
В смысле? Сейчас стоит VC++ 2005 EE, хочу установить 2010

В OPAL сейчас узрел вот это:
Added .NET sample,
Так понимаю есть только проект для VS2010
Из описания следует:
TO USE OpalDotNET:

Simply reference the OpalDotNet.dll or the project inside your .NET project. You must compile the opal and ptlib
dlls yourself, and put them in the executing directory of your application using OpalDotNet.dll.

Also, it is not necessary to use the Opal_API structures directly. The OpalContext.cs file contains the wrappers and context for your to use.
These classes will handle marshaling the data back and forth between managed and unmanaged types.

Happy Coding!


М.б. то что нужно, надо пробовать.
Гм, м.б. даже для VB.NET прокатит?

OK, хочу установить 2010.
Konst_Oneв .NET можно в одном проекте делать винегрет из C++ и C#. надо пробовать.
Пошел типа посмотреть чего качать, и теперь вообще в ступоре.
http://www.microsoft.com/visualstudio/ru-ru/products/2010-editions/visual-cpp-express (вкладка "загрузка")

CLIPs для Visual Studio поддерживает следующие продукты:
...
•Visual Basic 2010 Express
•Visual C# 2010 Express

•Visual C++ 2010 Express...

Я вообще-то думал что есть "Visual C++" компилятор и в нем можно делать вышеобозначенный винигрет из C, C++ и C#.
Теперь вообще ничего не понимаю, чего устанавливать, куда иттить.
Так понимаю для компиляции Opal мне нужен C++.
При этом VC++ net. win формы тоже поддерживает.
А коим боком тогда VC#?
...
Рейтинг: 0 / 0
На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
    #37912695
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Express вряд ли позволит делать винигреды. Найти пиратку.
...
Рейтинг: 0 / 0
На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
    #37912714
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
>Express вряд ли позволит делать винигреды
А что тогда есть винигред?
М.б. их тогда сразу делать из "VB.NET & C++" а не "C# & C++"?

Я так теперь понял, C++.NET тоже есть и именно он используется в VC++ для WinForms...? так зачем мне тогда C#?
...
Рейтинг: 0 / 0
На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
    #37912759
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77 М.б. их тогда сразу делать из "VB.NET & C++" а не "C# & C++"?Если в будущем ты собираешься заниматься только собственными проектами, старыми или новыми, то почему нет? Если же будешь наниматься, то увидишь, что vb.net практически никому не нужен.
Дмитрий77Я так теперь понял, C++.NET тоже есть и именно он используется в VC++ для WinForms...? так зачем мне тогда C#?Если выполняется первое условие, то писать на нем не обязательно, но понимать его надо, потому что на нем написано 90% открытого кода под .net.
Хотя я нашел одну нужную библиотечку на c#, которую проще допилить, чем перепилить на vb. Но там ад IE и бездна COM.
...
Рейтинг: 0 / 0
25 сообщений из 49, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / На какой другой язык переходить? Windows Forms Application? VB.NET? С (#.NET ???)?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]