Форум программистов, компьютерный форум CyberForum.ru

Взаимодействие VB и VC++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как заставить не затирать окном полученную графику в GDI? http://www.cyberforum.ru/cpp-beginners/thread508809.html
Первый раз столкнулся с GDI и вот никак не могу допереть как заставить не затирать окном полученную графику... Графика выводиться потоком по указателю в диалоговое окно. Насколько я понял, тама надо что-то с OnDraw'ом делать, а вот что, да как не пойму...
C++ Как различить нажатие одноимённых курсорных клавиш (при выключенном NumLock)? 1. В правой части клавиатуры - 2 группы курсорных клавиш: одна - переключается NumLock (цифры/курсор), вторая - всегда курсор. Как различить нажатие одноимённых курсорных клавиш (при выключенном NumLock)? 2. Как узнать, включен ли NumLock? http://www.cyberforum.ru/cpp-beginners/thread508508.html
Как получить внешние параметры в ActiveX? C++
День добрый всем! Есть у меня Activex-компонент. Он должен связываться с сервером и открывать указанный ему файл. Имя файла задаётся через тэг <param> во время формирования страницы. Только вот не могу понять, как это сделать. Насколько я понял, через DLLEntryPoint() параметры не передаются, указатель void* всегда приходит пустой, а остальные параметры этой функции задействуются при вызове...
C++ Литература по OpenMP для C++
Доброе время суток! Посоветуйте, пожалуйста, хрошую литературу по OpenMP для C++, eng/rus. Спасибо.
C++ Timer в консольном приложении http://www.cyberforum.ru/cpp-beginners/thread508477.html
Доброе время суток! Подскажите пожалуйста, как в консольном приложении создать таймер, который бы срабатывал каждые n минут или в указанное время? (если можно, дайте, пожалуйста, пример под Windows и Linux)
C++ Двумерный строковый массив Доброе время суток! Подскажите, пожалуйста, как правильно создать и заполнить двумерный строковый массив! Пробовал делать так: #include <string> int main(){ using namespace std; string A; подробнее

Показать сообщение отдельно
Zerg1
0 / 0 / 0
Регистрация: 04.05.2010
Сообщений: 52

Взаимодействие VB и VC++ - C++

01.09.2007, 06:01. Просмотров 4296. Ответов 3
Метки (Все метки)

Взаимодействие VB и VCPP.

VB60 и VCPP50.

Помогите решить проблемку. Есть VB проект и dll на плюсах.
Всё бы хорошо и всё работало, пока не появилась проблемка. Очередная новая функа в dll виснет глушняком! Хэлп!
Повторяю, dll писать умею, уже много функций работает, а вот тут засада.

Итак. Вот код на VB.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Public Sub PaintMap()
Dim b As String: b = String(2000000, 0)
Dim C As Long, i As Long
Dim x As Long, y As Long
 
If OptionMapSize(0).Value = True Then
    C = 20
Else
    C = 45
End If
MsgBox "calling FM"
 
FillMap C, b, 1, Lang
MsgBox b ‘ сюда уже не попадаем, FillMap висит !!!!!!!!!!!!!
MsgBox "FM done"
i = 1
Gmap.ScaleMode = 3
Gmap.AutoRedraw = True
For y = 0 To 299
    For x = 0 To 299
        C = 1
        i = i + 1
        Gmap.PSet (x, y), C
        Next x
    Next y
Gmap.AutoRedraw = False
End Sub
В VB прототип описан как
Visual Basic
1
Public Declare Sub FillMap Lib "gsup.dll" (ByVal countries As Long, ByVal b As String, ByVal names As Long, ByVal language As Long)
А кот код функи в dll.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
EXPORT void __stdcall
FillMap(UINT32 C, UBYTE8 *buf, UINT32 names, UINT32 lang)
{
MAP map(20);
buf[0] = 'H'
buf[1] = 'B'
 
//return; если тут раскомментарить. то всё OK! Есть воздействие на бэйсик, но мне то надо, чтобы buf передался в Convert и был заполнен там!!!!!!!!!!!!!!!!
DP0("FM:0");// это функа отладочной печати
map.SetC(C);
DP0("FM:1");
map.UnpackMap(msg.map);
DP0("FM:2");
map.Convert(NULL, buf, names, lang); // вот тут зависон! Трёшка из следующей строчки никогда не печатается.
DP0("FM:3");
}
А вот что такое Convert. Вообще-то, функа – бетон, вне dll – работает на ура, а тут даже не хрюкает. Полная смерть. Смотрите сами. Вариант обрезанный, но и он виснет, на печать ничего не выходит. Что делать?
C++
1
2
3
4
5
6
7
void MAP::Convert(BYTE8 *fn, UBYTE8 *buf, UINT32 names, UINT32 l)
{
DP0("start Convert(...)");
buf[2] = 'L'
buf[3] = 'M'
return;
}
Даже непонятно, где вообще зависон происходит. Наверное, я чего-то не знаю про dll. Помогите.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru