Поиск по сайту:


Смотри также:

Самая... Самый... Самое... - Статья.

AutoCAD 2000 - Краткий справочник команд - Статья.

Assembler IBM PC Приложения к лабораторной работе № 2 - Статья.

Субтрактивные цветовые модели - Статья.

Все новинки...

Статья «MSDN по русски. Описание классов .NET»

Поделиться:

1    2    3    4    5    6    7    8    9    10   

CFrameWnd
Класс CFrameWnd обеспечивает основные функциональные возможности перекрывающихся и всплывающих окон однооконного приложения Windows (SDI), а также функции для работы с элементами управления окна. Чтобы создать рабочее окно приложения, необходимо создать класс окна, производный от класса из CFrameWnd, и добавить в него переменные для хранения данных, специфичных для создаваемого приложения. Создать карту сообщений и функции для обработки сообщений, поступающих в данное окно. Имеются три способа создать окно:

непосредственно создать его функцией Create;
непосредственно создать его функцией LoadFrame;
создать его с использованием шаблона документа.

Прежде, чем использовать функции Create или LoadFrame для непосредственного создания окна, необходимо создать в стеке объект класса CFrameWnd с использованием стандартного оператора C++ new. Перед вызовом функции Create данный класс можно зарегистрировать глобальной функцией AfxRegisterWndClass, сопоставляющей данному окну значок и устанавливающей стили окна. Функция Create позволяет непосредственно задавать параметры создания окна, а функция LoadFrameпозволяет упростить этот процесс за счет использования меньшего числа аргументов и установки большинства параметров окна по умолчанию, используя информацию, содержащуюся в соответствующих ресурсах, включая заголовок окна, значок, таблицу акселераторов и меню. Для того чтобы содержащаяся в них информация могла быть использована в функции LoadFrame, все эти ресурсы должны иметь один и тот же идентификатор ресурса (например, IDR_MAINFRAME). Связанные с объектом класса CFrameWnd объекты класса представления и класса документа создаются самим приложением, а не программистом. Объект класса CDocTemplate обеспечивает одновременное создание связанных объектов классов окна, просмотра и документа. Параметры конструктора класса CDocTemplate определяют характеристики объектов класса CRuntimeClass создаваемых для обращения к трем связанным классам (документа, окна и представления). Классы, производные от CRuntimeClass позволяют приложению создавать свои объекты в процессе выполнения приложения (например, при обработке команды меню File|New (Файл|Создать) или команды меню многооконного приложения Window|New Window (Окно|Создать окно)). При создании класса окна, производного от класса CFrameWnd, должен использоваться макрос DECLARE_DYNCREATE, обеспечивающий правильную работу описанного выше механизма RUNTIME_CLASS. Объект класса CFrameWnd содержит заданные по умолчанию реализации следующих функций основного окна типичного приложения Windows:

он следит за объектом класса просмотра, соответствующего неактивному окну Windows или не имеющего на данный момент фокуса ввода. При активизации данного окна объект класса CFrameWnd вызывает функцию CView::OnActivateView;.
он транслирует в активный объект класса представления основные сообщения, включая сообщения, обрабатываемые функциями OnSetFocusOnHScroll и OnVScroll класса CWnd;
активный объект класса представления (или активное окно многооконного приложения) может установить текущий заголовок окна. Эта возможность может быть заблокирована, сбросом бита FWS_ADDTOTITLE в стиле окна;
объект класса CFrameWnd управляет позиционированием элементов управления, областей просмотра и других дочерних окон внутри рабочей области окна. Объект данного класса осуществляет, также, обновление состояния кнопок панели инструментов и других элементов управления в окне при отсутствии других исполняемых задач. Кроме того, объект класса Объект класса CFrameWnd содержит стандартные процедуры отображения и исключения с экрана панелей инструментов и строки состояния;
объект данного класса управляет отображением главного меню приложения. При раскрытии подменю объект класса окна использует макрос UPDATE_COMMAND_UI, чтобы определить, использование каких пунктов меню следует разрешить, какие пункты меню следует заблокировать, а какие из них нужно отметить. Когда пользователь выбирает команду меню, окно изменяет состояние элементов управления в соответствии с выбранной командой;
объект класса CFrameWnd использует таблицу акселераторов для преобразования нажатий пользователем определенных комбинаций клавиш в конкретные действия;
объект класса CFrameWnd может содержать набор идентификаторов, используемых функцией LoadFrame для создания контекстно-зависимой справки. Объект данного класса, также, организует работу с полумодальными окнами, используемыми для отображения контекстно-зависимой справки (+) и в режиме предварительного просмотра печати;
объект данного класса позволяет открыть файл, перемещенный из Диспетчера файлов в данное окно. Если расширение файла зарегистрировано и связано с приложением, данный объект может ответить на запрос о динамическом обмене данными (DDE), пришедший из Диспетчера файлов при открытии пользователем соответствующего файла или при вызове функции Windows ShellExecute;
если объект данного класса соответствует главному окну приложения, то при закрытии пользователем данного окна ему выдается запрос о необходимости сохранить все изменения, внесенные им в документы в данном сеансе работы с приложением. Для этого вызываются функции OnClose и OnQueryEndSession;
если объект данного класса соответствует главному окну приложения, то данное окно предоставляет контекст устройства при вызове справочной системы. Закрытие этого окна вызовет прекращение исполнения файла Winhelp.exe, если в данном приложении была вызвана справка.

Для уничтожения объекта класса CFrameWnd нельзя использовать оператор C++ delete. Вместо этого следует использовать функцию CWnd::DestroyWindow. Объект данного класса уничтожается при вызове функции CFrameWnd::PostNcDestroy. При закрытии окна пользователем функция OnClose вызывает функцию DestroyWindow.
Описание данного класса содержится в файле заголовка afxwin.h.
Create

BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle = WS_OVERLAPPEDWINDOW, const RECT& rect = rectDefault, CWnd* pParentWnd = NULL, LPCTSTR lpszMenuName = NULL, DWORD dwExStyle = 0, CCreateContext* pContext = NULL);

Возвращаемое значение
Ненулевое, если инициализация прошла успешно, и нулевое в противном случае.
Аргументы

lpszClassName - указатель на завершающуюся нулем символьную строку, содержащую имя класса Windows. Имя класса может представлять собой любое имя, зарегистрированное в глобальной функции AfxRegisterWndClass или в функции WindowsRegisterClass. Если этот параметр равен нулю, то используются атрибуты, установленные по умолчанию для класса CFrameWnd.
lpszWindowName - указатель на кончающуюся нулем символьную строку, содержащую имя окна. Используется для вывода заголовка окна.
dwStyle - определяет атрибуты стиля окна. Чтобы иметь возможность автоматически выводить в заголовок окна имя отображаемого в нем документа, установите стиль FWS_ADDTOTITLE.
rect - определяет размер и положение окна на экране. Использование переменной rectDefault позволяет Windows определить размер и положение нового окна.
pParentWnd - определяет родительское окно. Для главного окна программы этот аргумент равен нулю.
lpszMenuName - определяет имя ресурса меню, используемого совместно с данным окном. Чтобы использовать целочисленный идентификатор ресурса вместо строки текста, используйте макрос MAKEINTRESOURCE. Данный аргумент может принимать нулевое значение.
dwExStyle - определяет атрибуты дополнительного стиля окна.
pContext - указатель на объект структуры CCreateContext. Данный аргумент может принимать нулевое значение.

Описание
Создание объекта класса, производного от CFrameWnd осуществляется в два этапа. Сначала вызывается конструктор, создающий объект класса CFrameWnd, а затем вызывается функция Create, загружающая главное окно приложения и связанные с ним ресурсы и ассоциирует загруженное окно объекту, производному от класса CMainFrame. Данная функция позволяет определить имя класса окна, заголовок окна, определить параметры стиля окна, его родительское окно и связанный с ним ресурс меню. Использование функции LoadFrame вместо Create позволяет загрузить окно, используя файл ресурсов вместо непосредственного задания соответствующих аргументов.
DockControlBar

void DockControlBar(CControlBar * pBar, UINT nDockBarID = 0, LPCRECT lpRect = NULL);

Аргументы

pBar - указатель на объект класса CControlBar, панель которого необходимо фиксировать.
nDockBarID - определяет сторону рабочей области окна, на которой будет произведена фиксация. Данный аргумент может принимать одно из перечисленных ниже значений:
AFX_IDW_DOCKBAR_TOP - фиксирует панель управления на верхней стороне главного окна приложения;
AFX_IDW_DOCKBAR_BOTTOM - фиксирует панель управления на нижней стороне главного окна приложения;
AFX_IDW_DOCKBAR_LEFT - фиксирует панель управления на левой стороне главного окна приложения;
AFX_IDW_DOCKBAR_RIGHT - фиксирует панель управления на правой стороне главного окна приложения;
0 - панель управления может быть зафиксирована на любой стороне, разрешенной для фиксации в данном окне.
lpRect - определяет в экранных координатах положение, в котором панель управления будет зафиксирована в служебной области данного окна.

Описание
Фиксирует указанную панель управления в главном окне приложения. Панель управления может быть зафиксирована на любой стороне главного окна приложения, определенной для этой цели как в соответствующей функцииCControlBar::EnableDocking, так и в соответствующей функции CFrameWnd::EnableDocking. Сторона, на которой производится фиксация, определяется аргументом nDockBarID.
EnableDocking

void EnableDocking(DWORD dwDockStyle);

Аргументы

dwDockStyle - определяет, какая из сторон окна может служить для фиксации панели управления. Может быть комбинацией следующих флагов:
CBRS_ALIGN_TOP - разрешает фиксацию на верхней стороне рабочей области окна;
CBRS_ALIGN_BOTTOM - разрешает фиксацию на нижней стороне рабочей области окна;
CBRS_ALIGN_LEFT - разрешает фиксацию на левой стороне рабочей области окна;
CBRS_ALIGN_RIGHT - разрешает фиксацию на правой стороне рабочей области окна;
CBRS_ALIGN_ANY - разрешает фиксацию на любой стороне рабочей области окна.

Описание
Использование данной функции разрешает фиксацию панелей управления в окне. По умолчанию панели управления фиксируются в окне в следующем порядке: сверху, снизу, слева, справа.
LoadBarState

void LoadBarState(LPCTSTR lpszProfileName);

Аргументы

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

Описание
Данная функция позволяет восстановить установки для каждой панели управления, принадлежащей главному окну приложения. Эта информация сохраняется функцией SaveBarState. Получаемая информация касается видимости, горизонтальной или вертикальной ориентации, фиксации и расположения панели управления.
LoadFrame

virtual BOOL LoadFrame(UINT nIDResource, DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, CWnd* pParentWnd = NULL, CCreateContext* pContext = NULL);

Аргументы

nIDResource - идентификатор разделяемого ресурса, связанного с данным окном.
dwDefaultStyle - стиль окна. Чтобы иметь возможность автоматически выводить в заголовок окна имя отображаемого в нем документа, установите стиль FWS_ADDTOTITLE.
pParentWnd - указатель на класс родительского окна.
pContext - указатель на объект структуры CCreateContext. Этот аргумент может равняться нулю.

Описание
Создание объекта класса, производного от класса CFrameWnd производится в два этапа. Сначала вызывается конструктор, создающий объект класса CFrameWnd, а затем вызывается функция LoadFrame, загружающая главное окно приложения и связанные с ним ресурсы и ассоциирует загруженное окно объекту, производному от класса CMainFrame. В переменной nIDResource передаваемой функции в качестве параметра, определены меню, таблица назначения клавиш, значки и строковый ресурс заголовка окна. Для задания всех параметров создания окна вместо функции LoadFrame следует использовать функцию Create. Приложение вызывает функцию LoadFrame при создании главного окна программы с использованием объекта класса шаблона документа. Аргумент pContext используется в данной функции для задания объектов классов, связанных с данным классом окна, включая все объекты класса представления.
SaveBarState

void SaveBarState(LPCTSTR lpszProfileName) const;

Аргументы

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

Описание
Данная функция вызывается для сохранения информации об установках каждой панели управления, принадлежащей данному окну. Эта информация может быть считана из системного реестра функцией LoadBarState. Записываемая информация касается видимости, горизонтальной или вертикальной ориентации, фиксации и расположения панели управления.
ShowControlBar

void ShowControlBar(CControlBar* pBar, BOOL bShow, BOOL bDelay);

Аргументы

pBar - указатель на панель управления, которую необходимо вывести на экран или убрать с экрана.
bShow - если данный аргумент имеет значение TRUE, то панель управления необходимо вывести на экран. В противном случае ее необходимо убрать с экрана.
bDelay - если данный аргумент имеет значение TRUE, то панель управления необходимо вывести на экран с некоторой задержкой. В противном случае ее необходимо вывести немедленно.

Описание
Данная функция позволяет выводить панель управления на экран и убирать ее с экрана.
CGdiObject
Класс CGdiObject является базовым классом для классов объектов интерфейса графических устройств Windows таких, как битовые образы, области окон, кисти, перья, палитры и шрифты. Объекты данного класса никогда не используются непосредственно. Вместо них создаются объекты производного класса, например класса CPen или CBrush. Описание данного класса содержится в файле заголовка afxwin.h.
DeleteObject

BOOL DeleteObject();

Возвращаемое значение
Ненулевое при успешном удалении объекта класса GDI, в противном случае - ноль.
Описание
Удаляет связанный с объектом данного класса объект Windows GDI из памяти, освобождая при этом все связанные с ним буфера. Данная функция не затрагивает память, занимаемую самим объектом класса CGdiObject. Приложение не должно вызывать функцию DeleteObject для объекта класса CGdiObject, выбранного в настоящее время в контекст устройства. При уничтожении кисти, использующей образец, связанный с ней объект битового образа не удаляется. Его необходимо удалить после удаления связанной с ним кисти.
CInternetFile
Класс CInternetFile является базовым для классов CHttpFile и CGopherFile. Этот класс используется для доступа к удаленным файлам с использованием протоколов Internet. Пользователю никогда не приходится самому создавать объект классаCInternetFile: он создает объекты производных от него классов, используя функции CGopherConnection::OpenFile и CHttpConnection::OpenRequest. Для создания объекта класса CInternetFile используется функция CFtpConnection::OpenFile. Класс CInternetFile является абстрактным, поскольку в нем не реализованы виртуальные функции Open, LockRange, UnlockRange и Duplicate. При их вызове для объекта данного класса будет вызвано исключение CNotSupportException. Описание данного класса содержится в файле заголовка afxinet.h.
Close

virtual void Close();
throw(
CInternetException*
);

Описание
Функция Close закрывает объект класса CInternetFile и освобождает связанные с ним ресурсы. Если файл был открыт для записи, данная функция неявным образом вызывает функцию Flush для обеспечения того, что вся информация из буфера будет сохранена в файле. Функция Close вызывается после завершения работы с файлом.
ReadString

virtual BOOL ReadString(CString& rString);
throw(
   CInternetException*
);
virtual LPTSTR ReadString(LPTSTR pstr, UINT nMax);
throw(
   CInternetException*
);

Возвращаемое значение

Возвращает ненулевое значение, если считана очередная строка текста. В первой версии данной функции это логическое значение TRUE, а во второй версии - указатель на текстовый буфер, содержащий считанную строку. Если достигнут конец файла и из файла не считана информация, возвращает нулевое значение.

Аргументы

rString - ссылка на объект класса CString, в который будет помещена считанная строка.
pstr - указатель на текстовый буфер, в который будет помещена считанная строка.
nMax - максимальный размер считываемой строки.

Описание
Функция ReadString используется для потокового чтения символов до тех пор, пока не будет встречен символ перевода строки. Результирующая строка помещается в текстовый буфер, на который указывает аргумент pstr. Размер этого буфера задается аргументом nMax. Этот буфер обязательно должен содержать завершающий строку нулевой символ.
Если до вызова функции ReadString не будет вызвана функция SetReadBufferSize, то автоматически будет создан буфер размером 4096 байт.
SetReadBufferSize

BOOL SetReadBufferSize(UINT nReadSize);

Возвращаемое значение
В случае успешного завершения работы возвращает ненулевое значение, и нулевое значение в противном случае. Для получения более подробной информации о причине возникновения ошибки вызовите функцию GetLastError.
Аргументы

nReadSize - требуемый размер буфера в байтах.

Описание
Функция SetReadBufferSize устанавливает размер временного буфера чтения, используемого объектами классов, производных от класса CInternetFile. Поскольку используемые данным классом WinInet API не поддерживают буферизации передаваемых данных, размер буфера выбирается таким образом, чтобы обеспечить эффективную работу с любыми объемами информации. Если объем однократно передаваемой информации превышает 4 килобайта, потребность в буферизации отпадает. Использование буферов рекомендуется при использовании функции Read для чтения небольших фрагментов данных или при использовании функции ReadString, производящей построчное чтение данных. По умолчанию объект классаCInternetFile не использует буферизации при чтении информации. Функцию SetReadBufferSize можно вызывать только для файлов, открытых для чтения. Если размер буфера был уже установлен, то последующий вызов данной функции может только увеличить его размер. При указании меньшего размера буфера функция не производит никаких действий. Если до вызова функции ReadString не будет вызвана функция SetReadBufferSize, то автоматически будет создан буфер размером 4096 байт.
CInternetSession
Класс CInternetSession используется для создания и инициализации одного или нескольких одновременных сеансов Internet. При необходимости, он может содержать описание соединения для прокси-сервера. Если соединение с Internet должно поддерживаться в течение всего времени работы приложения, объект класса CInternetSession может быть членом класса, производного от класса CWinApp. Для создания конкретного соединения в пределах одного сеанса используется функцияOpenURL, в качестве аргумента которой передается текстовая строка, содержащая адрес URL. Для разбиения этой строки на компоненты может быть использована функция AfxParseURL. В качестве URL может использоваться не только адрес Web-страницы, но и путь к файлу соответствующего формата. В последнем случае функция возвращает указатель на объект класса CStdioFile. Если указанный адрес принадлежит серверу Internet, вызов функции OpenURL позволяет получить доступ к информации, расположенной на сайте. Для создания соединения с определенной службой могут использоваться следующие функции:

