Größe von Cstatic zur Laufzeit ändern



  • Ich finde mal wieder die Funktion nicht. Ich möchte in einer Cstatic Klasse (bzw einer davon abgeleiteten) die Größe ändern.

    Mit welcher Funktion mache ich das ?

    Matthias



  • ? Meinst du das Fenster oder was? Wie willst du denn die Größe der Klasse verändern?!

    Naja ... wäre halt SetWindowPos ...



  • (D)Evil schrieb:

    ? Meinst du das Fenster oder was? Wie willst du denn die Größe der Klasse verändern?!
    Naja ... wäre halt SetWindowPos ...

    Ne nicht das Fenster, sondern das Cstatic Element in dem Fenster.

    Matthias



  • pospiech schrieb:

    (D)Evil schrieb:

    ? Meinst du das Fenster oder was? Wie willst du denn die Größe der Klasse verändern?!
    Naja ... wäre halt SetWindowPos ...

    Ne nicht das Fenster, sondern das Cstatic Element in dem Fenster.

    Matthias

    Hihi. Das ist ja fast so lustig wie das "Volume Empty is full" vom AMIGA OS 😃
    Sorry. Zu deiner Info: ein Windows-Control (Button, Edit, ... und eben auch ein "Static") IST ein Fenster.

    Die Frage war also denke ich ob du die "Fenstergrösse" (sichtbare Grösse, Grösse am Bildschirm) des Controls (welches ja ein Fenster ist) ändern willst, oder etwas anderes wie z.B. sizeof(CStatic). Ersteres geht wie schon gesagt wurde über SetWindowPos, letzteres (sizeof(CStatic) ändern) geht garnicht.



  • //::MoveWindow(HWND, UINT, UINT, UINT, UINT, BOOL);
    ::MoveWindow(m_StaticHandle, uiLeft, uiTop, uiWide, uiHeight, true);
    


  • CRect rc;
    	m_WndPicture.GetWindowRect(rc);
    	ScreenToClient(rc);
    	::MoveWindow(m_WndPicture, rc.left, rc.top, 255, 255, true);
    

    funktioniert. Allerdings hätte ich die Frage ob das nun MFC oder WinAPI Code ist, und wie müsste ich es machen um das ganze aus der Klasse zu der m_WndPicture gehört zu machen? Denn dann kenne ich den Handle ja gerade nicht?

    Matthias



  • Hmm warum nimmst du nicht SetWindowPos ?
    Aja zu deiner Frage ... musst halt von der Klasse von CStatic eine Klasse ableiten ... und da kannst du dann bsw eine Funktion einfügen ... da CStatic von CWnd abgeleitet ist, kannst du so auf alle CWnd Funktionen zugreifen.

    class CMyStatic : public CStatic 
    {
    // usw..
    public:
        void Resize(const unsigned short, const unsigned short);
    // usw.
    };
    
    void CMyStatic::Resize(const unsigned short width, const unsigned short height)
    {
        SetWindowPos(NULL, 0, 0, width, height, SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER);
    }
    

    oder halt einfach:

    m_WndPicture.SetWindowPos(NULL, 0, 0, 255, 255, SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER);
    

    Referenz
    CWnd::SetWindowPos


Log in to reply