比如,我Dialog上有8个Edit,一个Spin,Spin和EDIT都是动态创建的,都有句柄。
我想选择Spin上下箭头,改变数字,动态的让多余的EDIT控件disable掉
该如何做呢?
关键是该如何响应Spin上下箭头点击的消息呢?
谢谢

解决方案 »

  1.   

    pWnd = GetDlgItem( IDC_EDIT1 );
    pWnd->SetWindowText("11");
        DWORD dwStyles = UDS_AUTOBUDDY|UDS_SETBUDDYINT|UDS_ALIGNRIGHT|UDS_ARROWKEYS|UDS_NOTHOUSANDS|UDS_WRAP;
        m_Spin.Create( WS_VISIBLE|WS_CHILD|dwStyles, rect,this,IDC_SPIN_POS);
    m_Spin.SetRange32( 0, MAXLONG );  // Sends UDM_SETRANGE
    m_Spin.SetBuddy(pWnd);//将spin与edit绑定pWnd->EnableWindow(FALSE);//将控件disable
      

  2.   

    我的意思是并不是想把和当前Spin关联的EDIT控件Disable掉,而是想通过Spin的上下箭头,动态去Disable一些控件。这个该怎么弄呢?关键是怎么截获Spin上下箭头按下的消息呢?谢谢
      

  3.   

    映射父窗口的WM_VSCROLL;
    void CDlgHalfDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
    {
    int nCount =m_Spin.GetPos();
    if(nCount ==12)
    GetDlgItem(IDC_EDIT3)->EnableWindow(FALSE);


    CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
    }
      

  4.   

    如楼上的,滚动条,微调按钮,以及slinder之类的控件,都会激发wm-vscorll事件,你在事件处理程序里面,计算m-spin的位置,就可以控制edit的多少了!