GetGopherConnection - создает соединение со службами gopher.
GetHttpConnection- создает соединение со службами HTTP.
GetFtpConnection- создает соединение со службами FTP.

Для получения информации о параметрах связи таких, как время ожидания, число попыток соединения и других, и установки этих параметров используются функции QueryOption и SetOption. Описание данного класса содержится в файле заголовка afxinet.h.
Close

virtual void Close();

Описание
Функция Close вызывается приложением после завершения использования в нем объекта класса CInternetSession.
OpenURL

CStdioFile* OpenURL(LPCTSTR pstrURL, DWORD dwContext = 1, DWORD dwFlags = INTERNET_FLAG_TRANSFER_ASCII, LPCTSTR pstrHeaders = NULL, DWORD dwHeadersLength = 0);
throw(
CInternetException*
);

Возвращаемое значение
Возвращает дескриптор файла, представляющий собой указатель на объект класса, производного от класса CStdioFile. Тип возвращаемого значения зависит от типа передаваемого URL. Соответствие типа URL типу возвращаемого значения приведено в таблице П2.5.

Таблица П2.5. Соответствие типа URL типу возвращаемого значения

Тип URL Тип возвращаемого значения
file:// CStdioFile*
http:// CHttpFile*
gopher:// CGopherFile*
ftp:// CInternetFile*

 

Если файл по указанному адресу не может быть открыт, возвращается нулевое значение.
Аргументы

pstrURL - указатель на текстовую строку, содержащую URL. Данный аргумент не может принимать нулевого значения.
dwContext - определенное в приложении значение, возвращаемое одновременно с дескриптором при обратном вызове функции.
dwFlags - набор флагов, определяющих режим работы соединения. Представляет собой комбинацию следующих флагов, объединяемых операцией логического ИЛИ:
INTERNET_FLAG_TRANSFER_ASCII - файл передается как текст в формате ASCII. Этот флаг устанавливается по умолчанию и несовместим с флагом INTERNET_FLAG_TRANSFER_BINARY;
INTERNET_FLAG_TRANSFER_BINARY - файл передается в двоичном формате. Этот флаг несовместим с флагом INTERNET_FLAG_TRANSFER_ASCII;
INTERNET_FLAG_RELOAD - данные берутся с линии даже в том случае, если они имеются в локальном кэше;
INTERNET_FLAG_DONT_CACHE - отказ от локального кэширования данных и от кэширования на всех шлюзах;
INTERNET_FLAG_SECURE - требует защищенной передачи данных с использованием Secure Sockets Layer или PCT. Этот флаг может использоваться только при запросах HTTP;
INTERNET_OPEN_FLAG_USE_EXISTING_CONNECT - при новых вызовах функции OpenUrl старается использовать для новых соединений существующий сеанс связи с сервером, а не создавать отдельный сеанс для каждого соединения;
INTERNET_FLAG_PASSIVE - использует пассивную семантику FTP. Используется только при запросах FTP.
pstrHeaders - указатель на текстовую строку, содержащий заголовки, посылаемые серверу HTTP.
dwHeadersLength - число символов в дополнительных заголовках. Если в данном аргументе передается значение -1L, а аргумент pstrHeaders имеет ненулевое значение, предполагается, что содержащаяся в нем строка заканчивается нулем.

Описание
Функция OpenURL вызывается для посылки указанного запроса серверу HTTP и позволяет приемнику определить в процессе запроса дополнительные заголовки RFC822, MIME или HTTP. В процессе своей работы данная функция вызывает функцию Win32 InternetOpenURL. Функция OpenURL не позволяет работать с удаленными файлами, поэтому для доступа к ним необходимо создать объект класса CInternetConnection и воспользоваться его функциями.
CList

template< class TYPE, class ARG_TYPE > class CList : public CObject

Аргументы

TYPE - тип объектов, хранящихся в списке. ARG_TYPE - тип, используемый для ссылки на объекты, хранящиеся в списке.

Описание
Класс CList служит для работы с упорядоченными списками объектов, доступных последовательно или по значению. Для этого используются двойные связные списки. Для доступа к элементу списка используется переменная типа POSITION. Эта переменная может использоваться для последовательного поиска в списке или для формирования в нем закладок. Однако позицию нельзя рассматривать как индекс. Наиболее быстро осуществляется вставка элемента в голову или в хвост списка, а также по известному значению переменной типа POSITION. Для нахождения элемента по содержимому или по индексу необходимо проведение последовательного поиска, что занимает довольно много времени. При необходимости вывести диагностическую информацию об отдельном элементе списка, необходимо указать глубину объекта CDumpContext равной 1 или большей величине. Описание данного класса содержится в файле заголовка afxtempl.h.
AddHead

