G I S   T o o l K i t
Справочник программиста

Главная | MAPAPI | PANAPI | Примеры
 

 
МЕТОДЫ КЛАССА "ОКНО ЭЛЕКТРОННОЙ КАРТЫ" (TPanWindow)

Объявлены: panwin.h   Реализация: pantask.cpp

 

 Конструктор и деструктор

 

TPanWindow::TPanWindow

Создать объект "Окно электронной карты".
Параметры:
task - указатель на объект класса "Задача" (TPanTask), которому принадлежит обработчик;
hwmap - идентификатор окна карты;
parm - указатель на структуру с парамктрами задачи (см. TASKPARM).

 
public:

TPanWindow(TPanTask * task, HWND hwmap, TASKPARM * parm)

 

 

TPanWindow::~TPanWindow

Удалить объект "Окно электронной карты".

 
public:

~TPanWindow()

 

 

Запрос справочной информации

 

TPanWindow::GetApplicationName

Запросить имя приложения.

 
public:

const char * GetApplicationName() 

{

  return ApplicationName;

}

 

 

TPanWindow::GetApplicationNameUn

Запросить имя приложения в Unicode.

 
public:

const WCHAR * GetApplicationNameUn()

{

  return ApplicationNameUn;

}

 

 

TPanWindow::GetIniName

Запросить имя файла "ini" приложения.

 
public:

char * GetIniName()

{

  return PanIniName;

}

 

 

TPanWindow::GetMapIniName

Запросить имя файла "ini" карты.

 
public:

const char * GetMapIniName()

{

  return MapIniName;

}

 

 

TPanWindow::GetHelpName

Запросить имя файла "hlp" приложения.

 
public:

char * GetHelpName()

{

  return HelpName;

}

 

 

TPanWindow::GetLanguage

Запросить текущий язык диалогов приложения

 
public:

int GetLanguage()

{

  return TaskParm.Language;

}

 

 

TPanWindow::GetPanelState

Запросить состояние панели инструментов (отображена или нет).
id - идентификатор панели (CM_MAPEDIT - панель редактора, ...).
Если панели нет - возвращает ноль.

 
public:

int GetPanelState(int id)

 

 

TPanWindow::GetPathShell

Запросить путь к директории приложения.

 
public:

char * GetPathShell()

{

  return PathShell;

}

 

 

TPanWindow::GetUserName

Запросить имя пользователя.

 
public:

const char * GetUserName()

 

 

TPanWindow::GetTaskParm

Запросить параметры для вызова задачи.

 
public:

TASKPARM * GetTaskParm()

{

  return (TASKPARM *)&TaskParm;

}

 

 

TPanWindow::GetTaskParmEx

Запросить параметры для вызова задачи.

 
public:

TASKPARMEX * GetTaskParmEx()

{

  return &TaskParm;

}

 

 

TPanWindow::GetDocPath

Запросить имя файла документа.

 
public:

const char * GetDocPath()

 

 

TPanWindow::ChangeLanguage

Сменить код языка приложения.
Вызывается автоматически при смене кода.

 
public:

void ChangeLanguage(TASKPARM * parm)

 

 

TPanWindow::IsActionActive

Запросить - активен ли обработчик.
Возвращает идентификатор обработчика или ноль.

 
public:

int IsActionActive();

 

 

Управление масштабированием и пересчетом координат

   

TPanWindow::ChangeScale

Функция изменения масштаба.
Параметры:
change  - коэффициент изменения текущего масштаба ( > 0 : 0.5, 2.5 и т.п.).
Возвращает: 0 - масштаб не изменился, 1 - масштаб изменился

 
public:

int ChangeScale(float change)

 

 

TPanWindow::Client2Picture

Преобразование координат точки клиентной области окна в координаты изображения.

 
public:

POINT Client2Picture(POINT& point)

RECT Client2Picture(RECT& rect)

 

 

TPanWindow::GetGeoPoint

Запросить координаты в географической системе (Geo) для эллипсоида Красовского.
Возвращаются координаты текущей точки в радианах. Если географическая система координат не поддерживается значение координат всегда ноль!
Определение поддержки географических координат :
if (MapDoc->IsGeoSupported()!= 0) { поддерживаются; }

 
public:

DOUBLEPOINT * GetGeoPoint()

 

 

TPanWindow::GetGeoWGS84Point

Запросить координаты в географической системе (Geo) для эллипсоида WGS84.
Возвращаются координаты текущей точки в радианах.
Если географическая система координат не поддерживается значение координат всегда ноль!

 
public:

DOUBLEPOINT * GetGeoWGS84Point()

 

 

