Создание произвольного окна CWnd
От: Hades  
Дата: 20.07.20 09:21
Оценка:
Добрый день!
делаю обертку для dll(ком объект, регистрируемая dll).
возникла проблема, что в dll передается CWnd*. Сначала не хотел включаться afxwin.h, сыпал ошибками, проблему решил.
Теперь нужно создать окно:
pInitialize my_func = (pInitialize)GetProcAddress(HANDLE_DLL, "Initialize");
if (my_func != NULL) {
    CWnd *hw = new CWnd;
    hw->Create(NULL, NULL, WS_VISIBLE,
        CRect(0,0,0,0), NULL, 0);
    my_func(hw, NULL);
}

hw->Create вызывает исключение.
на с# в pInitialize передается IntPtr. Вызываю так: Initialize(IntPtr.Zero, null). Все работает.
Нужно решить проблему на с++.
Помогите победить!

Спасибо откликнувшимся.
Re: Создание произвольного окна CWnd
От: kov_serg Россия  
Дата: 20.07.20 09:51
Оценка:
Здравствуйте, Hades, Вы писали:


hw->>Create вызывает исключение.

H>на с# в pInitialize передается IntPtr. Вызываю так: Initialize(IntPtr.Zero, null). Все работает.
H>Нужно решить проблему на с++.
Так и вызывайте Initialize(0,0);

H>Помогите победить!

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