Fenster Close Button abfragen
Übersicht

![]() |
EPSBetreff: Fenster Close Button abfragen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi zusammen,
Es gibt ja die Möglichkeit den CloseButton am BlitzBasic Fenster inaktiv zu schalten. Ich hätte es aber gerne so das der Button aktiv bleibt und ich erfasse wann er betätigt wurde um dann einen Requester zu bringen der abfragt ob beendet werden soll oder nicht - in Abhängigkeit vom Programm, also nicht über Apptitle() Kann man das irgendwie abfragen? Ich hoffe das war halbwegs verständlich. Vielen Dank schonmal. |
||
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier
Man kann sich öfter als zweimal im Leben halb tot lachen. |
FBI-blitz |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielleicht mit Dlls!
Bin mir aber auch nicht sicher! |
||
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+ Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+ |
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
http://www.blitzbasic.co.nz/co...p?code=831 Sowas in der Art? grüße |
||
![]() |
EPS |
![]() Antworten mit Zitat ![]() |
---|---|---|
@FBI-Blitz - naja, ich denke mal wenn dann mit DLL - nur wie - das ist die Frage
@David - wenn du helfen möchtest, sei so gut, lies dir die Frage bitte auch durch. Ich mag es nicht wenn Leute eine Frage nicht erfassen und die Frage selbst als Antwort schreiben. noch ein paar Ideen vielleicht? |
||
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier
Man kann sich öfter als zweimal im Leben halb tot lachen. |
SebastianB |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
so weit ich weiß, geht das mit der Blitzsys-dll. Aber sonst glaube ich müsstest du mit Events arbeiten und das geht mit Blitz3D nicht. MfG Sebastian |
||
Never change a running system |
![]() |
EPS |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmm, also in der Beschreibung zur BlitzSys hab ich nix dergeleichen gefunden.
Danke trotzdem, weitere Vorschläge? |
||
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier
Man kann sich öfter als zweimal im Leben halb tot lachen. |
SebastianB |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
so ichs hab's nochmal nachgeschaut. Die Funktion heißt DLLFindBlitzRuntimeHwnd(sAppName$,[sClosePrompt$]). Für sClosePrompt$ gibst du deine Meldung ein, wenn jemand das Fenster schließt. Wenn du mir nicht glaubst: Du kannst ja in der Hilfe von BlitzSys nachgucken. MfG Sebastian |
||
Never change a running system |
Apocalyptic |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich glaube mich zu erinnern, dass diese Funktion auch nur den "AppTitle-Requester" benutzt...
[Edit]: Jepp, ich hatte recht:BlitzBasic: [AUSKLAPPEN] Function DLLFindBlitzRuntimeHwnd(sAppName$,sClosePrompt$ = \"\") Die Möglichkeit, diesen Button abzufragen, habe ich früher auch gesucht. Aber ich habe keine für B2D gefunden, so dass ich einfach eine eigene Gui geschrieben habe und den Windowsrahmen mit der BlitzSys.dll entfernt habe. |
||
Suum cuique
[ www.ffs-net.de.vu ] [ Raycaster ] |
![]() |
EPS |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja...ich dachte mir schon das das nicht so direkt geht.
Das Erzeugen eines einfachen Abfragefensters kann man halt auch per Apptitle machen. Aber das ist es ja nicht was ich möchte. Bleibt mir wohl nix anderes übrig als die Lösung mit der verborgenen Titelleiste. Vielen Dank trotzdem. |
||
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier
Man kann sich öfter als zweimal im Leben halb tot lachen. |
![]() |
Sebastian |
![]() Antworten mit Zitat ![]() |
---|---|---|
EPS hat Folgendes geschrieben: Bleibt mir wohl nix anderes übrig als die Lösung mit der verborgenen Titelleiste. Nicht unbeding .... Ich glaube man könnte mit C# ne kleine Dll Coden mit der sowas geht. Wenn ich Zeit hab (was äußerst unwarscheinlich ist) werd ich mich vielleicht mal dran versuchen ..... |
||
Seit 2 Jahren kein BlitzBasic und kein Windows mehr, und stolz darauf ! |
![]() |
EPS |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmm, das wäre prima, zu schade das du keine Zeit hast...nimm dir doch mal Zeit
B I T T E .......... ![]() |
||
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier
Man kann sich öfter als zweimal im Leben halb tot lachen. |
![]() |
Sebastian |
![]() Antworten mit Zitat ![]() |
---|---|---|
Na wenn man so lieb fragt :
Zitat: #include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { MSG msg; HWND hWnd; WNDCLASS wc; const char szAppName[] = "Symenu buttons"; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hbrBackground = (HBRUSH) GetStockObject(LTGRAY_BRUSH); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hInstance = hInstance; wc.lpfnWndProc = WndProc; wc.lpszClassName = szAppName; wc.lpszMenuName = NULL; wc.style = CS_HREDRAW | CS_VREDRAW; RegisterClass(&wc); hWnd = CreateWindow( szAppName, szAppName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 300, 60, NULL, NULL, hInstance, NULL); ShowWindow(hWnd, iCmdShow); UpdateWindow(hWnd); while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { static HWND hButton; switch (message) { case WM_CREATE: { hButton = CreateWindow( "button", "Beenden", WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hWnd, NULL, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); return 0; } case WM_SIZE: { MoveWindow(hButton, LOWORD(lParam) / 2 - 80, HIWORD(lParam) - 30, 160, 22, TRUE); return 0; } case WM_COMMAND: { if (lParam == (LPARAM)hButton) { if (HIWORD(wParam) == BN_CLICKED) SendMessage(hWnd, WM_CLOSE, 0, 0); } return 0; } case WM_SYSCOMMAND : { if(wParam == SC_CLOSE) { MessageBox(hWnd,"Hey,Someone closes me !!","What are you doing ??",MB_OK); return 0; } else return DefWindowProc(hWnd, message, wParam, lParam); } case WM_DESTROY: { PostQuitMessage(0); return 0; } } return DefWindowProc(hWnd, message, wParam, lParam); } Erst mal das Grundprinzip .... Ich hab meinen ersten WinAIP-cpp-Source enstsprechend frisirt. Man muss die WM_SYSMENU-Nachricht abfangen und checken ob sie SC_CLOSE als wParam hat. Jetzt muss ich nur noch ne Dll proggen die sich diese nachricht vom BB-Window krallt und auswerted. @ESP : Hast recht C++ ist sowieso einfacher als meine Gedichtinterpretation für Deutsch. ![]() |
||
Seit 2 Jahren kein BlitzBasic und kein Windows mehr, und stolz darauf ! |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi!
Also theoretisch müsste man es so lösen, das man eine eigene CallBack-Funktion schreibt, die dann das Close-Event abfängt, alles andere jedoch an die Blitz3D-CallBack-Funktion weiterleitet. Das WindowHandle(hWnd) kann man einfach per hWnd = Int(SystemProperty$("AppHWND")) herausfinden. Weiterhin ist BlitzSys veraltet. Ist jetzt alles auch direkt mit Blitz machbar. mfg olli |
||
vertex.dreamfall.at | GitHub |
![]() |
Sebastian |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gennau !!
Das könnte so aussehen : Zitat: EXPORT int CALLBACK GetSysmenuState(HWND hWnd) { MSG msg; GetMessage(&msg,hWnd,0,0); /* Wir zapfen die MSG-Queue an */ if(msg.message = WM_SYSCOMMAND){ /* Wir nehmen nur SYSCOMMANDs */ if (msg.wParam = SC_CLOSE) /* Wir kucken ob es SC_CLOSE ist */ return 1; } else /* und geben den rest zurück */ CallWindowProc((WNDPROC) GetWindowLong(hWnd,GWL_WNDPROC),hWnd,msg.message,msg.wParam,msg.lParam); return 0; } Ich glaube aber dass ich mir über dir Parameter von GetMessage auch nur die SYSCOMMANDS hole kann. Dann spar ich mir den CallWindowProc .... Aber Zunächs mal : Es ist scheißlam und funct nicht immer ...... Irgentwie nicht ganz das wahre! lol ! @Vertex : der Ansatzt ist gut oder ????? |
||
Seit 2 Jahren kein BlitzBasic und kein Windows mehr, und stolz darauf ! |
![]() |
EPS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi, na ist doch schon mal klasse das es einen Ansatz gibt - oder ist das schon ne Lösung???
Kann man das mal irgendwie so zusammenfassen das ichs kapiere bzw. in Blitz nutzen kann? Ich wäre euch sehr verbunden - DANKE |
||
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier
Man kann sich öfter als zweimal im Leben halb tot lachen. |
![]() |
Sebastian |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist (k)eine Lösung ......
Die ganze ist noch nicht ganz ausgereift ..... Ich konnte gestern nichts machen da ich auf ner kleinen LAN-Party war (ist schon toll wenn man als einzer im Dorf nen 100mbit Switch zu hause hat). Ich schätze das ich in den nächsten paar tagen was escheites basteln kann. (Setz meine Fortschritte hier in den Thread) |
||
Seit 2 Jahren kein BlitzBasic und kein Windows mehr, und stolz darauf ! |
![]() |
EPS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Prima, ich danke dir. Es eilt ja auch nicht, wäre aber toll wenn du da dran bleibst, könnte ja auch für andere interessant sein.
Also: DANKE |
||
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier
Man kann sich öfter als zweimal im Leben halb tot lachen. |
![]() |
Sebastian |
![]() Antworten mit Zitat ![]() |
---|---|---|
Folgendes Problem :
Wenn GetMessage eine leere Message-warteschleife für das Window findet wartet es bis eine Message ankommt ...... So lange kann die Dll-function aber nicht brauchen !!! Gibst da Alternativen ?????? Ich google mal ....... |
||
Seit 2 Jahren kein BlitzBasic und kein Windows mehr, und stolz darauf ! |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Unlike GetMessage, the PeekMessage function does not wait for a message to be posted before returning.
|
||
vertex.dreamfall.at | GitHub |
![]() |
Sebastian |
![]() Antworten mit Zitat ![]() |
---|---|---|
ALso ich hab mir mal was aus den Fingern gesaugt :
BlitzBasic: [AUSKLAPPEN] Das ist keine Lösung sondern nur ein einfacher Ansatz um meine Fortschritte zu ziegen .... Ich denke nächste woche um die Zeit hab ich die fertige Dll online ! |
||
Seit 2 Jahren kein BlitzBasic und kein Windows mehr, und stolz darauf ! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group