CustomControl benutzen



  • Tag zusammen, ich hab da ne Frage:
    Im VisualStudio gibt es beim Dialogeditor eine Schalfläche "Custom Control" also quasi ein benutzerdefiniertes. Wie benutze ich das? Ich kann diesem keine Variable zuweisen oder irgendwie was einstellen... Wie sage ich diesem Control, dass es von der Klasse CSonstwasWnd ist?



  • Weiß es denn wirklich keiner? 😉 *push*



  • Naja, dann benutz ich eben für eigene Controls weiterhin static 😞 😉 .



  • 1. pauschal gesagt windows klasse muß registert werden

    WNDCLASS wndcls;
        memset(&wndcls, 0, sizeof(WNDCLASS)); 
        wndcls.style = CS_HREDRAW | CS_VREDRAW | CS_GLOBALCLASS;
        wndcls.lpfnWndProc=::DefWindowProc; 
        wndcls.hInstance=AfxGetInstanceHandle();
        wndcls.hIcon=NULL;
        wndcls.hCursor=::LoadCursor(NULL, IDC_ARROW);
        wndcls.hbrBackground=(HBRUSH) (COLOR_WINDOW);
        wndcls.lpszMenuName=NULL;
        wndcls.lpszClassName=MY_SEPARATOR_CLASS;   //MySeparator
        if(!AfxRegisterClass(&wndcls))
        {
           TRACE("Class Registration Failed %s\n", wndcls.lpszClassName);
           return 0;
        }
    

    2. klasse von CWnd ableiten

    class CSeparatorD : public CWnd
    {
      DECLARE_DYNAMIC(CSeparatorD)
    
    public:
      CSeparatorD(int nAddx = 0);
      virtual ~CSeparatorD();
    
    protected:
      DECLARE_MESSAGE_MAP()
    
    private:
      LRESULT OnMsgEx(WPARAM wParam, LPARAM lParam); 
    
    public:
      afx_msg BOOL OnEraseBkgnd(CDC* pDC);
      afx_msg void OnDestroy();
    
    private:
      int m_nAddx;
    protected:
      virtual void PreSubclassWindow();
    };
    

    3. Subclass

    CSeparatorD* p=new CSeparatorD();
      p->SubclassWindow(hwnd);
    

    4. fertig

    [ Dieser Beitrag wurde am 21.05.2003 um 12:32 Uhr von vdittrich editiert. ]



  • Achso, danke. Na dass ist mir ein wenig zu aufwendig nur um ein eigenes Control zu erstellen. Dann bleibe ich lieber dabei es von CStatic abzuleiten... 😉


Anmelden zum Antworten