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

Использование Attach(HWND) и Detach() - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Logot
1 / 1 / 0
Регистрация: 15.05.2010
Сообщений: 54
04.07.2011, 19:28     Использование Attach(HWND) и Detach() #1
Привет всем!
Что делают функции Attach(HWND) и Detach() объявленные в классе CWnd. В MSDN для Attach написано, что она присоединяет Windows окно к CWnd объекту, а в Detach, наоборот отоединяет дескриптор от CWnd объекта.
Пишу:
C++
1
2
    m_hWnd=m_static->Detach();
    m_static->Attach(m_hWnd);
Поидее, первая функция отсоединяет дискриптор, а потом обратно присоединяет этот дескриптор к объекту. Но при удалении объекта или через функцию DestroyWindow, или delete (m_static была создана динамически) я лезу в другую область памяти, короче ошибка возникает типа 'Интрукция по адресу ...'.
Как вообще эти функции используются, каково их предназначение?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2011, 19:28     Использование Attach(HWND) и Detach()
Посмотрите здесь:

C++ SendMessage(Hwnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
C++ Как получить hwnd элемента диалога с другого класса?
C++ HWND в ActiveX
C++ HWND
C++ Что такое Attach to process?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kovalsky2
0 / 0 / 0
Регистрация: 05.08.2009
Сообщений: 96
05.07.2011, 18:13     Использование Attach(HWND) и Detach() #2
Вообще-то Вы делаете всё правильно.
Возможно ошибка в том,что у Вас m_hWnd - скажем родительского окна.
А Вы ей присваиваете m_static->Detach()
Запишите следующим образом:
Код
HWND hWnd=m_static->Detach();
m_static->Attach(hWnd);
Logot
1 / 1 / 0
Регистрация: 15.05.2010
Сообщений: 54
05.07.2011, 20:21  [ТС]     Использование Attach(HWND) и Detach() #3
Точно! Это ж был дескриптор родителя.
По-идее должно и так работать:
Код
m_static->hWnd=m_static->Detach();
m_static->Attach(m_static->hWnd);
Сейчас проверю. Спасибо!
Logot
1 / 1 / 0
Регистрация: 15.05.2010
Сообщений: 54
05.07.2011, 20:25  [ТС]     Использование Attach(HWND) и Detach() #4
Вернее так:
Код
m_static->m_hWnd=m_static->Detach();
m_static->Attach(m_static->m_hWnd);
Logot
1 / 1 / 0
Регистрация: 15.05.2010
Сообщений: 54
05.07.2011, 20:35  [ТС]     Использование Attach(HWND) и Detach() #5
Вот и проверил! В итоге мой вышеописанный код не работает, а Ваш работает. Почему, интересно?
Yandex
Объявления
05.07.2011, 20:35     Использование Attach(HWND) и Detach()
Ответ Создать тему
Опции темы

Текущее время: 18:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru