您的位置:首页 > 其它

二维指针和一维指针

2009-02-08 07:43 148 查看
class M...

M m[2][4];

M (*pm)[4](m);

pm是指向4个数据的数组指针,和二维数组的列元素个数相同。

引用格式

     for(i=0;i<2;i++)

     {

          cout<<end;

          for(int j=0;j<4;j++)

            (*(*(pm+i)+j)).print();

     }

cout<<endl;

Windows坐标系和映射模式

 

一 Windows中两种坐标系

1、设备坐标(又称物理坐标)Physical Coordinate

设备坐标是描述在屏幕和打印机显示或打印的窗体的一种坐标体系。默认的坐标原点是在其客户区的左上角。X轴向右为正,Y轴向下为正。度量单位为象素。原点和坐标轴方向可以改变,但是度量单位不可以改变。

Windows中包括以下3种设备坐标,以满足各种不同需要:

 

  (1)客户区域坐标,包括应用程序的客户区域,客户区域的左上角为(0,0)。

 

  (2)屏幕坐标,包括整个屏幕,屏幕的左上角为(0,0)。屏幕坐标用在WM_MOVE消息中(对于非子窗口)以及下面的Windows函数中:CreateWindow和MoveWindow(都对于非子窗口)、GetMessage、GetCursorPos、GetWindowRect、WindowFromPoint和SetBrushOrg中。用函数ClientToScreen和ScreenToClient可以将客户区域坐标转换成屏幕区域坐标,或反之。

 

  (3)全窗口坐标,包括一个程序的整个窗口,包括标题条、菜单、滚动条和窗口框,窗口的左上角为(0,0)。使用GetWindowDC得到的窗口设备环境,可以将逻辑单位转换成窗口坐标。

 2、逻辑坐标

逻辑坐标是在程序中控制显示,打印使用的坐标体系。该坐标系与定义的映射模式密切相关。默认的映射模式是MM_TEXT。我们可以通过设置不同的映射模式来改变该坐标体系的默认行为。

二 视口和窗口

对于视口和窗口的概念比较的容易混淆,其实窗口和视口是与映射模式相关联的:映射方式就是用于从"窗口"(逻辑坐标)到"视口"(设备坐标)的映射。"视口"是基于设备坐标的,通常,视口与客户区相同;"窗口"是基于逻辑坐标的,逻辑坐标可以是像素、毫米、英寸等。
 

三 映射模式

   指的是从逻辑坐标到设备坐标的转换方式。我们可以把映射模式看出一个从逻辑坐标到设备函数的映射函数。共有八种映射模式:MM_TEXT、MM_HIENGLISH、MM_LOENGLISH、MM_HIMETRIC、MM_LOMETRIC、MM_TWIPS、MM_ANISOTROPIC和MM_ISOTROPIC。

四 应用场所
   1 CDC类所有成员函数都使用逻辑坐标作为参数。

   2 CWnd的所有成员函数都使用设备坐标作为参数

   3 所有选中测试(hittest)操作都应考虑采用设备坐标。区域(CRect)的定义和使用应采用设备坐标。

   4 将一些需要长期使用的值用逻辑坐标来保存。因为某点的设备坐标当窗口滚动以后,很可能会无效

   5 vc中鼠标的位置都是使用设备坐标表示的,如果用鼠标作图,必须先转换

SetViewportOrgEx(x,y)的作用是把原点移到 (x,y)
       SetWindowOrgEx(-x,-y)的作用是把x轴向右移
动-x单位,把y轴移动-y个单位。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  windows class 测试