TPanWindow::GetMapGeoPoint

Запросить координаты в географической системе (Geo) для эллипсоида карты.
Возвращаются координаты текущей точки в радианах.
Если географическая система координат не поддерживается значение координат всегда ноль!
Определение поддержки географических координат :
if (MapDoc->IsGeoSupported()!= 0) { поддерживаются; }

 
public:

DOUBLEPOINT * GetMapGeoPoint()

 

 

TPanWindow::GetPicturePoint

Запросить координаты левого верхнего угла карты.

 
public:

POINT * GetPicturePoint()

 

 

TPanWindow::SetPicturePoint

Установить координаты левого верхнего угла карты.

 
public:

POINT * SetPicturePoint(POINT& point)

 

 

TPanWindow::GetWindowCenterPlane

Запросить координаты центра окна в метрах.

 
public:

void GetWindowCenterPlane(DOUBLEPOINT * point)

 

 

TPanWindow::SetWindowCenterPlane

Установить координаты центра окна в метрах.

 
public:

void SetWindowCenterPlane(DOUBLEPOINT * point)

 

 

TPanWindow::GetMapWindowPoint

Запросить координаты левого верхнего угла карты в дискретах в районе.

 
public:

DOUBLEPOINT * GetMapWindowPoint()

 

 

TPanWindow::SetMapWindowPoint

Переместить заданную точку карты в левый верхний угол.
Координаты в дискретах в районе. Возвращает новое значение.

 
public:

DOUBLEPOINT * SetMapWindowPoint(DOUBLEPOINT * point)

 

 

TPanWindow::Picture2Client

Преобразование координат точки изображения карты в координаты клиентной области окна.
point – координаты точки в системе координат изображения карты.

 
public:

POINT Picture2Client(POINT& point)

 

 

TPanWindow::PlaneToClient

Преобразование координат точки на местности к координатам клиентной области окна.
planepoint – координаты точки в метрах.

 
public:

POINT PlaneToClient(DOUBLEPOINT &planepoint)

 

 

TPanWindow::MapToClient

Преобразование координат точки на карте к координатам клиентной области окна.
mappoint – координаты точки в системе координат карты.

 
public:

POINT MapToClient(DOUBLEPOINT &mappoint)

 

 

TPanWindow::RadianToGradStrin

Преобразовать радианы в символьный вид в градусы.
Возвращает адрес переданной строки.
maxlength - размер входной строки ( >= 16!).

 
public:

char * RadianToGradString(double * rad, char * string, int maxlength)

 

 

Управление текущим процессом

 

TPanWindow::CreateProgress

Запустить линейку с процентом выполнени процесса.
title - название процесса.

 
public:

void CreateProgress(const char * title)

 

 

TPanWindow::SetProgressPercent

Показать процент выполнения (0 - 100).
title – название процесса.
Если процесс должен завершиться принудительно - возвращает 0!

 
public:

int SetProgressPercent(int value, const char * title = 0)

 

 

TPanWindow::DeleteProgress

Убрать линейку выполнения процесса.

 
public:

void DeleteProgress()

 

 

Запрос и обработка информации об объекте карты

 

TPanWindow::ClearSelect

"Забыть" о выбранном объекте и стереть выделение на карте.

 
public:

void ClearSelect()

 

 

TPanWindow::IsObjectSelected

Запросить выбран ли объект на карте.
Возвращает идентификатор выбранного объекта или 0.

 
public:

HOBJ IsObjectSelected()

 

 

TPanWindow::SetSelectObject

Установить выбранный объект.
Выбранный объект автоматически будет выделен на карте.

 
public:

void SetSelectObject(HOBJ info)

 

 

TPanWindow::ViewMapPoint

Отобразить участок карты,на котором расположена заданная точка,(в дискретах) в центре окна.
При ошибке возвращает ноль. Иначе - координаты заданной точки в пикселах в клиентной области окна

 
public:

POINT ViewMapPoint(DOUBLEPOINT * point)

 

 

TPanWindow::ViewPlanePoint

Отобразить участок карты, на котором расположена заданная точка, (в метрах) в центре окна.
При ошибке возвращает ноль. Иначе - координаты заданной точки в пикселах в клиентной области окна.

 
public:

POINT ViewPlanePoint(DOUBLEPOINT * point);

 

 

TPanWindow::ViewPlanePointAndScale

Отобразить участок карты,на котором расположена заданная точка, (в метрах) в центре окна в заданном масштабе.
point   - координаты точки в метрах;
percent - процент от клиентской области окна для определения ширины и высоты области вокруг центра окна, где должна быть отображена точка; для минимизации перерисовки окна;
scale   - новое значение масштаба отображения или 0 (не менять);
update  - признак немедленного обновления окна после перемещения.
При ошибке возвращает ноль. Иначе - координаты заданной точки в пикселах в клиентной области окна.

 
public:

