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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Logot
1 / 1 / 0
Регистрация: 15.05.2010
Сообщений: 54
#1

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

04.07.2011, 19:28. Просмотров 1239. Ответов 4
Метки нет (Все метки)

Привет всем!
Что делают функции 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 была создана динамически) я лезу в другую область памяти, короче ошибка возникает типа 'Интрукция по адресу ...'.
Как вообще эти функции используются, каково их предназначение?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2011, 19:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Использование Attach(HWND) и Detach() (C++):

Std::thread::detach() - C++
Что произойдет, если main - поток завершится раньше чем child.detach()? Добавлено через 3 минуты У меня программа просто завершилась...

Потоки без join() или detach() - C++
Почему такой код выводит данные в консоль, не смотря на выбрасывание исключения? void proc1(const int num) { int max_i =...

Как отделить поток с помощью detach? - C++
Вообщем, не могу понять в чем проблема, хочу подвесить фоновый поток для отлавливания нажатий клавиш, я думаю я дико туплю, вот кусок кода,...

Как закрыть поток после вызова detach()? - C++
Всем здрасьте ! С join всё понятно, программа ждёт, когда завершится этот поток. Допустим я вызвал метод detach, как мне поток...

Что такое Attach to process? - C++
Всем привет! Решил попробовать освоить немного C++ по чужим исходникам. Скачал архив. Там нет солюшен-файла. Только эти: main.cpp ...

HWND - C++
Как взять дескриптор окна через его имя?

4
Kovalsky2
0 / 0 / 0
Регистрация: 05.08.2009
Сообщений: 96
05.07.2011, 18:13 #2
Вообще-то Вы делаете всё правильно.
Возможно ошибка в том,что у Вас m_hWnd - скажем родительского окна.
А Вы ей присваиваете m_static->Detach()
Запишите следующим образом:
Код
HWND hWnd=m_static->Detach();
m_static->Attach(hWnd);
0
Logot
1 / 1 / 0
Регистрация: 15.05.2010
Сообщений: 54
05.07.2011, 20:21  [ТС] #3
Точно! Это ж был дескриптор родителя.
По-идее должно и так работать:
Код
m_static->hWnd=m_static->Detach();
m_static->Attach(m_static->hWnd);
Сейчас проверю. Спасибо!
0
Logot
1 / 1 / 0
Регистрация: 15.05.2010
Сообщений: 54
05.07.2011, 20:25  [ТС] #4
Вернее так:
Код
m_static->m_hWnd=m_static->Detach();
m_static->Attach(m_static->m_hWnd);
0
Logot
1 / 1 / 0
Регистрация: 15.05.2010
Сообщений: 54
05.07.2011, 20:35  [ТС] #5
Вот и проверил! В итоге мой вышеописанный код не работает, а Ваш работает. Почему, интересно?
0
05.07.2011, 20:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.07.2011, 20:35
Привет! Вот еще темы с ответами:

HWND в ActiveX - C++
Помогите! Кто знает, как получить HWND ActiveX контроля? Спасибо.

Преобразование hwnd в int - C++
Знаю что тема уже заезжена и полно подобных обсуждений, но не смог применить к своему либо не подошло. Требуется получить из edit и...

SendMessage(Hwnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0); - C++
Добрый день) вот прочитал в инете что функция SendMessage разворачивает окно... решил попробовать.... а программа не компилируется...

Win32 идентификатор HWND не определен - C++
Очередной глупый вопрос. Я так понял, не хватает include вот список моих: #include "stdafx.h" #include "Win32Project5.h" пишу ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru