应该好好看看msdn,把英文打出来,我也是这样看的.
具体查找可在search中键入Device Context,上面也会给一些例子.

解决方案 »

  1.   

    所谓设备坐标与逻辑坐标只是相对的概念。
    比如点pt(1000,1000),如果你认为他是
    设备坐标,那么经过下变换,他就变成逻辑
    坐标:
    dc.DPtoLP(&pt);
    如果你认为他是
    逻辑坐标,那么经过下变换,他就变成设备坐标:
    dc.DPtoLP(&pt);是设备坐标还是逻辑坐标,与DC的影射模式(MapMode)
    无关,任何影射模式都有设备坐标与逻辑坐标。其中,设备坐标
    是统一的的,即都是指设备象素坐标。1.首先、设备坐标指的是物理设备以象素点为单位。
      逻辑坐标除MM_TEXT外均指物理尺寸,如mm,inch等
    2.数字本身没有逻辑与设备之分
    CRect r=CRect(0,0,50,30); 
    CSize size(100,80);        
    CPoint point(50,60);      孤立的看待这些点或坐标是没有意义的,他是逻辑还是设备坐标
    取决于编程着的主观愿望,和上下文的意义。
    3.DPtoLP指将象素点数坐标转换为在相应设备上该数目的象素点
    在该设备上实际物理长度(尺寸)坐标。
    LPtoDP指将相应设备实际物理长度(尺寸)坐标转换为在相应设备
    上该物理长度(尺寸)所占用的象素点书目坐标
      

  2.   

    在WM_LBUTTONDOWN中,它有一个参数CPoint point,这是鼠标当前位置,即设备坐标,
    你可以用下面的语句来实现你的要求:
    CDC* pDC=GetDC();
    pDC->DPToLP(&point);
    if(rect.PtInRect(&point)){
        //Do what you like when you select this rect
    }
    //rect is the rect you draw in the window.
      

  3.   

    请参阅  <<Mfc开发Window/nt4程序>>,好像是清华大学的译版,里面有详细介绍.