POINT ViewPlanePointAndScale(DOUBLEPOINT * point, int percent, int scale, int update)

 

 

TPanWindow::ViewMapPointInRect

Отобразить участок карты, на котором расположена заданная точка, в определенном фрагменте окна.
Координаты фрагмента в пикселах в клиентной области.
При ошибке возвращает ноль. Иначе - координаты заданной точки в пикселах в клиентной области окна.

 
public:

POINT  ViewMapPointInRect(DOUBLEPOINT * point, RECT  * rect)

 

 

TPanWindow::ViewObject

Отобразить участок карты, на котором расположен заданный объект, в определенном фрагменте окна.
Координаты фрагмента в пикселах в клиентной области.
При ошибке возвращает ноль. Иначе - координаты видимой точки метрики объекта в пикселах в клиентной области окна.

 
public:

POINT  ViewObject(HOBJ info,RECT  * rect)

 

 

TPanWindow::SetViewSelect

Установить выделение объектов на карте.
По обобщенным условиям поиска/выделения объектов (TotalSeek).
select - признак выделения объектов (0/1);
color  - цвет выделения, если 0 – умалчиваемый.

 
public:

void SetViewSelect(int select,COLORREF color = 0)

 

 

TPanWindow::ClearMarker

Отменить выделение точки на карте.

 
public:

void ClearMarker()

 

 

TPanWindow::SetMarker

Отметить точку на карте.
point - координаты в метрах

 
public:

void SetMarker(DOUBLEPOINT * point)

 

 

Управление выводом комментариев

 

TPanWindow::SetWindowTitle

Вывести сообщение в заголовок окна.
message – текст сообщения.

 
public:

void SetWindowTitle(const char * message)

 

 

TPanWindow::ClearWindowTitle

Убрать сообщение из заголовка окна.

 
public:

void ClearWindowTitle()

{

  SetWindowTitle(0);

}

 

 

TPanWindow::LoadString

Загрузить текстовую строку из общих ресурсов.
Параметры:
id – идентификатор строки в ресурсах;
buffer – указатель на область памяти (массив), выделенной для хранения строки;
size – размер выделенной области памяти.

 
public:

int LoadString(int id, char * buffer, int size)

int LoadString(int id, WCHAR * buffer, int size)

 

 

TPanWindow::SetMessage

Вывести сообщение, указанное в text в строку состояния программы.
Для отмены сообщения text = 0.

 
public:

void SetMessage(const char * text = 0)

void SetMessage(const WCHAR * text)

 
public:

void SetMessage(int)

{

  SetMessage();

}

 

 

TPanWindow::ObjectComment

Сформировать комментарий к объекту.
Параметры:
info    - идентификатор описываемого объекта;
comment - адрес заполняемой строки (номер - название - слой - код);
size    - максимальный размер строки.
При ошибке возвращает ноль (нет объекта или буфер меньше 100 байт).

 
public:

char * ObjectComment(HOBJ info, char * comment, int size)

 

 

TPanWindow::ViewHelp

Отобразить раздел "HELP".
Параметры:
ident - идентификатор раздела
check - признак проверки активности системы HELP, если равен 0 - принудительный вывод HELP

 
public:

int ViewHelp(int ident, int check = 0)

 

 

TPanWindow::PressButton

Нажать кнопку для команды, заданной указанным id.
При ошибке возвращает ноль (не найдена кнопка).

 
public:

int PressButton(int id)

 

 

TPanWindow::ReleaseButton

Отжать кнопку для команды, заданной указанным id.

 
public:

void ReleaseButton(int id)

 

 

TPanWindow::EnableButton

Установить доступность кнопки для команды, заданной указанным id.
Параметр enable = 1 – кнопка доступна, 0 – кнопка не доступна

 
public:

void EnableButton(int id, int enable)

 

 

Оконный интерфейс для электронной карты

 

TPanWindow::GetHandle

Получить идентификатор окна.

 
public:

HWND GetHandle()

{

  return HMapWindow;

}

 

 

TPanWindow::GetMainHandle

Получить идентификатор главного окна.

 
public:

HWND GetMainHandle()

{

  return HMainWindow;

}

 

 

TPanWindow::GetCursorPos

Получить координаты текущей позиции курсора.

 
public:

void GetCursorPos(POINT& pos)

 

 

TPanWindow::GetClientRect

Получить координаты клиентской области окна.

 
public:

RECT GetClientRect()

 
public:

