Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
54
Добавлен:
16.02.2016
Размер:
544.77 Кб
Скачать

Методы управления доступом

CWnd* ChildWindowFromPoint (POINT point) const;

CWnd* ChildWindowFromPoint (POINT point, UINT nFlags) const;

Методы определяют, которое из дочерних окон содержит указанную точку. Если указанная точка содержится вне клиентской области, то методы возвращают значение NULL. Если указанная точка содержится внутри клиентской области, но не содержится внутри какого-либо дочернего окна, то возвращается CWnd.

Отметим, что данные методы позволяют также определить как скрытое, так и недоступное дочернее окно, содержащее указанную точку.

Если указанную точку содержат несколько дочерних окон, то будет возвращено значение CWnd*(BpeMeHHoe) только первого найденного дочернего окна.

Параметры:

point - координаты точки в клиентской области окна.

nflags - набор флажков, определяющих, какие окна следует пропускать. Это может быть комбинация следующих значений:

CWP_ALL - не пропускать никакие дочерние окна;

CWP_SKIPINVISIBLE - пропускать невидимые дочерние окна;

CWP_SKIPDISABLED - пропускать недоступные дочерние окна;

CWP_SKIPTRANSPARENT - пропускать "прозрачные" дочерние окна.

static CWnd* PASCAL FindWindow (LPCTSTR ipszClassName, LPCTSTR Ipsz WindowName);

Метод возвращает указатель окна верхнего уровня CWnd* (временный) по имени класса, и имени окна. Если окна с указанными параметрами не существуют, то метод возвращает значение NULL.

Параметры:

IpszClassName у имя класса (структура WNDCLASS) или NULL, если подходит любое имя класса.

ipszWindowName - имя окна (или заголовок окна) или NULL, если подходит любое имя окна.

CWnd* GetNextWindow (UINT nFlag = GW_HWNDNEXT) const;

Метод возвращает следующее (или предыдущее окно) из списка менеджера окон. Этот список содержит все окна верхнего уровня, их дочерние окна, а также дочерние окна любого дочернего окна. Если CWnd является окном верхнего уровня, то поиск производится среди окон верхнего уровня а если CWnd является дочерним окном, то выполняется поиск следующего или предыдущего дочернего окна.

Параметры:

nFlag - направление поиска: GWJHWNDNEXT или GW_HWNDPREV. CWnd* GetOwner () const;

Метод возвращает указатель на собственника окна, а если его нет, то на родительское окно.

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

void SetOwner (CWnd* pOwnerWnd);

Метод назначает окну нового собственника. По умолчанию родительское окно является также собственником своего дочернего окна.

Параметры:

pOwnerWnd - указатель нового собственника или NULL, если окно не будет иметь собственника.

Механизм управления окнами посредством собственников окна позволяет устанавливать связь между оконными объектами, никак не связанными в иерархии окон, и посылать сообщения этим окнам.

CWnd* GetTopWindow () const;

Метод возвращает указатель на первое дочернее окно, принадлежащее CWnd.

CWnd* GetWindow (UINT nCmd) const;

Метод возвращает указатель на окно, связанное с данным окном указанным отношением. Если таких окон нет, то метод возвращает значение NULL.

Параметры:

nCmd - указывает отношение между CWnd и возвращаемым окном. Параметр может принимать одно из следующих значений:

GW_CHILD

GW_HWNDFIRST

GW_HWNDLAST

GW_HWNDNEXT

GWJHWNDPREV

GW_OWNER.

CWnd* GetLastActivePopup () const;

Метод возвращает указатель popup-окна, которое было последним активным окном для данного собственника.

BOOL IsChild (const CWnd* pWnd) const;

Метод определяет, является ли указанное параметром окно дочерним окном данного окна CWnd.

CWnd* GetParent () const;

Метод возвращает указатель родительского окна, а если его нет, то NULL.

CWnd* SetParent (CWnd* pJVndNewParent);

