Frage zu editboxen



  • Hi Leute! Ich arbeite grade mit ner mehrzeiligen Editbox. Jetz hab ich folgendes problem, wenn ich mein Hauptfenster größer machen will, will ich, dass die Editbox auch größer wird. Das realisiere ich bisher so:

    case WM_SIZE:
            {
                GetClientRect(hWnd, &EditRect);
                EditRect.bottom -=5;
                EditRect.right -=5;
                SendDlgItemMessage(hWnd, IDC_TEXT, EM_SETRECT, 0, (LPARAM)(LONG) &EditRect);
    
            }break;
    

    allerdings änbdert er dann nicht die größe des aussehens der Editbox, sondern nur die größe, in den ich schreiben kann. (DIe Visuelle Grösse bleibt gleich)
    am besten ich lad mal ne version hoch, damit ihrs sehen könnt... link gibts später...
    Vielleicht hat ja jemand ne idee...

    mfg

    Hier ist der Link: *klick**klick*

    [ Dieser Beitrag wurde am 11.05.2003 um 11:55 Uhr von mrchat editiert. ]



  • Guck dir mal SetWindowPos(); in der MSDN an.



  • k. allerdings hab ich das ding als dialogbox in vc++ gemacht-> ich hab das Handle davon net.. oder krieg ich das irgendwie raus?? wäre natü+rlich cool

    dann würde es nämlich klappen

    mfg



  • GetDlgItem
    Verschoben nach WinAPI.



  • thx...

    getestet -> geht immer noch ned :-(((

    hilfeeee 😞
    mfg



  • Zeig Code.



  • hab ich net hier.... habsch aufm laptop und der is oben...
    im mom bin ich zu faul hoch zu laufen :p

    also wenn ich wieder oben bin, dann werd ich mir ne diskette schnappen und den code dann posten

    bis dann



  • hey, dein Privatleben hat hier nichts zu suchen. 🙄 🙄



  • Fauler Sack, du 🙂 :p



  • Original erstellt von dEUs:
    Fauler Sack, du 🙂 :p

    jepp ich weiß..

    hier der code:

    #include <windows.h>
    #include <windowsx.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include "resource.h"
    
    RECT EditRect;
    HINSTANCE g_hInstance;
    
    BOOL CALLBACK DlgProcInfo(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
    {
        switch(Msg)
        {
        case WM_CREATE:
            {
            }break;
        case WM_COMMAND:
            {
                switch(LOWORD(wParam))
                {
                case IDCLOSE:
                    {
                        SendMessage(hWnd, WM_CLOSE, 0, 0);
                    }break;
                }
            }break;
        case WM_CLOSE:
            {
                EndDialog(hWnd, FALSE);
            }break;
        }
    
        return FALSE;
    }
    
    BOOL CALLBACK DlgProcMain(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
    {
        switch(Msg)
        {
        case WM_CREATE:
            {
                GetClientRect(hWnd, &EditRect);
                EditRect.bottom -=5;
                EditRect.right -=5;
                SendDlgItemMessage(hWnd, IDC_TEXT, EM_SETRECT, 0, (LPARAM)(LONG) &EditRect);
                HWND eb_hWnd=GetDlgItem(hWnd, IDC_TEXT);
                SetWindowPos(eb_hWnd, HWND_TOP, 0, 0, 10, 10, SWP_SHOWWINDOW);
            }break;
        case WM_COMMAND:
            {
                switch(LOWORD(wParam))
                {
                case IDC_FILE_EXIT:
                    {
                        SendMessage(hWnd, WM_CLOSE, 0, 0);
                    }break;
                case IDC_FILE_NEW:
                case IDC_FILE_SAVE:
                case IDC_FILE_LOAD:
                case IDC_FILE_PRINT:
                    {
                        MessageBox(hWnd, "Diese Funktion steht momentan nicht zur Verfügung.", "Hinweis", MB_ICONINFORMATION);
                    }break;
                case IDC_HELP_INFO:
                    {
                        DialogBox(g_hInstance,MAKEINTRESOURCE(IDD_INFO), hWnd, DlgProcInfo);
                    }break;
                }
            }break;
        case WM_CLOSE:
            {
                EndDialog(hWnd, FALSE);
            }break;
        case WM_SIZE:
            {
                GetClientRect(hWnd, &EditRect);
                EditRect.bottom -=5;  //Wegen Scrollbalken
                EditRect.right -=5;   //wegen Scrollbalken
                SendDlgItemMessage(hWnd, IDC_TEXT, EM_SETRECT, 0, (LPARAM)(LONG) &EditRect);
    
                RECT test;
                SendDlgItemMessage(hWnd, IDC_TEXT, EM_GETRECT, 0, (LPARAM)(LONG)&test);
                //char buffer[256];
                //sprintf(buffer, "b:%d, l:%d, r:%d, t:%d", test.bottom, test.left, test.right, test.top);
                //MessageBox(hWnd, buffer, "", NULL);
            }break;
        }
        return FALSE;
    }
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    {
        g_hInstance = hInstance;
        DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, DlgProcMain);
        return FALSE;
    }
    

    viel spaß dabei :p

    mfg



  • Eigentlich solltest du den Code posten, mit dem es nicht funktioniert hat.
    Naja, egal schreib mal folgendes in den WM_SIZE-Zweig:

    GetClientRect(hWnd, &EditRect);
    EditRect.bottom -=5;  //Wegen Scrollbalken
    EditRect.right -=5;   //wegen Scrollbalken
    SetWindowPos(GetDlgItem(hWnd, IDC_TEXT), 0, 0, 0, EditRect.right-EditRect.left, EditRect.bottom-EditRect-top, SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER);
    


  • ich hab auch beim coden nen kleinen fehler gehabt.. sorry *zwinker* aber in deiner anweisung sind auch nen paar fehler drinne...

    ich kompiliers grad ma.. moment.. (nach verbesserung deiner kleinen fehler)
    und... ja es geht 🙂

    thx für die hilfe 🙂


Anmelden zum Antworten