Russian Qt Forum
Сентябрь 30, 2024, 14:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как создать QWidget потомком не QT окна?  (Прочитано 4349 раз)
Nox Metus
Гость
« : Август 20, 2008, 10:32 »

Я пытаюсь написать плагин для Total Commander с помощью QT. Плагин — это dll, которая обязана реализовать следующую простую функцию:
Код:
HWND __stdcall ListLoad(HWND parentWin, char* fileToLoad, int ShowFlags);
Т.е. мне нужно показать QWidget, который будет потомком (в смысле Windows) для parentWin. parentWin, естественнно, к QT отношения не имеет. Я безуспешно пробовал следующий подход:
Код:
class ListerWidget :
  public QWidget
{
public:
  ListerWidget(HWND listerWin) {
    // нужно сохранить и восстановить WindProc, т.к. QT ее затрет,
    // у окна листера она и так уже есть и QT WindProc ему не к чему
    LONG oldWinProc = GetWindowLong(listerWin, GWL_WNDPROC);
    create(listerWin, false, false);
    SetWindowLong(listerWin, GWL_WNDPROC, oldWinProc);
  }
};
Далее где-то внутри ListLoad:
Код:
      ListerWidget *lister = new ListerWidget(parentWin);
      MyWidget *w = new MyWidget(lister);
      w->show();

Все зашибись работает, кроме того, что MyWidget не показывается в листере. Что не так? Можно ли поступить как-нибудь по-другому?
Записан
Tonal
Гость
« Ответ #1 : Август 20, 2008, 10:52 »

Ответил в http://forum.academ.org/index.php?s=&showtopic=327100&view=findpost&p=5650669
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.294 секунд. Запросов: 20.