Visual C++ - Programmierung

  • Themenstarter Themenstarter youngProgrammer
  • Beginndatum Beginndatum
das man das layout vorher zeichnen muss ... und dann so eine Art Programm schreiben das eben den Fensterrahmen so zusagen verschwinden lässt !
Das ist nicht ganz richtig. Regions sind grob gesagt Bereiche auf dem Bildschirm, die nicht rechteckig sein müssen und in denen ein Fenster geclippt wird. Ich selbst habe noch nicht damit gearbeitet, kann aber jemanden fragen. Bis dahin kannst Du mal nach regions in der MSDN suchen und schauen, wieviel Du selbst herausfinden kannst.

Weichgezeichnete unregelmässige Fensterränder wie z.B. von WinAmp (optional) lassen sich meines Wissens nicht mit Regions machen; da muss man etwas mehr rumtricksen.
 
Habe mich schlaugemacht. Interessant sind: HRGN, CreateRectRgn(), CombineRgn(), DeleteObject(), SetWindowRgn(). (Rgn steht für Region!)

Hilft das weiter?
 
Und ob das hilft!

Bei der Suche nach Erklärungen dieser Funktionen im Internet bin ich doch tatsächlich auf die Seite http://www.flipcode.com/articles/article_win32skins.shtml gestoßen.

Da gibt es ein komplettes Tutorial zu dem Thema Skins.

Allerdings gibt es da gleich ein neues Problem:
Ich bevorzuge die MFC (jetzt weiß ich auch, warum das schlecht ist) und das Tutorial ist für die Programmierung einer Win32-Anwendung über die API.

Kann mir da jetzt einer helfen?

("Da musst du wohl die API verwenden" wäre schlecht, weil ich ein bereits geschriebenes 80KB großes Programm designen will und das könnte sich als schwierig erweisen...)
 
Zuletzt bearbeitet von einem Moderator:
Hier wirst Du geholfen! Freut mich.

API und MFC vertragen sich doch wunderbar. Probier's mal. Musst Dir vielleicht an ein paar Stellen den HWND von deinem Fenster holen ( this->GetSafeHwnd() ). An eine API-Funktion im globalen Namespace, die von Klassenmethoden verdeckt wird, kommst Du mit '::' dran (z.B. "::ShowWindow( this->GetSafeHwnd(), SW_SHOW );", USW, IIRC ).

Ich bevorzuge übrigens auch die MFC *rot werd*. Man wächst da halt so rein.
 
also, irgendwie klappt das immer noch nicht.

1. wo muss ich die sachen reinschreiben? OnCreate(), OnDraw()...?

2. ein erhebliches problem war bei mir wohl die fenstergröße.
ich weiß die genauen "maße" des programms nicht. wie bekomme ich die raus?

3. vielleicht brauch ich dummie erstmal ein kleines mfc-beispiel....:-)

danke schonmal
yp
 
Zuletzt bearbeitet von einem Moderator:
zu 1. Ich habe gerade mal einen einfachen Dialog mit 2 Buttons gebastelt. Im Handler von Btn1 wird eine Region gesetzt (mit SetWindowRgn()) und im Handler von Btn2 entfernt. Das klappt hervorragend. Du kannst vermutlich die Region irgendwann setzen; das Fenster merkt sie sich. Ob es bereits created sein muss, weiss ich nicht.
zu 2. Schon GetWindowRect() probiert?
zu 3. Mach dir eine einfache Dialoganwendung mit MFC und setz nur 2 Buttons rein, so wie ich. In die Buttonhandler kommen dann die RegionMe()/UnregionMe()-Sourcen (leicht modifiziert) von http://www.flipcode.com/articles/ar...in32skins.shtml (dein Link)
 
Danke, Danke, Danke!:)

Jetzt hats endlich geklappt. Übrigens keine schlechte Idee, das ganze erstmal mit einer einfachen Dialoganwendung zu versuchen.

Hätte von mir sein können. :rolleyes:
Wars aber nicht....
 
Zurück