二维指针和一维指针

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函数中:CreateWindowMoveWindow(都对于非子窗口)GetMessageGetCursorPosGetWindowRectWindowFromPointSetBrushOrg中。用函数ClientToScreenScreenToClient可以将客户区域坐标转换成屏幕区域坐标,或反之。

 

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

 2、逻辑坐标

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

二 视口和窗口

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

 

映射模式

   指的是从逻辑坐标到设备坐标的转换方式。我们可以把映射模式看出一个从逻辑坐标到设备函数的映射函数。共有八种映射模式:MM_TEXTMM_HIENGLISHMM_LOENGLISHMM_HIMETRICMM_LOMETRICMM_TWIPSMM_ANISOTROPICMM_ISOTROPIC

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

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

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

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

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

SetViewportOrgEx(x,y)的作用是把原点移到 (x,y)
       SetWindowOrgEx(-x,-y)的作用是把x轴向右移
动-x单位,把y轴移动-y个单位。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值