POSITION AddHead(ARG_TYPE newElement);
void AddHead(CList* pNewList);

Возвращаемое значение
Первая версия данной функции возвращает значение переменной типа POSITION для вставленного элемента.
Аргументы

ARG_TYPE - тип, используемый для ссылки на объекты, хранящиеся в списке.
newElement - новый элемент, вставляемый в начало данного списка.
pNewList - указатель на другой объект класса CList, который будет вставлен в начало данного списка.

Описание
Добавляет в начало списка новый элемент или новый список элементов. Список может быть пуст до начала этой операции.
AddTail

POSITION AddTail(ARG_TYPE newElement); void AddTail(CList* pNewList);

Возвращаемое значение
Первая версия данной функции возвращает значение переменной типа POSITION для вставленного элемента.
Аргументы

ARG_TYPE - тип, используемый для ссылки на объекты, хранящиеся в списке.
newElement - новый элемент, вставляемый в конец данного списка.
pNewList - указатель на другой объект класса CList, который будет вставлен в конец данного списка.

Описание
Добавляет в конец списка новый элемент или новый список элементов. Список может быть пуст до начала этой операции.
GetAt

TYPE& GetAt(POSITION position);
TYPE GetAt(POSITION position) const;

Возвращаемое значение
Если элементы списка являются константами, то функция GetAt возвращает копию элемента, расположенного в данной позиции. Это позволяет использовать данную функцию только в правой части оператора присваивания и не позволяет вносить изменения в содержимое списка. Если элементы списка не являются константами, то функция GetAt возвращает ссылку на элемент списка, расположенный в данной позиции. Это позволяет использовать данную функцию как в левой, так и в правой частях оператора присваивания и позволяет вносить изменения в содержимое списка.
Аргументы

TYPE - параметр шаблона, определяющий тип объектов, хранящихся в списке.
position - величина типа POSITION, используемая для доступа к данному элементу.

Описание
Переменная типа POSITION используется в качестве ключа для доступа к элементу списка. Эту переменную нельзя интерпретировать как индекс, поскольку ее нельзя модифицировать пользователю. Функция GetAt возвращает элемент, расположенный в данной позиции (или ссылку на него). При задании в качестве аргумента данной функции недопустимого значения позиции отладочная версия библиотеки MFC выдает сообщение об ошибке.
GetHead

TYPE& GetHead();
TYPE GetHead() const;

Возвращаемое значение
Если элементы списка являются константами, то функция GetHead возвращает копию элемента, расположенного в голове списка. Это позволяет использовать данную функцию только в правой части оператора присваивания и не позволяет вносить изменения в содержимое списка. Если элементы списка не являются константами, то функция GetHead возвращает ссылку на элемент списка, расположенный в его голове. Это позволяет использовать данную функцию как в левой, так и в правой частях оператора присваивания и позволяет вносить изменения в содержимое списка.
Аргументы

TYPE - параметр шаблона, определяющий тип объектов, хранящихся в списке.

Описание
Данная функция позволяет получить элемент списка, расположенный в его голове, (или ссылку на него). Перед тем, как вызывать функцию GetHead, необходимо убедиться, что список не пуст. В противном случае отладочная версия библиотеки MFC выдаст сообщение об ошибке. Для проверки того, что список не пуст, можно использовать функцию IsEmpty.
GetHeadPosition

POSITION GetHeadPosition() const;

Возвращаемое значение
Величина типа POSITION, которая может использоваться для инициализации поиска элемента в списке, или NULL, если список пуст.
Описание
Позволяет получить позицию первого элемента в списке.
GetNext

TYPE& GetNext(POSITION& rPosition); TYPE GetNext(POSITION& rPosition) const;

Возвращаемое значение
Если элементы списка являются константами, то функция GetNext возвращает копию элемента, расположенного в позиции, на которую указывает аргумент rPosition. Это позволяет использовать данную функцию только в правой части оператора присваивания и не позволяет вносить изменения в содержимое списка. Если элементы списка не являются константами, то функция GetNext возвращает ссылку на элемент списка, расположенный в позиции, на которую указывает аргумент rPosition. Это позволяет использовать данную функцию как в левой, так и в правой частях оператора присваивания и позволяет вносить изменения в содержимое списка.
Аргументы

TYPE - параметр шаблона, определяющий тип объектов, хранящихся в списке.
rPosition - ссылка на переменную типа POSITION полученную при предыдущем вызове функции GetNext или GetHeadPosition.

