Rahmen von BMax-Fenstern entfernen
Übersicht

![]() |
Lord StweccysBetreff: Rahmen von BMax-Fenstern entfernen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Für BlitzBasic gibt es bekanntlich BBSys.dll, aber das gibts halt nur für BB und ist ziemlich fett. mit vielen Funktionen, die man vielleicht nicht für sein Projekt braucht. Was also tun, wenn wenn einen dieser Rahmen um ein Fenster nervt, oder man gerne einen anderen hätte. (Z.B. einen, der Vergrößerbar ist). Alle diese Probleme gehören nun der Vergangenheit an, denn ich habe eine (simple) Lösung für dieses Problem gefunden. (Diese Lösung ist ersteinmal für OpenGl+Win32. Zusätzlich benötigt ihr MingW und am besten C-Kentnisse)
So gehts: Bmax-Ordner öffnen -> Mod -> brl.mod -> glgraphics.mod Nun erscheinen euch viele Dateien, doch nur zwei müssen wir verändern: glgraphics.win32.c und glgraphics.bmx Nehmt euch zuerst glgraphics.win32.c, in einen Editor eurer Wahl öffnen, die Folgende Funktion finden und so bearbeiten: Code: BBGLContext *bbGLGraphicsCreateGraphics( int width,int height,int depth,int hertz,int flags ){
BBGLContext *context; int mode; HDC hdc; HWND hwnd; HGLRC hglrc; long pf; PIXELFORMATDESCRIPTOR pfd; int hwnd_style; RECT rect={0,0,width,height}; _initWndClass(); if( depth ){ mode=MODE_DISPLAY; hwnd_style=WS_POPUP; }else{ HWND desktop = GetDesktopWindow(); RECT desktopRect; GetWindowRect(desktop, &desktopRect); rect.left=desktopRect.right/2-width/2; rect.top=desktopRect.bottom/2-height/2; rect.right=rect.left+width; rect.bottom=rect.top+height; mode=MODE_WINDOW; hwnd_style=hwnd_style_lord; //das ist neu } AdjustWindowRectEx( &rect,hwnd_style,0,0 ); ... //den Rest schreibe ich hier nicht hin... Den Anfang der C-Datei nun "int hwnd_style_lord=WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX;" schreiben. Ungefähr hier hin: Code: extern int _bbusew; static const char *CLASS_NAME="BlitzMax GLGraphics"; static const wchar_t *CLASS_NAMEW=L"BlitzMax GLGraphics"; int hwnd_style_lord = WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX; //hier ist es^^ typedef struct BBGLContext BBGLContext; struct BBGLContext{ BBGLContext *succ; int mode,width,height,depth,hertz,flags; HDC hdc; HWND hwnd; HGLRC hglrc; }; //... hier gehts noch weiter Ach ja: Für diese Änderung müsst ihr MingW32 auf eurem Computer haben. Und wenn ihr nicht wisst, ob ihr diese Datei richtig verändert, lasst es besser bleiben! BMax neuinstallieren macht nicht viel Spaß. ![]() Übrigens müsst ihr die Varibale hwnd_style_lord nicht so nennen. Ihr könnt sie auch hwnd_style_keks oder so nennen, dann müsst ihr aber jedes Auftreten dieser Variable entsprechd anpassen. Weiter im Text: Die Folgende Funtion müsst ihr einfügen um die Änderung von BM anzusprechen: Code: void bbSetHwndStyle(int new_hwnd_style){
hwnd_style_lord=new_hwnd_style; } Jetzt schließen wir diese Datei und kümmern uns um glgraphics.bmx: Den Teil einfach anpassen: Code: Extern
Function bbGLGraphicsShareContexts() Function bbGLGraphicsGraphicsModes( buf:Byte Ptr,size ) Function bbGLGraphicsAttachGraphics( widget,flags ) Function bbGLGraphicsCreateGraphics( width,height,depth,hertz,flags ) Function bbGLGraphicsGetSettings( context,width Var,height Var,depth Var,hertz Var,flags Var ) Function bbGLGraphicsClose( context ) Function bbGLGraphicsSetGraphics( context ) Function bbGLGraphicsFlip( sync ) Function bbSetHwndStyle( style ) End Extern Public Function lord_SetHwndStyle(style:Int) bbSetHwndStyle(style) End Function Jetzt auch schließen, die Module neu kompilieren und: Tada. Das folgende Programm zeigt euch nun die Änderung: BlitzMax:
Fertig. Ich hoffe das Tut war einigermaßen verständlich. Kommtentare sind natürlich erwünscht. Falls ihr etwas nicht versteht, oder etwas einfach nur blöd geschrieben ist: Hier reinschreiben. ![]() Mfg Lord Stweccys |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group