2017-10-03 2 views
0

J'utilise un CSpinButtonCtrl, le style AutoBuddy est défini dans le DialogResssource à TRUE. Je dois maintenant supprimer/masquer CSliderButtonCtrl en mode Kiosque (FullScreen).CSpinButtonCtrl: Comment supprimer le style Autobuddy?

J'ai essayé cela, ce n'est pas suffisant, le CEditCtrl associé ne redessine pas, l'endroit où le SpinCtrl était.

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); 
    } 
} 

    } 

essayé aussi:

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

essayé aussi: la CSpinCtrl Sous-classe, mais le PreCreateWindow (..) n'est pas appelé

class CMySpinButton : public CSpinButtonCtrl 
{ 
DECLARE_DYNAMIC(CMySpinButton) 

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

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

d'autres idées?

Répondre

1

Vous pouvez détacher un contrôle Up-Down en lui envoyant le message UDM_SETBUDDY avec une valeur NULL HWND, puis en masquant la fenêtre. Le contrôle Up-Down redimensionne réellement son contact, vous devez donc redimensionner le contrôle d'édition après l'avoir détaché.

+0

Non, cela n'a pas résolu, le CEdit ci-joint encore en supposant que le style UDS_AUTOBUDDY est défini par le DialogRessource et ne redessine pas le copain détaché. –

+0

J'ai résolu cela en supprimant le style AutoBuddy dans la Ressource. Et définissez/supprimez avec le m_ctlSpin1.SetBuddy (NULL)/SetBuddy (cEdit). –