学习VC没多久,关于里面的消息函数实在高不太清楚。
现在假设用VC建了一个工程Study,自己建一个CMyEdit的类,继承CEdit,添加一个CtlColor的函数。然后在StudyDlg对话框中添加Edit控件,定义为CMyEdit类型,并在OnCtlColor函数中添加代码。那么如果执行程序,是按照什么顺序执行的,还是只执行一个???此类问题,我都不是很明白,请帮忙解释一下,谢谢!!!还有就是,想学习这样的基本问题,看什么书为好?谢谢!!

解决方案 »

  1.   

    在CtlColor和OnCtlColor函数里添加OutputDebugString函数,然后在输出里看
      

  2.   

    MSDN中对于每个消息的返回值都有说明。
      

  3.   

    to:ouyh12345(五岭散人)
    已经按照你的说法做了,显示为不执行自己本身的CtlColor,这是为什么呀?
    本人比较菜,请帮忙说明一下,谢谢~~
      

  4.   

    ON_WM_CTLCOLOR_REFLECT()
    ------
    在CtlColor的函数前加上
      

  5.   

    to:liuxiuk()
    不好意思啊,你说的那个本来就有的,不需要自己手动添加的.
      

  6.   

    您应该在母窗口中响应比如您是在一个对话框里加得EDIT控件,您就要在这个对话框的OnCtlColor加代码
      

  7.   

    HBRUSH CVczmDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    // TODO: Change any attributes of the DC here
    ///*
    if(pWnd==&m_cZm)
    {
    //MessageBox("bbb");
    pDC->SetBkColor(0xFF0000);
    pDC->SetTextColor(0x00ff00);

    }
    //*/
    // TODO: Return a different brush if the default is not desired
    return hbr;
    }
      

  8.   

    to:xtaddqqug(王中) 
    谢谢你,但是我已经在里面加代码了,我的问题是,在自己继承的CMyEdit里加颜色,同时在对话框中的Edit加颜色(类型为CMyEdit),那么在执行的时候,是执行哪一个?
    不好意思,可能是我问的不清楚
      

  9.   

    楼主还是学一下C++吧,在你的例子里,CMyEdit只是一个类,也可以说就是一个自定义的类型,而Edit才是这个类的实例,根本就没执行哪一个的问题.
      

  10.   

    在自己继承的CMyEdit里加颜色,这个您就要重载OnPanit()函数,如果您的EDIT框里有控件,您还想对这个EDIT里的控件做些什么,您就用CMyEdit::OnCtlColor()