С++ на VB, или нестыковка форматов...

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

С++ на VB, или нестыковка форматов...

Сообщение d3drm » 10.06.2005 (Пт) 16:13

может не совсем врено назван топик, так что чуть подробнее... есть ко на С++:

Код: Выделить всё
STDMETHODIMP Engine::SetInitConfig(InitConfig* Config)
{
   DefaultConfig = Config;
   MessageBox (NULL, (LPCSTR)&Config->hWnd ,NULL,NULL);
   return S_OK;
}


небольшой такой кодик для ATL проектика... по идее hWnd - это целое число, а MessageBox должна возратить его в боксе для показа... Но выводит оно какую-то хрень, вместо числа... Почему?
ХЎ

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 10.06.2005 (Пт) 16:23

Код: Выделить всё
STDMETHODIMP Engine::SetInitConfig(InitConfig* Config)
{
   char s[256];
   itoa(Config->hWnd, s, 10);
   DefaultConfig = Config;
   MessageBox (NULL, (LPCSTR)s,  ,NULL,NULL);
   return S_OK;
}


а у тебя адрес hWnd преобразовываеться к указателю на строку, которая закончиться там где встретьтся 0.
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 10.06.2005 (Пт) 16:41

работает, здорово. но эта задача была поставлена только для проверки правильности передачи параметра. убедился, правильно. А вот как int перевести в HWND?

я пробовал (HWND)i, где i - это переменная типа int, но видно что-то не так преобразовывает...
ХЎ

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 10.06.2005 (Пт) 16:44

А не надо переводить int в unsigned int :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 10.06.2005 (Пт) 16:47

думаешь HWND - это unsigned int?
ХЎ

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 10.06.2005 (Пт) 16:57

да
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 10.06.2005 (Пт) 17:00

что же делать, его нельзя экспортировать в VB! как поступить? :scratch:
ХЎ

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 10.06.2005 (Пт) 17:09

А Long?? чем не подходит?
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 10.06.2005 (Пт) 17:33

простите меня, идеота...

вы все были правы. а я просто забыл сделать вот так:

ZeroMemory( &D3DWindow, sizeof(D3DWindow) );

и из-за этого выходили ошибки... D3DWindow - это структура. Зачем для нее надо обнулять память?
ХЎ

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 10.06.2005 (Пт) 17:43

Потому что, не все поля инициализируються сразу и проверить это можно по нулю в значении, например
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 10.06.2005 (Пт) 17:57

Не потому, что не все, а потому что все.
Все переменные в C не инициализируются по умолчанию. Их все надо инициализировать самому.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 106

    TopList