[C++/MFC] Enable/Disable Dialogcontrols (Button, Editbox)

Dieses Thema [C++/MFC] Enable/Disable Dialogcontrols (Button, Editbox) im Forum "Windows XP Forum" wurde erstellt von Spagetti_Eis, 6. Feb. 2006.

Thema: [C++/MFC] Enable/Disable Dialogcontrols (Button, Editbox) Hallo zusammen, ich finde einfach nicht, wie ich z.B. eine Editbox oder einen Button in meinem Dialog disablen bzw....

  1. Hallo zusammen,

    ich finde einfach nicht, wie ich z.B. eine Editbox oder einen Button in meinem Dialog disablen bzw. enablen kann. Ich möchte in meinem Programm, wenn ich auf Button 1 geklickt habe Button 2 enablen (Button 2 hab ich bereits im Editor von Anfang an disabled).

    Muß ich dazu auf CWnd zurückgreifen? Da gibts ja diese Funktion EnableWindow, aber die enabled mir ja nur die Mausklicks und Eingaben für den gesamten Dialog.

    Wie greife ich aber auf meinem Button zu (ich hab schon die Membervariable m_button angelegt).

    Vielen Dank schon im Voraus
    IH
     
  2. Hab die Lösung (dank CodeFatal im tutorials Forum)!!!

    Einfach für jedes gewünschte Control eine eigene Membervariable (Control) anlegen und dann mit der public CWnd-Funktion EnableWindow() die Dinger enablen.

    z.B.
    Code:
    m_button.EnableWindow(TRUE);
    Bye
     
  3. Ja, Du musst daran denken, dass die Controls von CWnd abgeleitet sind; Du kannst also CWnd-Methoden benutzen.

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_hierarchy_chart.asp

    Was ich aber eigentlich sagen wollte:  Falls Du für die entsprechenden Controls keine Control-Variable anlegen willst (vielleicht, weil Du diese nur für eine/wenige Funktion benötigen würdest und Du viele Controls hast), kannst Du z.B. auch

    a)
    Dir lokal vom Parent-Window per CWnd::GetDlgItem:
    CWnd* pCtrlWnd= parent->GetDlgItem(nDlgItemID);
    einen Zeiger auf das Control holen und Methoden von CWnd verwenden, z.B.
    pCtrlWnd->EnableWindow(FALSE);
    Wenn Methoden des Controls verwendet werden sollen, die erst in der Schnittstelle des Controls eingeführt werden, muss man casten:
    CEdit* pEdit= (CEdit*) parent->GetDlgItem(ID_EDIT);
    pEdit->IrgendeineCEditMethode(...);

    Wenn Du das im Parent-Window selbst machst, kannst Du natürlich die eigenen CWnd-Methoden direkt verwenden (ohne Zeiger auf ein Parent):
    CWnd* pCtrlWnd= GetDlgItem(nDlgItemID);


    b)
    Dir das Handle des Parent-Windows holen, dann über die Windows-Funktion
    HWND GetDlgItem(HWND hDlg, int nDlgItemID);
    das Handle des Controls. Dann lassen sich mit diesem Handle als Parameter
    die entspr. Windows-Funktionen aufrufen, z.B.
    BOOL EnableWindow(HWND hWnd, BOOL bEnable);
     
Die Seite wird geladen...

[C++/MFC] Enable/Disable Dialogcontrols (Button, Editbox) - Ähnliche Themen

Forum Datum
[c++/MFC] Erfolgsmeldung in Kommandozeile ausgeben Windows XP Forum 11. Jan. 2006