void GetClientRect(RECT& rect)

{

  rect = GetClientRect();

}

 

 

TPanWindow::ScreenToClient

Выполнить преобразование экранных координат к координатам клиентской области окна.

 
public:

void ScreenToClient(POINT& point)

{

  HWND Handle = GetHandle();

  if (Handle)

  {

    #ifdef WIN32API

    ::ScreenToClient(Handle,&point);

    #else

    if (MessageHandler)

    MessageHandler(Handle, MH_SCREENTOCLIENT, (WPARAM)&point, 0, 0);

    #endif

  }

}

 

 

TPanWindow::GetMainClientRect

Получить координаты клиентской области главного окна.

 
public:

RECT GetMainClientRect()

 
public:

void GetMainClientRect(RECT& rect)

{

  rect = GetMainClientRect();

}

 

 

TPanWindow::SendMessage

Отправить сообщение окну карты.

 
public:

int SendMessage(int msg, WPARAM p1 = 0, LPARAM p2 = 0)

{

  HWND Handle = GetHandle();

  if (Handle)

  #ifdef WIN32API

  return ::SendMessage(Handle,msg,p1,p2);

  #else

  if (MessageHandler)

  return MessageHandler(Handle, msg, p1, p2, 0);

  #endif

  return 0;

}

 

 

TPanWindow::PostMessage

Отправить сообщение окну карты без ожидания обработки.

 
public:

int PostMessage(int msg, WPARAM p1 = 0, LPARAM p2 = 0)

{

  HWND Handle = GetHandle();

  if (Handle)

  #ifdef WIN32API 

  return ::PostMessage(Handle,msg,p1,p2);

  #else

  if (MessageHandler)

  return MessageHandler(Handle, msg, p1, p2, 1);

  #endif

  return 0;

}

 

 

TPanWindow::MainMessage

Отправить сообщение главному окну приложения

 
public:

int MainMessage(int message, WPARAM wparam, LPARAM lparam = 0)

{

  #ifdef WIN32API

  HWND Handle = GetMainHandle();

 

  if (Handle)

  return ::SendMessage(Handle,message,wparam,lparam);

  #else

  if (MessageHandler)

  return MessageHandler(0, message, wparam, lparam, 0);

  #endif

  return 0;

}

 

 

TPanWindow::Invalidate

Запросить обновление окна карты.
Параметр erase определяет, должна ли быть выполнена предварительная очистка окна (по умолчанию erase = 0 – область не очищается).

 
public:

void Invalidate(int erase = 0)

 

 

TPanWindow::InvalidateRect

Запросить обновление прямоугольной области окна карты.
Параметры:
rect – координаты прямоугольной области;
erase - определяет, должна ли быть выполнена предварительная очистка окна.

 
public:

void InvalidateRect(RECT& rect,int erase = true)

 

 

TPanWindow::InvalidateRectPlane

Запросить обновление прямоугольной области, заданной прямоугольными координатами.
Параметры:
frame – координаты прямоугольной области в системе координат карты (в метрах);
erase - определяет, должна ли быть выполнена предварительная очистка окна.

 

public:

void InvalidateRectPlane(DFRAME * frame,int erase = true)

 

 

TPanWindow::UpdateWindow

Обновить окно. Немедленная перерисовка окна.

 
public:

void UpdateWindow()

 

 

TPanWindow::Refresh

Ускоренная очистка окна без изменения содержания карты (стереть следы обработчика).
Параметр rect – указатель на структуру с координатами прямоугольной области.

 
public:

void Refresh(RECT * rect = 0)

 

 

TPanWindow::RefreshPlane

Ускоренная очистка окна без изменения содержания карты (стереть следы обработчика).
Параметр: frame - координаты прямоугольной области в системе координат карты (в метрах). Если frame = 0 – очистка всего окна.

 
public:

void RefreshPlane(DFRAME * frame = 0)

 

 

TPanWindow::SoftRefresh

Ускоренная очистка окна без изменения содержания карты (стереть следы обработчика).
dc - контекст, в который отрисуется буфер изображения карты;
rect - габариты области изображения в пикселах на карте, если равны 0, то отрисуется вся текущая клиентная область окна;
showall - признак отображения выделенных объектов поверх карты.
При ошибке возвращает ноль.

 
public:

int SoftRefresh(HDC dc, RECT * rect = 0, int showall = 0)

 

 

TPanWindow::ClearMouseMessage

Убрать из очереди сообщений все нажатия мышки над окном карты

 
public:

void ClearMouseMessage()

 

 
 

Касьянов О.В.
info@panorama.kharkov.ua

bigmir)net TOP 100