CWindowDC dc(GetDesktopWindow());
CPen pen(PS_DASH,1,RGB(255,0,0));
dc.SelectObject(pen);
dc.MoveTo(m_cPoint);
dc.LineTo(point);
这段代码是用红色画一条直线的代码
这里面
CWindowDC dc(GetDesktopWindow());
CPen pen(PS_DASH,1,RGB(255,0,0));
说是调用一个函数也不像 说是申明一个变量也不像
既具有申明变量的特点 也有函数调用的特点
到底是什么意思
麻烦哪位能解释一下
谢谢

解决方案 »

  1.   

    这是GDI绘图代码第一句是DC申请,而且选用了桌面DC,就是说你可以在桌面上绘图了
    第二句是GDI对象建立,建立了一个Pen对象,Pen对象可以设定画线样式,PS_DASH是实体线,
    1是线的宽度
    RGB(255,0,0)是颜色配置,红色
      

  2.   

    功能我能理解 我是说CWindowDC dc(GetDesktopWindow());这句既像申明变量又像函数调用 C++里面貌似没这个语法,我是语法不理解啊
      

  3.   

    你知不知道到什么叫构造函数吧?
    CWindowDC支持带窗体指针的初始化罢了,GetDesktopWindow()返回桌面指针C++的基础语法知识
      

  4.   


    首先我的确是个c++新手
    不过面向对象编程也用过好几门
    但是没用一门是这样的语法
    CClientDC dc1(this);
    dc1.MoveTo(m_cPoint);CClientDC dc2(this);
    dc2.MoveTo(m_cPoint);
    这两段代码都没问题,以及可以调用dc1的MoveTo方法
    说明dc1 dc2是一个变量或者是一个对象
    但是上面却是这样的语法dc2(this);这像调用一个函数
    我不知道你明不明白我的意思,我的困惑就在此 一个对象后面加个括号传入参数,到底干嘛的
      

  5.   

    this表示本窗体指针 CWnd子类指针
    GetDesktopWindow()表示桌面窗体指针 CWnd子类指针CWindowDC和CClientDC 都支持子类指针的构造函数初始化。
    明白了么?
      

  6.   

    楼主要补习的东西太多了
    CClientDC dc1(this);
    这个this就是当前你所在的这个函数是归哪个类的
    就是这个类当前所对应的对象的指针
    你可以this->列出所有当前对象的成员另外这么用就是说CClientDC有一个带参数的构造函数
    接受一个实参this指针
    然后在CClientDC的构造函数中会有类似这种东西出现
    m_xxx = this->m_xxx;
    就是为了方便吗,呵呵