- •3 Базовые классы библиотеки mfc
- •Класс cObject
- •Методы и переменные класса cObject
- •Класс cWinApp
- •IpszResourceName - указатель на строку, содержащую имя ресурса пиктограммы. (Тип параметра также может быть cString.) nIdResource - id ресурса пиктограммы.
- •Методы - обработчики сообщений
- •Класс cWnd
- •Методы инициализации
- •Методы управления состоянием окна
- •Управление размером и положением окна
- •Методы управления доступом
- •Методы обновления и перерисовки окна
- •IpRectUpdate - структура rect, определяющая координаты обновляемой прямоугольной области. Данный параметр игнорируется, если prgnUpdate содержит ненулевой указатель области.
- •Методы преобразования координат
- •Методы работы с текстом окна
- •Методы управления линейкой прокрутки
- •Методы управления курсором ввода
- •Методы управления элементами диалогового окна
- •IpString - указатель на буфер, содержащий выбранную строку списка.
- •IpStr - указатель на буфер, в который заносится текст или заголовок элемента управления.
- •Методы работы с меню
- •Методы управления таймером
- •Предупреждающие методы
- •Методы управления сообщениями
- •Переопределяемые методы
- •Методы, вызываемые для обработки сообщений
- •IpCreateStruct - структура createstruct, содержащая информацию о создаваемом объекте cWnd.
- •Класс cFile
- •Члены класса
- •IpszFileName - строка, указывающая в кодировке Windows абсолютный или относительный путь к имени файла. Не может содержать сетевого имени.
Методы управления состоянием окна
В Visual C++ существуют различные типы состояния окна:
-
активное или неактивное (как правило, активное окно выделяется цветом строки заголовка);
-
в фокусе ввода (определяет окно, получающее ввод с клавиатуры);
-
с захваченной мышью - все сообщения от мыши вне зависимости от расположения курсора направляются данному окну;
-
доступное или недоступное.
BOOL IsWindowEnabled () const;
Метод возвращает ненулевое значение, если CWnd доступен для мыши или ввода с клавиатуры, и 0 - в противном случае. BOOL EnableWindow (BOOL bЕпаЫе = TRUE);
Метод переводит CWnd в доступное состояние (параметр равен TRUE) или недоступное состояние (FALSE). При этом метод возвращает ненулевое значение, если ранее CWnd был недоступен.
При выполнении данного метода окну посылается сообщение WM_ENABLE или WM_DISABLED. static CWnd* PASCAL GetActiveWmdow ();
Метод возвращает указатель (временный) на оконный объект, соответствующий текущему активному окну. Если активных окон нет, то метод возвращает значение NULL.
Окно может быть переведено в активное состояние или действиями пользователя, или вызовом метода SetActiveWindow. CWnd* SetActiveWindow ();
Метод делает активным оконный объект CWnd и возвращает указатель ранее активного окна. static CWnd* PASCAL GetCapture ();
Метод возвращает указатель (временный) оконного объекта, захватившего ввод от мыши, или NULL, если мышь не захвачена никаким окном.
CWnd* SetCapture ();
Метод устанавливает оконный объект CWnd, захватывающий ввод от мыши, и возвращает указатель окна, имевший ранее захват ввода от мыши.
Для освобождения мыши от захвата ввода можно использовать метод ReleaseCapture. static CWnd* PASCAL GetFocus ();
Метод возвращает указатель (временный) на оконный объект, имеющий фокус ввода, или NULL, если нет окна с фокусом ввода.
CWnd* SetFocus ();
Метод устанавливает фокус ввода на данный оконный объект и возвращает указатель (временный) на объект, с которого снимается фокус ввода.
При выполнении метода посылаются сообщения WM_KILLFOCUS и WM_SETFOCUS. (Одновременно при этом активизируется окно, получающее фокус, или его родительское окно - для элементов управления.)
Отметим, что если окно активно, но не имеет фокуса, то при нажатии, любой клавиши будут инициироваться сообщения WM_SYSCHAR, WM_SYSKEYDOWN или WM_SYSKEYUP. static CWnd* PASCAL GetDesktopWindow ();
Метод возвращает указатель desktop-окна, являющегося системно-определяемым окном и окном, используемым как основа для всех окон, показываемых приложением.
static CWnd* PASCAL GetForegroundWindow ();
Метод возвращает указатель (временный) foreground-окна, также называемого активным окном. В качестве foreground-окна может выступать только окно верхнего уровня: окно-рамка или диалоговое окно. BOOL SetForegroundWindow ();
Метод устанавливает foreground-окно (и активизирует его). При успешном завершении метод возвращает ненулевое значение. HICON Getlcon (BOOL bBiglcori) const;
Метод возвращает указатель на пиктограмму, в противном случае - NULL. Параметры:
bBiglcon - определяет размер пиктограммы: при значении TRUE используется пиктограмма размером 32x32 пикселя, а при значении FALSE - 16x16 пикселей.
HICON Setlcon (HICON hlcon, BOOL bBiglcori);
Метод устанавливает пиктограмму, используемую для данного оконного объекта.
DWORD GetWindowContextHelpId () const;
Метод возвращает ID контекста файла справки для .данного оконного объекта, а при его отсутствии - 0.
BOOL SetWuidowContextHelpId (DWORD dwContextHelpId);
Метод устанавливает ID контекста файла справки для данного оконного объекта. При успешном завершении метод возвращает ненулевое значение.
Параметры:
dwContextHelpId - ID контекста файла справки. Если дочернее окно не имеет своего ID контекста, то оно наследует его от своего родительского окна. Это позволяет определять в приложении только один ID контекста как для диалогового окна, так и для всех расположенных в нем элементов управления. BOOL ModifyStyle (DWORD dwRemove,DWOW) dwAdd, UINT nFlags =0);
Метод изменяет стиль данного окна. При успешном завершении метод возвращает ненулевое значение.
Параметры:
dwRemove - удаляемый набор элементов стиля. dwAdd - добавляемый набор элементов стиля.
nFlags - набор флажков, передаваемый методу SetWindowPos для перерисовки окна, или 0 - если этот метод не следует вызывать (по умолчанию).
Для задания набора стилей можно использовать оператор побитового сложения OR (|).
При ненулевом значении параметра nFlags метод ModifyStyle вызывает API-функцию ::SetWindowPos и выполняется перерисовка окна на основе комбинации nFlags со следующими четырьмя флажками:
SWP_NOSIZE Сохранение текущего размера;
SWP_NOMOVE Сохранение текущей позиции;
SWP_NOZORDER Сохранение текущего Z-упорядочения;
SWP_NOACTIVATE Без активизации окна.
Флажок стиля окна начинается с префикса WS_. Windows позволяет использовать следующие флажки стиля окна:
WS_BORDER Создание окна с рамкой;
WS_CAPTION Создание окна с заголовком (нельзя использовать одновременно со стилем WS_DLGFRAME);
WS_CHILD Создание дочернего окна (нельзя использовать
WS_CHILDWINDOW одновременно со стилем WS_POPUP);
WS_CLIPCHILDREN Исключает область, занятую дочерним окном,
при выводе в родительское окно;
WS_CLIPSIBLINGS Используется совместно со стилем WS_CHILD
для отрисовки в дочернем окне областей клипа,
перекрываемых другими окнами;
WS_DISABLED Создает окно, являющееся недоступным;
WS_DLGFRAME Создает окно с двойной рамкой, но без заголовка;
WS_GROUP Позволяет объединять элементы управления в
группы;
WS_HSCROLL Создает окно с горизонтальной полосой
прокрутки;
WS_MAXIMIZE Создает окно максимального размера;
WS_MAXIMIZEBOX Создает окно с кнопкой развертывания окна;
WS_MINIMIZE Создает первоначально свернутое окно
WSJCONIC (может использоваться только со стилем
WS_OVERLAPPED);
WS_MINIMIZEBOX Создает окно с кнопкой свертывания;
WS_OVERLAPPED Создает перекрывающееся окно (которое,
WS_TILED как правило, имеет заголовок и рамку);
WS_OVERLAPPEDWINDOW Создает перекрывающееся окно,
Имеющее стили WS_OVERLAPPED,
WS_CAPTION, WS_SYSMENU,
WS_THICKFRAME,
WS_MINIMIZEBOX,
WS_MAXIMIZEBOX;
WS_POPUP Создает popup-окно (нельзя использовать
совместно со стилем WS_CHILD);
WS_POPUPWINDOW Создает popup-окно, имеющее стили
WS_BORDER, WS_POPUP, WS_SYSMENU;
WS_SYSMENU Создает окно с кнопкой системного меню.
(можно использовать только для окон, имеющих
строку заголовка);
WS_TABSTOP Определяет элементы управления, переход к
которым может быть выполнен по клавише TAB;
WS_THICKFRAME Создает окно с рамкой, используемой
WS_SIZEBOX для изменения размера окна;
WS_VISIBLE Создает первоначально неотображаемое окно;
WS_VSCROLL Создает окно с вертикальной полосой прокрутки.
BOOL ModifyStyleEx (DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0) Метод изменяет расширенный стиль окна. При успешном завершении возвращается ненулевое значение.