Описание
Позволяет получить элемент, расположенный в позиции, определяемой значением аргумента rPosition. После этого в аргумент rPosition заносится позиция следующего элемента в списке. Функция GetNext может использоваться для просмотра списка, если ее начальное значение устанавливается функцией GetHeadPosition или Find. При задании в качестве аргумента данной функции недопустимого значения позиции отладочная версия библиотеки MFC выдает сообщение об ошибке. Если получаемый элемент является последним в списке, то аргумент rPosition принимает значение NULL.
GetPrev

TYPE& GetPrev(POSITION& rPosition);
TYPE GetPrev(POSITION& rPosition) const;

Возвращаемое значение
Если элементы списка являются константами, то функция GetPrev возвращает копию элемента, расположенного в позиции, на которую указывает аргумент rPosition. Это позволяет использовать данную функцию только в правой части оператора присваивания и не позволяет вносить изменения в содержимое списка. Если элементы списка не являются константами, то функция GetPrev возвращает ссылку на элемент списка, расположенный в позиции, на которую указывает аргумент rPosition. Это позволяет использовать данную функцию как в левой, так и в правой частях оператора присваивания и позволяет вносить изменения в содержимое списка.
Аргументы

TYPE - параметр шаблона, определяющий тип объектов, хранящихся в списке.
rPosition - ссылка на переменную типа POSITION полученную при предыдущем вызове функции GetNext или других функций.

Описание
Позволяет получить элемент, расположенный в позиции, определяемой значением аргумента rPosition. После этого в аргумент rPosition заносится позиция предыдущего элемента в списке. Функция GetPrev может использоваться для просмотра списка, если ее начальное значение устанавливается функцией GetTailPosition или Find. При задании в качестве аргумента данной функции недопустимого значения позиции отладочная версия библиотеки MFC выдает сообщение об ошибке. Если получаемый элемент является первым в списке, то аргумент rPosition принимает значение NULL.
GetTail

TYPE& GetTail();
TYPE GetTail() const;

Возвращаемое значение
Если элементы списка являются константами, то функция GetHead возвращает копию элемента, расположенного в хвосте списка. Это позволяет использовать данную функцию только в правой части оператора присваивания и не позволяет вносить изменения в содержимое списка. Если элементы списка не являются константами, то функция GetHead возвращает ссылку на элемент списка, расположенный в его хвосте. Это позволяет использовать данную функцию как в левой, так и в правой частях оператора присваивания и позволяет вносить изменения в содержимое списка.
Аргументы

TYPE - параметр шаблона, определяющий тип объектов, хранящихся в списке.

Описание
Данная функция позволяет получить элемент списка, расположенный в его хвосте, (или ссылку на него). Перед тем, как вызывать функцию GetTail, необходимо убедиться, что список не пуст. В противном случае отладочная версия библиотеки MFC выдаст сообщение об ошибке. Для проверки того, что список не пуст, можно использовать функцию IsEmpty.
GetTailPosition

POSITION GetTailPosition() const;

Возвращаемое значение
Величина типа POSITION, которая может использоваться для инициализации поиска элемента в списке, или NULL, если список пуст.
Описание
Позволяет получить позицию последнего элемента в списке.
IsEmpty

BOOL IsEmpty() const;

Возвращаемое значение
Ненулевое, если список не содержит элементов, и нулевое в противном случае.
Описание
Указывает на то, что список не содержит элементов.
RemoveAll

void RemoveAll();

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

void RemoveAt(POSITION position);

Аргументы

position - позиция элемента, который должен быть удален из списка.

Описание
Удаляет указанный элемент из списка. При задании в качестве аргумента данной функции недопустимого значения позиции отладочная версия библиотеки MFC выдает сообщение об ошибке.
RemoveHead

TYPE RemoveHead();

Возвращаемое значение
Элемент, находящийся до этого в голове списка.
Аргументы

TYPE - параметр шаблона, определяющий тип объектов, хранящихся в списке.

Описание
Удаляет первый элемент в списке и возвращает указатель на него. Перед тем, как вызывать функцию RemoveHead, необходимо убедиться, что список не пуст. В противном случае отладочная версия библиотеки MFC выдаст сообщение об ошибке. Для проверки того, что список не пуст, можно использовать функцию IsEmpty.
RemoveTail

TYPE RemoveTail();

Возвращаемое значение
Элемент, находящийся до этого в хвосте списка.
Аргументы

TYPE - параметр шаблона, определяющий тип объектов, хранящихся в списке.

Описание
Удаляет последний элемент в списке и возвращает указатель на него. Перед тем, как вызывать функцию RemoveTail, необходимо убедиться, что список не пуст. В противном случае отладочная версия библиотеки MFC выдаст сообщение об ошибке. Для проверки того, что список не пуст, можно использовать функцию IsEmpty.
SetAt

