Kann man Größenänderungen von Fenstern verbieten?



  • ich hab mal wieder ne blöde anfängerfrage: wie kann ich größenänderungen eines fensters durch benutzer verhindern? also ich will einfach ein fenster haben, dass eine feste größe hat, die keiner verändern kann.

    ich hoffe mir kann da wer nen tip geben. im msdn finde ich mich einfach nicht zurecht. hab grad ca. ne stunde nach einer simplen WINAPI-dokumentation gesucht und dann aufgegeben. wenn ich per suchbegriff was suche lande ich entweder bei technischen artikeln, die zu speziell sind oder bei winapi für windows ce 🙄 und dieses toc folgt einer ganz eigenen logik, wie ich finde. bin ich vielleicht einfach nur zu doof oder haben die microsoftler die WINAPI-dokumentation wirklich hinterhältig fies auf ihrer seite versteckt? das es keine gibt kann ich eigentlich nicht glauben.

    wäre toll, wenn mir jemand helfen kann

    mfg & danke



  • Ja, irgendwie haben die was gerdreht, dass google das nicht mehr so gut findet. such mal direkt in der msdn nach CreateWindow, vlt. gibts n Falg das man setzn muss. Oder du fängst WM_MOVE (oder wie das heißt) ab und setzt die Fenstergröße zurück.



  • Nimm einfach als Window Styles nicht WS_OVERLAPPEDWINDOW sondern selber zusammenschustern:
    WS_BORDER|WS_SYSMENU|WS_MINIMIZEBOX

    Tipp:
    Wenn du das Platform SDK runtergeladen hast sind dort alle WinAPI-Funktionen etc. in der Hilfe-Datei drin und auch via Index schnell auffindbar.



  • warum kommt die frage in allen foren? 😉

    Naja... geh mal auf http://www.catch22.net/tuts/tips.asp#PreventResize ...



  • geeky schrieb:

    Nimm einfach als Window Styles nicht WS_OVERLAPPEDWINDOW sondern selber zusammenschustern:
    WS_BORDER|WS_SYSMENU|WS_MINIMIZEBOX
    ...

    super! genauso sollte das sein. vielen dank 🙂



  • kann man aus dem zusammengesetzten WS_OVERLAPPEDWINDOW flag mit dem binären "XOR" irgendwie das ungewünschte flag rausnehmen? sowas wie WS_OVERLAPPEDWINDOW^WSMINIMIZEBOX oder was auch immer man da entfernen möchte... wäre doch weniger schreibaufwand odr?


  • Mod

    Du kannt wie schon geschrieben den Stil des Randes ändern auf z.B. Dialog Frame.

    Du kannst WM_GETMINMAXINFO abfangen und entsprechend bearbeiten.

    Oder WM_NCHITTEST für die entsprechenden Bereiche die für die Größenänderung notwendig sind als HTNOWHERE zurückgeben.



  • Naja ... ~(WS_MINIMIZEBOX) sollte in dem Fall NICHT Funktionieren... aber warum gibst du nicht einfach das als was WS_OVERLAPPEDWINDOW definiert ist an und nimmst eifach die von dir nicht erwünschten Sachen raus?



  • ~WS_MINIMIZEBOX ? ja, sicher würde es damit nicht gehen, was soll des auch bedeuten? alle 32 bits ausser dem für minimizebox auf true setzen? wozu soll sowas auch gut sein...

    ich hab eigentlich sowas gemeint:

    MessageBox(NULL, "Bla", "bla", (MB_OK|MB_ICONERROR)^MB_ICONERROR);
    

    MB_OK|MB_ICONERROR representieren hier den zusammengesetzten flag,
    ^MB_ICONERROR ist dann das unerwünschte flag, das rausgenommen werden soll


Anmelden zum Antworten