![]() |
Anzeige:
|
|
|||||||
| C/C++, Visual C++, Visual C++.NET Fragen und Antworten zu C/C++, Visual C++ und Visual C++.NET |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Gast
Beiträge: n/a
|
Hallo Jungs!
Ich suche gerade schon wieder ein paar Stündche nach einer Möglichkeit zur Laufzeit die Schaltflächen z.B. "Minimieren", "Maximieren" und "Close" auszublenden. Ich kann zwar mit GetSystemMenu(...) einen Zeiger auf das Systemmenü abholen - ich glaube jedenfalls das das so geht, das Systemmenü aber nicht ändern. Wie und wo könnte das gehen?! Benni |
|
|
|
|
#2 (Direktlink) |
|
Dauergast
![]() Registriert seit: 06.05.2004
Ort: Düsseldorf
Beiträge: 1.672
|
Bei CreateWindow, CreateWindowEx und SetWindowLong kann man das als Parameter angeben.
|
|
|
|
|
|
#3 (Direktlink) |
|
Gast
Beiträge: n/a
|
.... alles was sich ändert ist aber leider mein Standartmenü. Ich gehe doch recht in der Annahme, daß das ding ganz da oben Systemmenü heißt - oder? Wie heißen denn die Switches, die zum ein/ausschalten benötigt werden. In der hilfe konnte ich immer nur finden wie man entsprechende Messages abfängt....
Außerdem möchte ich eigentlich kein neues Fenster Createn sondern ein bestehendes Ändern. Könnte ich da mal einen funktionierenden Codeschnipsel von irgendwem bekommen? Naja - vieleicht etwas übertriebene Ansprüche Benni |
|
|
|
#4 (Direktlink) |
|
Gast
Beiträge: n/a
|
.... alles was sich ändert ist aber leider mein Standartmenü. Ich gehe doch recht in der Annahme, daß das ding ganz da oben Systemmenü heißt - oder? Wie heißen denn die Switches, die zum ein/ausschalten benötigt werden. In der hilfe konnte ich immer nur finden wie man entsprechende Messages abfängt....
Außerdem möchte ich eigentlich kein neues Fenster Createn sondern ein bestehendes Ändern. Könnte ich da mal einen funktionierenden Codeschnipsel von irgendwem bekommen? Naja - vieleicht etwas übertriebene Ansprüche Benni |
|
|
|
#5 (Direktlink) |
|
Dauergast
![]() Registriert seit: 06.05.2004
Ort: Düsseldorf
Beiträge: 1.672
|
Systemmenü ist genau genommen das, was du entweder mit einem Rechtsklick auf der Windows Taskleiste aufrufst oder durch einen Linksklick oben Links auf das Symbol des Fensters.
Die gesamte Leiste oben ist die Titelleiste/Title Bar, schau dir das mit Setwindowlong nochmal an, schau da besonders nach folgendem: WS_EX_TOOLWINDOW, WS_MAXIMIZEBOX ,WS_MINIMIZEBOX |
|
|
|
|
|
|
#6 (Direktlink) |
|
Gast
Beiträge: n/a
|
Danke erstmal für deine Unterstützung. Mit Set-/GetWindowLong() habe ich schonmal den aktuellen Stil "herausladen" können (256).
Ich denke jetzt müsste ich Ihn um WS_MAXIMIZEBOX verringern. Das würde ich so tun: style^=WS_MAXIMIZEBOX; oder so: style-=WS_MAXIMIZEBOX; Das geht aber nicht, weil dann style negativ wird und das fenstern "andersherum" angezeigt wird. Teils sogar Spiegelbildlich (Sieht sehr cool aus!). Es sind immer diese doofen details, die ewig aufhalten!!! Benni |
|
|
|
#7 (Direktlink) |
|
Dauergast
![]() Registriert seit: 06.05.2004
Ort: Düsseldorf
Beiträge: 1.672
|
hmmmh
war das nicht Style &= ~(WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_SYSMENU); |
|
|
|
|
|
#8 (Direktlink) |
|
Gast
Beiträge: n/a
|
Hallo lastwebpage!
Gestern ist es mir dann doch noch geglückt das Fenster entsprechend meiner Vorstellungen zu modifizieren. Die Syntax ist so: Code:
long style=GetWindowLong(pMainFrame->m_hWnd,GWL_STYLE); style^=(WS_MINIMIZEBOX|WS_MAXIMIZEBOX); SetWindowLong(pMainFrame->m_hWnd,style); Dann muß der Stil nur noch gesetzt werden. Wichtig ist natürlich - das habe ich erst falsch gemacht, dass man nicht versucht einen EX_STYLE von einem STYLE zu subtrahieren. Das würde nur so funktionieren: Code:
long exstyle=GetWindowLong(pMainFrame->m_hWnd,GWL_EXSTYLE); exstyle^=(irgendeinEX_Style); SetWindowLong(pMainFrame->m_hWnd,exstyle); Benni |
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|