void SetAt(POSITION pos, ARG_TYPE newElement);

Аргументы

pos - величина типа POSITION, определяющая элемент, в который необходимо произвести запись.
ARG_TYPE - тип, используемый для ссылки на объекты, хранящиеся в списке.
newElement - новый элемент, вставляемый в указанный элемент списка.

Описание
Переменная типа POSITION используется в качестве ключа для доступа к элементу списка. Эту переменную нельзя интерпретировать как индекс, поскольку ее нельзя модифицировать пользователю. Функция SetAt записывает информацию в элемент, расположенный в данной позиции). При задании в качестве аргумента данной функции недопустимого значения позиции отладочная версия библиотеки MFC выдает сообщение об ошибке.
CListBox
Класс CListBox обеспечивает функционирование окна списка Windows. В окне списка могут отображаться различные элементы, например, имена файлов, которые пользователь может просматривать и выделять. Существуют окна списков, допускающих выделение только одного элемента, и окна списков, допускающие выделение нескольких элементов. При выделении элемента пользователем он выделяется и окно списка посылает сообщение родительскому окну. Объект класса окна списка может быть создан с использованием шаблона диалогового окна или непосредственно включен пользователем в свою программу. Чтобы непосредственно создать объект класса CListBox, необходимо сначала воспользоваться конструктором класса для создания его объекта, а затем вызвать функцию Create, осуществляющую создание соответствующего элемента управления Windows и связывающую ее с объектом класса CListBox. Для использования объекта данного класса в шаблоне диалогового окна необходимо объявить в классе диалогового окна переменную соответствующего типа и использовать функцию DDX_Control в функции DoDataExchange данного класса диалогового окна, осуществляющую обмен данными между объектами класса диалогового окна и класса элемента управления. (Данная операция осуществляется автоматически мастером ClassWizard при добавлении соответствующей переменной в класс диалогового окна). В классах, производных от данного, создание объекта может происходить за один шаг. Для этого необходимо в конструкторе данного класса вызвать функцию Create. Чтобы иметь возможность обрабатывать сообщение Windows, посылаемое окном списка своему родительскому окну (обычно в качестве родительского окна выступает объект класса, производного от класса CDialog), добавьте в карту сообщений класса родительского окна соответствующий макрос, а в сам класс - функцию обработки данного сообщения. Каждый макрос карты сообщений имеет вид:

ON_Notification(id, memberFxn)

где id определяет идентификатор дочернего окна, соответствующего объекту класса окна списка, посылающего данное сообщение, а memberFxn определяет имя функции обработки данного сообщения в классе родительского окна. Прототипы функций обработки сообщения имеют вид:

afx_msg void memberFxn();

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

ON_LBN_DBLCLK - пользователь дважды щелкнул по строке в окне списка. Данное сообщение может послать только диалоговое окно, имеющее стиль LBS_NOTIFY;.
ON_LBN_ERRSPACE - объекту класса окна списка не выделено необходимой для его работы памяти;
ON_LBN_KILLFOCUS - окно списка потеряло фокус ввода;
ON_LBN_SELCANCEL - закончилось выделение элемента в данном окне списка. Данное сообщение может послать только диалоговое окно, имеющее стиль LBS_NOTIFY;
ON_LBN_SELCHANGE - намечается изменение выделенного в данном окне списка элемента. Это сообщение посылается в том случае, если это изменение производится функцией CListBox::SetCurSel. Данное сообщение может послать только диалоговое окно, имеющее стиль LBS_NOTIFY. Сообщение LBN_SELCHANGE посылается окном списка, допускающим выделение нескольких элементов, при нажатии пользователем на клавишу управления курсором даже в том случае, когда выделение элементов не изменяется;
ON_LBN_SETFOCUS - окно списка получает фокус ввода;
ON_WM_CHARTOITEM - определенное пользователем окно списка, не содержащее строк, получает сообщение WM_CHAR;
ON_WM_VKEYTOITEM - окно списка, имеющее стиль LBS_WANTKEYBOARDINPUT получает сообщение WM_KEYDOWN.

При создании объектов класса CListBox в диалоговых окнах (с использованием ресурсов диалогового окна) эти объекты автоматически уничтожаются при закрытии пользователем этого диалогового окна. При создании объектов класса CListBox в других окнах пользователь должен сам удалять эти объекты. Если объекты класса CListBox создавались в стеке, то они будут автоматически уничтожены. Если же объекты класса CListBox создавались в куче с использованием оператора new, пользователь должен уничтожить их с использованием оператора delete при закрытии родительского окна. Описание данного класса содержится в файле заголовка afxwin.h.