
RD> MFC gets the intended use of CPoint/CSize wrong. RD> In a mathematical sense, a point is a 0-size location in an nD RD> coordinate system. In this case, it is a 2D coordinate system, so is RD> (x,y). This is used for positioning, e.g. moving the graphics cursor, so RD> I call it gui::position. It does not make sense to perform point [+-*/]= RD> point since points are locations in a space (how do I add the location RD> of my house to the location of Jupiter)? I do not follow your logic. In mathematics, in Cartesian nD coordinate system, a point is represented by a set of distances between that point and the centre of coordinates, along each axe. Just like a vector. And vectorA + vectorB is a very common operation. RD> The size type stores width and height information, so it can be treated RD> as a 2D vector. In this case, standard arithmetic operations make sense. RD> Also, it is possible for sizes to interact with points, e.g. point += size. Once again, in geometry, vector and point are practically the same thing. RD> If you do point - point, then the resulting type is a size type that RD> represents the distance between the two points. Just like size - size. RD> So in a mathematical sense, the difference between size and position is RD> entirely relevant, it's just that some libraries (not mentioning names) RD> do not adhere to the above mathematical rules. There are no mathematical rules, which say that a point in nD Cartesian coordinate system is not just a set of corresponding distances along each axe. Valentin