00001
00002
00004
00005
#if !defined(AFX_PARENTINFO_H__CBCB8816_7899_11D1_96A4_00C04FB177B1__INCLUDED_)
00006 #define AFX_PARENTINFO_H__CBCB8816_7899_11D1_96A4_00C04FB177B1__INCLUDED_
00007
00008
#if _MSC_VER >= 1000
00009
#pragma once
00010
#endif // _MSC_VER >= 1000
00011
#include "edge.h"
00012
00013 typedef struct tagDIMENSION
00014 {
00015 int Width;
00016 int Height;
00017 }
DIMENSION, *
PDIMENSION;
00018
00019
00020 #define PROPERTY(type, Name) void Set##Name( type v) { m_##Name=v; } type Get##Name() const {return m_##Name; }
00021
00022 class CParentInfo
00023 {
00024
public:
00025
void DeterminBorders(
CControlList * pControlList);
00026
void Annotate( HDC hdc );
00027
CEdge **
GetHorizontalEdges();
00028
CEdge **
GetVerticalEdges();
00029
void Resize(
int width,
int height);
00030
CParentInfo();
00031
virtual ~CParentInfo();
00032
void Init(HWND h);
00033
00034 LONG
GetWidth()
const {
return m_Size.right-
m_Size.left; }
00035 LONG
GetHeight()
const {
return m_Size.bottom-
m_Size.top; }
00036
00037 LONG
GetLeft()
const {
return m_Size.left; }
00038 LONG
GetTop()
const {
return m_Size.top; }
00039 LONG
GetRight()
const {
return m_Size.right; }
00040 LONG
GetBottom()
const {
return m_Size.bottom; }
00041
00042
void DeterminSize();
00043 HWND
GetWindow()
const {
return m_hWnd;}
00044
00045
PROPERTY(LONG, RightBorder);
00046
PROPERTY(LONG, LeftBorder);
00047
PROPERTY(LONG, TopBorder);
00048
PROPERTY(LONG, BottomBorder);
00049
00050
CEdge * AddEdge(
int Position,
int Axis, BOOL Flexible=
false,
int Offset=0);
00051
CEdge * AddEdge(
CGuide * pGuide,
int Offset=0);
00052
void ConstructBorders();
00053
CEdge & FindCloseEdge(
CEdge & Fixed,
int Offset);
00054
00055 CEdge *
GetLeftEdge() {
return m_pLeftEdge; }
00056 CEdge *
GetRightEdge() {
return m_pRightEdge; }
00057 CEdge *
GetTopEdge() {
return m_pTopEdge; }
00058 CEdge *
GetBottomEdge() {
return m_pBottomEdge; }
00059
00060 int GetNumHoriz()
const {
return m_Edges.GetNumHoriz(); }
00061 int GetNumVert()
const {
return m_Edges.GetNumVert(); }
00062
00063
PROPERTY(
DIMENSION, MinimumSize );
00064
00065
private:
00066 DIMENSION m_MinimumSize;
00067 RECT
m_Size;
00068 HWND
m_hWnd;
00069
00070 LONG
m_RightBorder;
00071 LONG
m_LeftBorder;
00072 LONG
m_TopBorder;
00073 LONG
m_BottomBorder;
00074
00075
00076
00077
00078 CEdgeCache m_Edges;
00079
00080
00081
00082
00083 CEdge *
m_pLeftEdge;
00084 CEdge *
m_pRightEdge;
00085 CEdge *
m_pTopEdge;
00086 CEdge *
m_pBottomEdge;
00087 };
00088
00089
#endif // !defined(AFX_PARENTINFO_H__CBCB8816_7899_11D1_96A4_00C04FB177B1__INCLUDED_)