Метод устанавливает новое родительское окно и в случае успешного завершения возвращает указатель на предыдущее родительское окно.

static CWrid* PASCAL WindowFromPoint (POINT point);

Метод возвращает указатель на окно, в котором расположена указаная параметром точка (скрытые и невидимые окна данным методом пропускаются).

CWnd* GetDIgltem (int nID) const;

void CWnd::GetDlgItem (int nID, HWND* phWnd) const;

Методы определяют указатель на заданный параметрами элемент управления или дочернее окно. Если элемента с таким ID не существует, то метод возвращает значение NULL.

int GetDlgCtrllD () const;

Если CWnd является дочерним окном, то данный метод возвращает его ID.

int SetDlgCtrllD (int nID);

Метод устанавливает новое значение ID элемента управления и при успешном завершении возвращает его предыдущее значение.

CFrameWnd* GetParentFrame () const;

Метод возвращает указатель на первый найденный родительский объект CFrameWnd (или производный от него) данного оконного объекта.

void SendMessageToDescendants (UINT message, WPARAM wParam = 0, LPARAM IParam = 0, BOOL bDeep = TRUE, BOOL bOnlyPerm = FALSE);

Метод посылает сообщение всем дочерним окнам данного окна.

Параметры:

message - посылаемое сообщение. wParam - дополнительные данные для сообщения. IParam - дополнительные данные для сообщения.

bDeep - уровень вложенности дочерних окон: TRUE - сообщение посылается всем дочерним окнам и всем их потомкам, FALSE - сообщение посылается только непосредственным потомкам.

CWnd* GetTopLevelParent () const;

Метод определяет родительское окно верхнего уровня. CWnd* GetParentOwner 0 const;

Метод возвращает указатель на первое в иерархии найденное родительское окно или собственника для данного дочернего окна, которые, в свою очередь, не являются сами дочерними окнами (не имеют атрибута стиля WS_CHILD).

CFrameWnd* GetTopLevelFrame () const;

Метод определяет окно-рамку верхнего уровня для данного окна.

void UpdateDialogControls (CCmdTarget* pTarget, BOOL bDisablelfNoHndler);

Метод вызывается для обновления состояния элементов управления Диалогового окна или окна, использующего механизм обратного вызова ON_UPDATE_COMMAND_UI.

BQOL UpdateData (BOOL bSaveAndValidate = TRUE);

Метод используется для обмена данными между переменными класса и элементами управления диалогового окна. При успешном завершении метод возвращает ненулевое значение.

Параметры:

bSaveAndValidate - флажок, указывающий направление обмена данными: FALSE - данные пересылаются от объекта и обновляют содержание элементов управления диалогового окна; TRUE - данные заносятся из элементов управления диалогового окна в переменные класса оконного объекта.

При создании модального диалогового окна метод CDialog::OnInitDialog автоматически вызывает метод UpdateData(FALSE), а реализация метода CDiaIog::OnOK по умолчанию включает вызов метода UpdateData(TRUE).

Для того чтобы избежать автоматического вызова данного метода при) инициализации диалогового окна, следует переопределить метод CDialog:: OnlnitDialog.

Для того чтобы запрограммировать собственный алгоритм обмена данными между переменными класса и элементами управления, необходимо выполнить следующие действия:

  1. создать для каждого элемента управления переменную класса;

  2. переопределить виртуальную функцию DoDataExchange, автоматически вызываемую при выполнении данного метода (это автоматически выполняет ClassWizard);

  3. в переопределяемом виртуальном методе ClassWizard вставить код для обмена данными (например: DDX_Text(pDX, ID_EDIT1, m_varforeditl)).

void CenterWindow (CWnd* pAlternateOwner = NULL);

Метод центрирует данное окно относительно его родительского окна или окна, указанного параметром.

Отметим, что для того, чтобы отцентрировать окно относительно экрана, можно в качестве параметра, указать значение, возвращаемое методом CWnd::GetDesktopWindow.

Соседние файлы в папке VC++Баженова