2017-10-03 4 views
0

CSpinButtonCtrl을 사용합니다. AutoBuddy 스타일은 DialogResssource에서 TRUE로 설정됩니다. 키오스크 모드 (FullScreen)에서 CSliderButtonCtrl을 제거/숨겨야합니다.CSpinButtonCtrl : Autobuddy 스타일을 제거하는 방법?

나는 이것을 시도했지만 충분하지 않다. 관련 CEditCtrl은 SpinCtrl이 있던 곳을 다시 그리지 않는다.

if (!g_bKioskMode) 
{ 
    DDX_Control(pDX, IDC_SPIN1, m_ctlSpin1); 
} 

도 시도 :

CMyFormView::OnInitialUpdate() 
{ 
    if (g_bKiosMode) 
    { 
    m_ctlSpin1.ShowWindow(SW_HIDE); 
    m_ctlSpin1.ShowWindow(SW_ENABLE); 

    LONG style = GetWindowLong(m_ctlSpinSollwert1.GetSafeHwnd(), GWL_STYLE); 
    style &= ~UDS_AUTOBUDDY; 
    SetWindowLong(m_ctlSpinSollwert2.GetSafeHwnd(), GWL_STYLE, style); 
    } 
} 

    } 

도 시도 CSpinCtrl을 하위 클래스 만 된 PreCreateWindow (..)는
class CMySpinButton : public CSpinButtonCtrl 
{ 
DECLARE_DYNAMIC(CMySpinButton) 

    public: 
    CMySpinButton(); 
    virtual ~CMySpinButton(); 

    protected: 
    DECLARE_MESSAGE_MAP() 
    virtual BOOL PreCreateWindow(CREATESTRUCT& cs); 
}; 

더 아이디어

를 호출되지 않습니다?

답변

1

NULL HWND를 사용하여 UDM_SETBUDDY 메시지를 보내고 창을 숨김으로써 업다운 컨트롤을 분리 할 수 ​​있습니다.

업 다운 컨트롤은 실제로 대화 상자의 크기를 조정하므로 분리 한 후에 편집 컨트롤의 크기를 조정해야합니다.

+0

아직 해결되지 않았습니다. 첨부 된 CEdit은 UDS_AUTOBUDDY 스타일이 DialogRessource에 의해 설정되고 분리 된 버디를 다시 그리지 않습니다. –

+0

Ressource에서 AutoBuddy Style을 제거하여이 문제를 해결했습니다. 그리고 m_ctlSpin1.SetBuddy (NULL)/SetBuddy (cEdit)를 사용하여 설정/제거하십시오. –