WinAPI - FlashWindowEx... [erledigt]

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

d-bug

Betreff: WinAPI - FlashWindowEx... [erledigt]

BeitragDi, Aug 21, 2007 17:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu Hülf, zu Hülf!!!!

Vielleicht bin ich ja total betriebsblind, aber irgendwie sehe ich den Grund für diese Fehlermeldung:
Code: [AUSKLAPPEN]
K:/Dev/___Code/___bak/.bmx/flashwindowex.bmx.gui.release.win32.x86.o(code+0x1f0): undefined reference to `FlashWindowEx@4'

bei folgendem Code nicht:
Code: [AUSKLAPPEN]
'fängt 10 sekunden nach start an zu flashen, wenns inaktiv ist
SuperStrict

Type FLASHWINFO
      Field cbSize:Int
      Field hwnd:Int
      Field dwFlags:Int
      Field uCount:Int
      Field dwTimeout:Int
   End Type

Const FLASHW_STOP:Int       = 0
Const FLASHW_CAPTION:Int    = 1
Const FLASHW_TRAY:Int       = 2
Const FLASHW_ALL:Int        = FLASHW_CAPTION | FLASHW_TRAY
Const FLASHW_TIMER:Int       = 4
Const FLASHW_TIMERNOFG:Int = 12


Extern "win32"
      Function FlashWindowEx:Int (FWInfo:Byte Ptr)="FlashWindowEx@4"
   End Extern


Function FlashWindow (gadget:Tgadget)
      Local FWinfo:FLASHWINFO = New FLASHWINFO
      FWInfo.cbSize = SizeOf(FWinfo)
      FWInfo.hwnd = QueryGadget (gadget, QUERY_HWND)
      FWInfo.dwFlags = FLASHW_ALL | FLASHW_TIMERNOFG
      FWInfo.uCount = 0
      FWInfo.dwTimeout = 0
      FlashWindowEx (FWInfo)
   End Function


'---------------------------------------------------------------- test

Local window:TGadget = CreateWindow ("Blink mich dusselig!!!", 200, 200, 500, 300)
Local a:Int=0
'FlashWindow( window )
Local timer:TTimer = CreateTimer(1)

Repeat
   Select WaitEvent ()
        Case EVENT_WINDOWCLOSE
            End
      Case EVENT_TIMERTICK
         a = a + 1
         If a = 10 Then
            FlashWindow(window)
         EndIf
     End Select
  Forever




cheers
  • Zuletzt bearbeitet von d-bug am Do, Aug 23, 2007 17:19, insgesamt 2-mal bearbeitet
 

Dreamora

BeitragDi, Aug 21, 2007 17:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Vermutlich gibts die Funktion einfach nicht in Win32 selbst sondern kommt über eine Zusatzlibrary von Windows.
In welcher DLL die von der WinAPI genutzt werden, sollte es denn sein?
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

d-bug

BeitragDi, Aug 21, 2007 17:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Nene, ist regulär in der User32.dll also nichts ungewöhnliches dran.
 

ChristianK

BeitragDi, Aug 21, 2007 17:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Meine Vermutung:
BlitzMax holt sich die Definitionen aus den Libs in BlitzMax/lib. In diesem Fall "libuser32.a". In der Datei ( ich hab nachgeschaut ) ist FlashWindowEx nicht definiert ( nur FlashWindow ). Scheint wohl einfach alt zu sein, die Datei.
Du musst dir wohl entweder eine neue Lib holen oder LoadLibrary benutzen.

Edit
Im neuen MinGW ist es mit drin.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT
 

Dreamora

BeitragDi, Aug 21, 2007 18:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Das heisst mit der kommenden BM Version sollts gehen Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

d-bug

BeitragDi, Aug 21, 2007 18:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Das heißt, wenn man nicht warten will tauscht man sie eben einfach so aus... Wink

Danke ProGamer.Coder, hat funktioniert... (Zumindest das Kompilieren)
 

Dreamora

BeitragDi, Aug 21, 2007 18:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist eine Möglichkeit, zumindest wenn man nicht vor hatte MaxGUI zu nutzen bis zum nächsten Release Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

d-bug

BeitragDi, Aug 21, 2007 19:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Auch da eine negative Antwort... MaxGUI funktioniert seltsamer Weise nach wie vor, solange du nur die libuser32.a austauschst und nicht die kompletten libs! Also bislang konnte ich zumindest noch keine Einschrenkungen feststellen.

cheers

Hab übrigens mal das obige Example durch ein lauffähiges ersetzt (Danke Dee!)
 

#Reaper

Newsposter

BeitragDi, Aug 21, 2007 20:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, hat mir auch geholfen Very Happy
Und ich dachte schon ich wäre zu blöd für BlockInput()^^° Laughing Embarassed
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
 

Dreamora

BeitragDi, Aug 21, 2007 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
d-bug hat Folgendes geschrieben:
Auch da eine negative Antwort... MaxGUI funktioniert seltsamer Weise nach wie vor, solange du nur die libuser32.a austauschst und nicht die kompletten libs! Also bislang konnte ich zumindest noch keine Einschrenkungen feststellen.

cheers

Hab übrigens mal das obige Example durch ein lauffähiges ersetzt (Danke Dee!)



Dachte du hättest es komplett ersetzt, nicht nur die .a File Smile
Dann ist klar, dann sollte alles noch gehen. (der neue MingW würde auch gehen, wenn die MaxGUI C++ Gadget Klassen nicht gleich heissen würden wie die von MingW, kooomischerweise ^^)

Aber freut mich natürlich das es geht Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Lunatix

BeitragMi, Aug 22, 2007 21:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Da hab ich doch was für Hörrn D-bug Very Happy

Code: [AUSKLAPPEN]
SuperStrict
Framework brl.maxgui
Import brl.win32maxgui
Import brl.eventqueue
Import brl.event
Import brl.timer

?Win32
   Import PUB.win32
   Extern "Win32"
      Function FreeLibrary(HLib:Int) 
   End Extern
   
   
   Global FlashWindowEx:Int(pfwi:Byte Ptr)
   Local Lib:Int = LoadLibraryA("user32")
   FlashWindowEx = GetProcAddress(Lib,"FlashWindowEx")
   FreeLibrary Lib
?linux
   Function FlashWindowEx(hWnd:Int,Mode:Int,Count:Int=3,Speed:Int=0)
      Return
   End Function
?osx
   Function FlashWindowEx(hWnd:Int,Mode:Int,Count:Int=3,Speed:Int=0)
      Return
   End Function
?

Type TWindowFlasher

   Function FlashWindow:Int(Window:TGadget,FlashMode:Int,FlashCount:Int,Speed:Int=0)
      Local FWI:TFlashInfo = New TFlashInfo
      FWI.cbSize = SizeOf(TFlashInfo)
      FWI.dwFlags = FlashMode
      FWI.dwTimeout = Speed
      FWI.hWnd = QueryGadget(window,1)
      FWI.uCount = FlashCount
      FlashWindowEx(FWI)
   End Function
   
End Type

Type TFlashInfo

   Field cbSize:Int
   Field hWnd:Int
   Field dwFlags:Int
   Field uCount:Int
   Field dwTimeOut:Int

End Type 

'--------------------- sample

Local hWnd:TGadget = CreateWindow("TestWindow",0,0,800,600,Null,WINDOW_TITLEBAR)
Local hButton:TGadget = CreateButton("Flash window",200,200,200,25,hWnd)
Local timer:TTimer = TTimer.create(200)

Repeat

   WaitEvent()
   Select currentevent.id
      Case $4003
         End
      Case EVENT_GADGETACTION
         TWindowFlasher.FlashWindow(hWnd,1,3,200)
   End Select
   
   timer.wait()
Forever 
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

d-bug

BeitragDo, Aug 23, 2007 17:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Ui Junkprogger... Danke schön, aber wo ist denn jetzt der Unterschied zur obigen Variante? Wink
Okay, du lädst User32.dll noch mals neu, aber das brauch ich eigentlich nicht, denn bis das ganze soll
kein öffentliches Modul werden, sondern nur für klein Buggy sein...

cheers

Lunatix

BeitragDo, Aug 23, 2007 20:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Nunja ich hatte es halt da, es funktioniert ganz gut und ich wollt auch mal angeben Embarassed ;D
Zudem verdeutlicht es anderen suchenden wie mans lösen könnte, wenn sie ganz schlau sind kombinieren sie meins mit deinem und haben ne Lösung bzw. ein Beispiel... oder so oO
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group