Problem mit SetWindowLong



  • Hi Leudde!
    Ich habe ein kleines Problem, und zwar will ich folgendes machen:

    SetWindowLong(Edit[0], GWL_STYLE, WS_HSCROLL | WS_VSCROLL );
    

    warum geht das nicht? Bei mir kann man den Edit[0] dann gar nicht mehr sehehn, wenn ich das setze 😞 .. .was mache ich falsch??

    code_pilot 😕



  • Mit SetWindowLong ersetzt du die Styles, deshalb musst du WS_CHILD und WS_VISIBLE auch noch mit reinschreiben.

    cya



  • Original erstellt von MagiC Creator:
    **Mit SetWindowLong ersetzt du die Styles, deshalb musst du WS_CHILD und WS_VISIBLE auch noch mit reinschreiben.
    **

    Nein, funzt leider nicht.

    SetWindowLong(Edit[0], GWL_STYLE, WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL );
    

    Das Editcontrol ist zwar jetzt sichtbar, aber die Scrollbalken sind immernoch nicht da, auch wenn ich Text eingebe. Gibt's da noch ne andere Lösung????

    Gruss, code_pilot 🙄

    PS: Es handelt sich um ein ES_MULTILINE Edit...

    [ Dieser Beitrag wurde am 22.12.2002 um 13:53 Uhr von code_pilot editiert. ]



  • Um die Styles zu updaten, musst du noch SetWindowPos aufrufen.

    SetWindowPos(hWindow, NULL, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);
    


  • Original erstellt von <Trolli>:
    **Um die Styles zu updaten, musst du noch SetWindowPos aufrufen.
    **

    Nein geht immer noch nicht *heul* gibt's da noch ne Möglichkeit die ich ausprobieren kann??? ... typisch Microsoft, nie funktioniert was...

    code_pilot



  • Also wenn du das wirklich so:

    SetWindowLong(Edit[0], GWL_STYLE, WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL );
    

    machst, ist das ES_MULTILINE Style dannach weg. Das muss also mindestens auch noch darein. 🙂



  • Original erstellt von <Trolli>:
    **Also wenn du das wirklich so:

    [cpp]
    ... Das muss also mindestens auch noch darein. :)**

    ok. Da steht jetzt:

    [code type="C++" tabs="4"]
    SetWindowLong(Edit[0], GWL_STYLE, WS_CHILD | WS_VISIBLE | ES_MULTILINE | WS_HSCROLL | WS_VSCROLL );[/cpp]

    Das Ergebnis ist immernoch dasselbe: Es passiert rein gar nichts!!!! Und das Feld ist immer ES_MULTILINE, auch wenn ich es da raus lasse ... *heuuuuuullll*

    code_pilot 😡

    [ Dieser Beitrag wurde am 22.12.2002 um 14:33 Uhr von code_pilot editiert. ]



  • Original erstellt von <Trolli>:
    **
    ... Das muss also mindestens auch noch darein. :)**

    ok. Da steht jetzt:

    SetWindowLong(Edit[0], GWL_STYLE, WS_CHILD | WS_VISIBLE | ES_MULTILINE | WS_HSCROLL | WS_VSCROLL );
    

    Das Ergebnis ist immernoch dasselbe: Es passiert rein gar nichts!!!! Und das Feld ist immer ES_MULTILINE, auch wenn ich es da raus lasse ... *heuuuuuullll*

    code_pilot 😡

    [ Dieser Beitrag wurde am 22.12.2002 um 14:35 Uhr von code_pilot editiert. ]



  • Hatte es gerade ausprobiert und auch nicht hinbekommen. Ich glaube das funktioniert auch nicht bei allen Controls und Styles.



  • Original erstellt von <Trolli>:
    Hatte es gerade ausprobiert und auch nicht hinbekommen. Ich glaube das funktioniert auch nicht bei allen Controls und Styles.

    hmmm naja vielleicht weiss ja jemand anderes die Antwort. Ich denke das geht schon, das muss gehen!



  • Cool, wenn man als Style noch WS_BORDER angibt, dann kriegt das Control die Scrollbar, aber funktionieren tut sie leider nicht :(...

    LRESULT CALLBACK MainProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
    {
        static HWND hEdit;
    
        switch(uMsg)
        {
    
        case WM_LBUTTONDOWN:
            {
                SetWindowLong(hEdit,GWL_STYLE,WS_CHILD | WS_VISIBLE | WS_BORDER | ES_MULTILINE | WS_VSCROLL | WS_HSCROLL);
                SetWindowPos(hEdit,HWND_TOP,5,5,220,220,SWP_SHOWWINDOW);
                return 0;
            } break;
    
        case WM_CREATE:
            {
                hEdit = CreateWindowEx(0,TEXT("edit"),0,WS_CHILD | WS_VISIBLE | WS_BORDER | ES_MULTILINE,5,5,200,200,hWnd,(HMENU) EDIT_ID,hInst,0);
                return 0;
            } break;
    
        case WM_DESTROY:
            {
                PostQuitMessage(0);
                return 0;
            } break;
    
        }
    
        return DefWindowProc(hWnd,uMsg,wParam,lParam);
    }
    

    cya 🙂


Anmelden zum Antworten