我用ATL写一个DLL,在ATL Object Wizard中添加了一个Dialog,在界面上要用两个Slider控件,如何设置滑块控件的范围和刻度的频率???
在LRESULT OnHScroll(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)这里如何能捕获是哪一个滑块传来的消息????

解决方案 »

  1.   

    LRESULT OnHScroll(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
    {
        HWND hWnd = (HWND)lParam;    if(hWnd == m_wndSlider1.m_hWnd)
        {
    }
    }
      

  2.   

    LRESULT OnHScroll(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
    {
        HWND hWnd = (HWND)lParam;    if(hWnd == m_wndSlider1.m_hWnd)
        {
    // 是slider1发出的消息
    }
    else if(hWnd == m_wndSlider1.m_hWnd)
    {
        // 是slider2发出的消息
    }
    }
      

  3.   

    m_wndSlider1 是什么类型的变量,在哪里定义的呢?如何在LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)设置滑块控件的范围和刻度的频率??谢谢楼上!!
      

  4.   

    m_wndSlider1 明白了,呵呵,谢谢!!如何在LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)设置滑块控件的范围和刻度的频率??
      

  5.   

    ::SendMessage(m_hWnd, TBM_SETRANGEMIN, bRedraw, nMin);//
    ::SendMessage(m_hWnd, TBM_SETRANGEMAX, bRedraw, nMax);
    ::SendMessage(m_hWnd, TBM_SETTICFREQ, nFreq, 0L);//nFreq为频率
      

  6.   

    为什么编译总说TBM_SETRANGEMIN,TBM_SETRANGEMIN,TBM_SETRANGEMAX是未声明的idint nMin = -3000;
    int nMax = 3000;
    int nFreq = 25;

    SendMessage(GetDlgItem(IDC_SLIDER1),TBM_SETRANGEMIN,0,nMin);  
    SendMessage(GetDlgItem(IDC_SLIDER1),TBM_SETRANGEMAX,0,nMax);  
    SendMessage(GetDlgItem(IDC_SLIDER1),TBM_SETTICFREQ,nFreq, 0L);
      

  7.   

    怎么能读出来滑块的当前值呢??用GetScrollInfo好像不行。