我按照webber84(***闭关修炼中***)所说
想让对话框中的slider控件支持WM_LBUTTONUP消息:
方法如下:  
"NM_RELEASEDCAPTURE是slider控件发送给父窗口的通知消息,它表示slider中发生了一些事件父窗口可能关心的事情,提示父窗口进行相应的处理。而像WM_MOUSEMOVE这种消息一般你都不会处理的,所以就没有必要发送到父窗口去了。
  如果你想自己处理这些消息,可以派生一自己的slider来处理:在insert中选new class,在base class中选CSliderCtrl,创建一个派生类,比如叫CMySliderCtrl。在对话框上放一个slider控件,在classwizard中选member variables页,点add variable给slider添加一个control类型的成员变量(variable type选CMySlider)。这样对话框中的sliber就用你派生的类来创建了,你可以在CMySlider处理各种消息。"但是在这个CMySlider类中加入了WM_LBUTTONUP消息支持后
如何向对话框中的EDIT控件赋值呢?
我用如下方法编译通过,但是赋值时出错
void CMySlider::OnLButtonUp(UINT nFlags, CPoint point) 
{
// TODO: Add your message handler code here and/or call default
    CTestDLG *aaa = new CTestDLG();
    //CTestDLG *aaa;
    aaa->m_AlphaVal=20; //m_AlphaVal是EDIT控件变量
    aaa->UpdateData();
CSlider::OnLButtonUp(nFlags, point);
}

解决方案 »

  1.   

    void CMySlider::OnLButtonUp(UINT nFlags, CPoint point) 
    {
    // TODO: Add your message handler code here and/or call default
        CTestDLG *aaa = new CTestDLG();
        //CTestDLG *aaa;
        aaa->m_AlphaVal=20; //m_AlphaVal是EDIT控件变量
        aaa->UpdateData();
    CSlider::OnLButtonUp(nFlags, point);
    }这样写不行, 更新其它控件应该由父窗口来完成
    可以发消息通知父窗口
      

  2.   

    如何作啊!我是新手!MFC我晕啊!
      

  3.   

    oyljerry(【勇敢的心】→ ㊣Despair,Game Over㊣) :
    能详细说一下吗?
    多谢啦!
      

  4.   

    void CMySlider::OnLButtonUp(UINT nFlags, CPoint point) 
    {
        CTestDLG* aaa = (CTestDlg*)GetParent();
        aaa->m_iAlpha = 20; //m_AlphaVal是EDIT控件变量
        aaa->UpdateData(FALSE);
        CSliderCtrl::OnLButtonUp(nFlags, point);
    }
    注意:
       1. CTestDLG* aaa = new CTestDLG();并不是得到了SliderCtrl的父窗口(即运行时显示的对话框),得到的只是一个与父窗口同类型的窗口指针,它并没有真正属于某个窗口。
          (CTestDLG*)GetParent()返回的是父窗口(即运行时显示的对话框)的指针。
       2. UpdateData()、UpdataData(TRUE)、UpdateData(FALSE)的区别:
          UpdateData()与UpdateData(TRUE)完全一样,是将显示在控件上的值付给相关联的变量。
          UpdateData(FALSE)是将变量值由相关联的控件显示出来。
      

  5.   

    还有,
    要在CTestDlg类定义前加上 #include "MySlider.h"即:在TestDlg.h文件上方。
    在CMySlider定义前加上  #include "TestDlg.h"
      

  6.   

    再有一点,就是
    将拖到对话框中的slider控件设为CMySlider类型。因为这样才能响应CMySlider::OnLButtonUp。
    可以这样进行:打开对话框,然后按住Ctrl键,用鼠标双击Slider控件,会谈出一个对话框。
      在Member variable name中为控件取一个名字。
      在Category中选择Control。
      在Variable Type中选择CMySlider