Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Как получить указатель на родительское окно?


Автор: Lexus 22.9.2004, 20:26
Я хочу сделать свой toolbar.
THanks you.
Простите меня что я такой Lamer инаверно уже заколебал вас своими вопросами
но если вам не трудно напишите мне пожааааааааалуйыста.
qstn.gif

Автор: S.A.P. 22.9.2004, 21:42
Причем здесь ToolBar?
Ну ладно, на
Код

GetParent(hWnd); //получает в качестве параметра хэндл дочернего окна
// возвращает хэндл родительского окна



PS хэндл - это не указатель!

Автор: bel_nikita 22.9.2004, 21:50
Цитата
PS хэндл - это не указатель!

А что это?
Код
typedef void *HANDLE;

Автор: S.A.P. 22.9.2004, 22:04
Не знаю где ты этот код увидал, но это явно не тип идентификатора окна, тк его принято обозначать как HWND.

Автор: Mikel47 22.9.2004, 22:10
HWND - Это дескриптор окна
*CWND - указатель на окно
По-моему так smile.gif

Автор: S.A.P. 22.9.2004, 22:20
Цитата(Mikel47 @ 22.9.2004, 22:10)
*CWND - указатель на окно

Фактически в системе нет такого объекта как окно, поэтому указывать особо не на что smile.gif . Это в MFC сделали своеобразную объектную оболочку, которая оперирует теми же самыми API функциями.

Автор: Coocky 22.9.2004, 22:21
И понесло Остапов biggrin.gif biggrin.gif biggrin.gif

Автор: bel_nikita 22.9.2004, 22:47
Perchilla
Цитата

PS хэндл - это не указатель!
...
Не знаю где ты этот код увидал, но это явно не тип идентификатора окна, тк его принято обозначать как HWND.

М-да.

WINDEF.H
Код
#ifdef STRICT
typedef void *HANDLE;
#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name
#else
typedef PVOID HANDLE;
#define DECLARE_HANDLE(name) typedef HANDLE name
#endif
typedef HANDLE *PHANDLE;

WINNT.H
Код
DECLARE_HANDLE            (HWND);

В итоге получаем следующее:
Код
typedef struct HWND__ *HWND;

Как видим HWND - указатель.
Или я не прав?

Автор: Coocky 22.9.2004, 22:54
И надо же не поленился biggrin.gif biggrin.gif biggrin.gif Тщеславие.... biggrin.gif biggrin.gif biggrin.gif
Добавлено @ 22:57
HWND-дескриптор окна. CWnd* -указатель.Однозначно tounge.gif

Автор: Coocky 22.9.2004, 23:34
Цитата
Я хочу сделать свой toolbar.

Я понял в чем весь сыр-бор.Пaрень спрашивал про this в Create biggrin.gif biggrin.gif biggrin.gif biggrin.gif biggrin.gif Атут такая борьба.не на шутку разгорелась biggrin.gif adv/24.gif adv/24.gif adv/24.gif

Автор: bel_nikita 22.9.2004, 23:36
Coocky
Так, че HWND - не указатель?
Цитата
И надо же не поленился    Тщеславие.... 
просто надо уметь отстаивать свою точку зрения

А вообще, что-то от темы отвлеклись smile.gif

Автор: Coocky 22.9.2004, 23:37
Цитата
А вообще, что-то от темы отвлеклись

А ты выше глянь,я кажется понял smile.gif

Автор: bel_nikita 22.9.2004, 23:57
Так, как вопрос не совсем понятен, что именно требуется. То и ответ будет не совсем корректен smile.gif
Цитата
GetParentOwner CWnd* GetParentOwner() const;
Возвращаемое значение
Указатель на объект класса CWnd. Если объект класса CWnd не имеет дескриптора, создается временный объект класса CWnd и ему сопоставляется дескриптор. Возвращаемый данной функцией указатель может быть временным и его не следует сохранять для дальнейшего использования.
Описание
Данная функция позволяет получить указатель на родительское окно данного дочернего окна или на владельца окна. Функция GetParentOwner возвращает указатель на ближайшее в иерархии родительское окно или на владельца окна, который сам не является дочерним окном (не имеет стиля WS_CHILD). Текущий владелец окна может быть установлен при вызове функции SetOwner. По умолчанию родительское окно любого окна одновременно является и его владельцем. В отличие от данной функции функция GetParent возвращает указатель на непосредственного родителя независимо от того, является ли он дочерним окном или нет. В том случае, если родительским окном для данного окна является дочернее окно другого окна, то функции GetParent и GetParentOwner возвращают указатели на различные объекты класса CWnd.

http://www.mini-soft.net.ru/msdn/klass_8.html

Автор: S.A.P. 23.9.2004, 09:18
bel_nikita, сам проверил. HWND и впрямь указатель. Вот что называется век живи - век учись biggrin.gif . Плюс тебе за то, что не поленился разъяснить.

Автор: Атос 24.9.2004, 18:26
Ну правильно, HWND и есть указатель на элемент в таблице оконных данных

Другое дело что обычными путями инфу из таблицы напрямую не выдрать - типа майкрософт сурово блюдет комм.тайну и закрытость кодов...

Автор: mr.DUDA 24.9.2004, 21:12
Тааа-ак..... Хватит оффтоп разводить !

2 Lexus, впредь задавайте более конкретизированные вопросы ! Сделать свой тулбар - это может означать всё что угодно, от создания своего класса производного от CToolBarCtrl до заполнения стандартного тулбара созданного в какой-нить IDE, командами. А вообще-то, вам сюда:

http://www.firststeps.ru

Тема закрыта.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)