Apifunktion CreateWindow() erzeugt MAV ?!?
Übersicht

flashmaxelBetreff: Apifunktion CreateWindow() erzeugt MAV ?!? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
Leider muss ich euch schon wieder mit einem Problem auf die Nerven gehen. ![]() Nachdem ich vor ein paar Tagen die WinApi richtig entdeckte kam mir die Idee, dass man um Windowsbuttons im Blitzfenster zu erzeugen gar keine extra Dll benötigt, da es die Funktion CreateWindowEx() in der user32.dll gibt, die ja sowiso jeder Windos-User haben sollte. Da Windows Buttons,Editfelder,... ja nichts anderes sind als Windows fenster nur einer andern Klasse angehören, ist das ja mit dieser Funktion machbar. Ich hab dann auch gleich begeistert die user32.decls von hier genommen und die Funktion verwendet. Genaue Funktionsbeschreibung findet ihr da : http://www.cpp-tutor.de/mfc/mf...ndowex.htm Blöderweise stellte sich dann raus das ich beim ausführen einen MAV erhalte ![]() Mein Code: (funktioniert natürlich nur mit der decls von oben im Userlibverzeichnis) Code: [AUSKLAPPEN] ;Gafikmodus/Titel setzten Graphics3D 800,600,0,2 title$="TestButtons" AppTitle title$ ;Blitz Fenster ermittlen bbHwnd= api_FindWindow("Blitz Runtime Class",title$) ;Style des Blitzfensters ermittlen style=api_GetWindowLong(bbHwnd,-16) ;Style des Blitzfenster setzen so das es auch childfenster haben kann api_SetWindowLong(bbHwnd,-16,style Or WS_CLIPCHILDREN) ;Dann die eigentliche Funktion aufrufen fenster=api_CreateWindowEx(0,"Button","Testbutton",WS_CHILD Or WS_VISIBLE,10,10,100,20,bbHwnd,101,0,0) Alles geht davon außer CreateWindowEx, das dann den MAV erzeugt. Seltsam ist das es hier im englischen Forum (beitrag weiter unten) nicht anders gemacht wurde allerdings scheint der irgendwie gegenagen zu sein (bei mir nicht ![]() Wenn einer weiß was ich falsch mache wäre es nett es zu posten ![]() Danke im Voraus, Max ! |
||
Real C programmers never die; they cast to void. |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hast du die Konstanten auch definiert für WS_CHILD und so?
Ich frage weil du oben direkt die Zahlenkonstanten nutzt ... |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
flashmaxel |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Oh danke für den Hinweis das hatte ich vergessen noch hinzuschreiben.Ich hatte die Definitionen aus dem englischen Thread einfach übernommen.
Code: [AUSKLAPPEN] Const WS_CHILD = $40000000
Const WS_MINIMIZE = $20000000 Const WS_VISIBLE = $10000000 Const WS_CLIPCHILDREN = $2000000 Const WS_BORDER = $800000 Const WS_TABSTOP = $10000 Const GWL_STYLE = -16 Const WS_EX_CLIENTEDGE = $200 Const WS_EX_LEFT = $00000000 Const ES_LEFT = 0 Const ES_CENTER = 1 Const ES_RIGHT = 2 Aber das hab ich in meinem Code gemacht also - daran lags nicht ![]() ![]() Ich mach das jetzt nochmal alles von vorne vieleicht hab ich mich ja irgednwo vertan. Wenn ihr noch einen Fehler entdeckt bitte sagts mir ![]() Danke Max |
||
Real C programmers never die; they cast to void. |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
etwas was mich am englischen stört ist: es liest mit get den style aus. Bei der Zuweisung verwendet es jedoch exStyle ... ich bin mir da nicht ganz sicher, dass dort dann einfach ein 0 hin muss und nicht eigentlich style oder sonst etwas sinnvolles ... Ansonsten hast du recht, dein Code ist identisch ...
Eine andere möglichkeit ist, ist das der Code mit B3D 1.8 funktioniert hat und mit der 1.98 halt so nimmer funktioniert weil einige Dinge hinzu gekommen sind. PS: Guck mal nach WinBlitz3D, wenn du dir die Mühe nicht selbst machen willst eine GUI reinzuwürgen ![]() |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
flashmaxel |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also der Style soll ja nicht überschrieben werden, es soll nur WS_CLIPCHILDREN hinzugefügt werden. Deswegen wird er erst abgefragt und dann wieder neu gesetzt, allerdings mit WS_CLIPCHILDREN. Ich denke, wie du sagtest, dass es an der Version liegt.
Ich würde übrigens sehr gerne Winblitz3D benutzen. Das war eigentlich von Anfang an geplant! Allerdings musste ich leider festellen, dass es damit Probleme gibt, wenn ich die Funktion SetWindowRgn aufrufe um das BlitzRuntimefenster zu maskieren, um es etwas stylischer wirken zu lasse ![]() ![]() Wenn einer vieleicht weiß wo der Fehler mit dem EditFeld liegt wäre es nett Vermutungen anzustellen ![]() Danke Max |
||
Real C programmers never die; they cast to void. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group