Aktuelle Zeit: 12.07.2020 11:20

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 21 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags: PureBasic Assembler Error
BeitragVerfasst: 15.02.2010 14:06 
Offline
BotHunter
Benutzeravatar

Registriert: 26.12.2005 14:14
Wohnort:   
Mahlzeit!

Ich habe grade folgendes Codeschnipsel aus dem Forum kopiert (zum erstellen von BallonTips):
Code:
ProcedureDLL BalloonTip(WindowID, Gadget, Text$ , Title$, Icon)

  Static init
  Static tooltip
  Protected  style = #WS_POPUP | #TTS_NOPREFIX | #TTS_BALLOON
 
  If init = 0
    init = 1
    ToolTip=CreateWindowEx_(0,"ToolTips_Class32","",style,0,0,0,0,WindowID(WindowID),0,0,0)           
  EndIf
 
  ToolTip=CreateWindowEx_(0,"ToolTips_Class32","",#WS_POPUP | #TTS_NOPREFIX | #TTS_BALLOON,0,0,0,0,WindowID(WindowID),0,GetModuleHandle_(0),0)
  SendMessage_(ToolTip,#TTM_SETTIPTEXTCOLOR,GetSysColor_(#COLOR_INFOTEXT),1)
  SendMessage_(ToolTip,#TTM_SETTIPBKCOLOR,GetSysColor_(#COLOR_INFOBK),0)
  SendMessage_(ToolTip,#TTM_SETMAXTIPWIDTH,0,300)
  Balloon.TOOLINFO\cbSize=SizeOf(TOOLINFO)
  Balloon\uFlags=#TTF_IDISHWND | #TTF_SUBCLASS
  Balloon\hWnd=GadgetID(Gadget)
  Balloon\uId=GadgetID(Gadget)
  Balloon\lpszText=@Text$
  SendMessage_(ToolTip, #TTM_ADDTOOL, 0, Balloon)
  If Title$ > ""
    SendMessage_(ToolTip, #TTM_SETTITLE, Icon, @Title$)
  EndIf
 
EndProcedure


Wenn ich den Code mit F5 ausführe oder die Procedure einfach in das Hauptprojekt kopiere und dann aufrufe ist noch alles okay. Wenn ich den Code aber in eine eigene Datei schmeiße, Procedure mit ProcedureDLL ersetze und eine DLL daraus machen will wird mir während dem Linken (also während dem Executable erstellen) folgender Fehler angezeigt:
Bild

Ich benutze im gesamten Projekt keine Assembler-Schlüsselwörter und hab auch die InlineASM-Unterstützung deaktiviert.

MfG, Mok

_________________
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PureBasic Assembler Error
BeitragVerfasst: 15.02.2010 14:30 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
funktioniert hier einwandfrei. Keine Fehlermeldung
oder sonstiges.

Grüße ... Kiffi

// Edit:
Zitat:
Wenn ich den Code aber in eine eigene Datei schmeiße, Procedure mit ProcedureDLL ersetze und eine DLL daraus machen will wird mir während dem Linken (also während dem Executable erstellen) folgender Fehler angezeigt:

kann ich aufgrund fehlenden Sources nicht nachvollziehen.

_________________
Schrödingers Smiley :):


Zuletzt geändert von Kiffi am 15.02.2010 14:32, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PureBasic Assembler Error
BeitragVerfasst: 15.02.2010 14:32 
Offline
Benutzeravatar

Registriert: 27.02.2006 22:30
Wohnort: Neumünster
DLLs und statische Libs mögen anscheinend keine Static Variablen

Code:
Global tooltip
Global init

ProcedureDLL BalloonTip(WindowID, Gadget, Text$ , Title$, Icon)

  ;Static init
  ;Static tooltip
  Protected  style = #WS_POPUP | #TTS_NOPREFIX | #TTS_BALLOON

  ;.....



ohne das nun näher zu testen ist mir nicht klar wozu tooltip und init dienen und ganz besonders die 2 ToolTip=CreateWindowEx_() Anweisungen.

_________________
Purebasic 5.60 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PureBasic Assembler Error
BeitragVerfasst: 15.02.2010 14:50 
Offline
BotHunter
Benutzeravatar

Registriert: 26.12.2005 14:14
Wohnort:   
hjbremer hat geschrieben:
DLLs und statische Libs mögen anscheinend keine Static Variablen

Stimmt. Mit Protected funzt es. Nicht gerade sehr benutzerfreundlich, so eine unaussagekräftige Assembler-Fehlermeldung, erinnert mich irgendwie an das, was passiert, wenn man in Java eine Exception nicht catcht.
b2t... warum ist per F5 dann alles "fresh" und wenn ich eine EXE (oder in meinem Fall eine DLL) mache, dann nicht mehr?

@Kiffi: Ich hab gemeint, wenn ich das obige Coedschnippsel in eine DLL reinhaue.

_________________
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PureBasic Assembler Error
BeitragVerfasst: 15.02.2010 14:59 
Offline
Benutzeravatar

Registriert: 27.02.2006 22:30
Wohnort: Neumünster
Die Fehlermeldung sagt es doch

[s_BalloonTip.v_init]

v_ steht für Variable und init heißt dieselbe im Modul BallonTip

irgendetwas stimmt also nicht mit der Variable init

aber was ? :mrgreen: :mrgreen: :mrgreen:

_________________
Purebasic 5.60 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PureBasic Assembler Error
BeitragVerfasst: 15.02.2010 18:30 
Offline
Benutzeravatar

Registriert: 28.07.2005 12:39
PB erstellt selber sein Tooltipfenster. ist also nicht noetig noch eines zu erstellen, oder wie hier gleich 2 mal.

_________________
Suche


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PureBasic Assembler Error
BeitragVerfasst: 15.02.2010 19:26 
Offline
BotHunter
Benutzeravatar

Registriert: 26.12.2005 14:14
Wohnort:   
>> PB erstellt selber sein Tooltipfenster.
Jo, aber die Stanrd-Tool Tips schauen viel fader aus als die Balloon Tips

>>oder wie hier gleich 2 mal.
War ne veraltete Version, der Sourcecode sieht korrekterweise so aus:
Code:
ProcedureDLL BalloonTip(WindowID, Gadget, Text$ , Title$, Icon)

  Protected init
  Protected tooltip
  Protected  style = #WS_POPUP | #TTS_NOPREFIX | #TTS_BALLOON
 
  If init = 0
    init = 1
    ToolTip=CreateWindowEx_(0,"ToolTips_Class32","",#WS_POPUP | #TTS_NOPREFIX | #TTS_BALLOON,0,0,0,0,WindowID(WindowID),0,GetModuleHandle_(0),0)
    SendMessage_(ToolTip,#TTM_SETTIPTEXTCOLOR,GetSysColor_(#COLOR_INFOTEXT),1)
    SendMessage_(ToolTip,#TTM_SETTIPBKCOLOR,GetSysColor_(#COLOR_INFOBK),0)
    SendMessage_(ToolTip,#TTM_SETMAXTIPWIDTH,0,300)
    Balloon.TOOLINFO\cbSize=SizeOf(TOOLINFO)
    Balloon\uFlags=#TTF_IDISHWND | #TTF_SUBCLASS
    Balloon\hWnd=GadgetID(Gadget)
    Balloon\uId=GadgetID(Gadget)
    Balloon\lpszText=@Text$
    SendMessage_(ToolTip, #TTM_ADDTOOL, 0, Balloon)
    If Title$ > ""
      SendMessage_(ToolTip, #TTM_SETTITLE, Icon, @Title$)
    EndIf           
  EndIf
 
EndProcedure

_________________
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PureBasic Assembler Error
BeitragVerfasst: 15.02.2010 19:36 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
Mok hat geschrieben:
War ne veraltete Version

ja, was soll man dazu noch sagen... :roll:

Ich bin raus. Kleiner Tipp noch, damit die Kollegen nicht
im Trüben fischen müssen: Poste einen verkürzten und
komplett lauffähigen Code
, der Dein Problem bei jedem
nachvollziehbar macht. Ansonsten wird das nix...

_________________
Schrödingers Smiley :):


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PureBasic Assembler Error
BeitragVerfasst: 15.02.2010 20:05 
Offline
Benutzeravatar

Registriert: 28.07.2005 12:39
Mok hat geschrieben:
>> PB erstellt selber sein Tooltipfenster.
Jo, aber die Stanrd-Tool Tips schauen viel fader aus als die Balloon Tips


Das eine hat mit dem anderen nichts zu tun. Du erstellst deine ToolTips mit #TTM_ADDTOOL
und nicht mit CreateWindowEx.

Stell dir das TooltipControl wie eine LinkedList vor, einmal erstellen und dann nur noch neue
einfuegen. Also war das mit dem "Init" schonmal der bessere Weg.
Im englischen Forum gibts es noch eine Funktion von mir, mit der man das ToolTip-Handle vom
PB Fenster bekommt. Dann erspart man sich noch das CreateWindowEx.


http://www.purebasic.fr/english/viewtop ... 73#p280773

_________________
Suche


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PureBasic Assembler Error
BeitragVerfasst: 15.02.2010 20:49 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
So ganz richtig ist das auch nicht, wenn in PB kein GadgetToolTip genutzt wird, existiert
diese Fensterklasse nicht. Wenn man aber mit PB einen ToolTip erstellt hat, kann man dies
weiter nutzen:
Code:
EnableExplicit

Structure GadgetGlobals
  CurrentWindow.i
  FirstOptionGadget.i
  DefaultFont.i
  *PanelStack
  PanelStackIndex.l
  PanelStackSize.l
  ToolTipWindow.i
EndStructure

Import ""
  PB_Object_GetThreadMemory(*Mem)
  PB_Gadget_Globals
EndImport

Procedure ToolTipID()
  Protected *gg.GadgetGlobals
  *gg = PB_Object_GetThreadMemory(PB_Gadget_Globals)
  ProcedureReturn *gg\ToolTipWindow
EndProcedure

Procedure BalloonTip(Gadget, Text$, Title$, Icon)
  Protected tooltip = ToolTipID()
  Protected Balloon.TOOLINFO
  SendMessage_(ToolTip, #TTM_SETTIPTEXTCOLOR, GetSysColor_(#COLOR_INFOTEXT), 1)
  SendMessage_(ToolTip, #TTM_SETTIPBKCOLOR, GetSysColor_(#COLOR_INFOBK), 0)
  SendMessage_(ToolTip, #TTM_SETMAXTIPWIDTH, 0, 300)
  Balloon.TOOLINFO\cbSize = SizeOf(TOOLINFO)
  Balloon\uFlags          = #TTF_IDISHWND | #TTF_SUBCLASS
  Balloon\hWnd            = GadgetID(Gadget)
  Balloon\uId             = GadgetID(Gadget)
  Balloon\lpszText        = @Text$
  SendMessage_(ToolTip, #TTM_ADDTOOL, 0, Balloon)
  If Title$ > ""
    SendMessage_(ToolTip, #TTM_SETTITLE, Icon, @Title$)
  EndIf

EndProcedure
; test program
OpenWindow(0, 0, 0, 320, 240, "")
ButtonGadget(1, 10, 10, 80, 40, "Test")
GadgetToolTip(1, "test"); ohne diese Zeile gehts nicht!
BalloonTip(1, "Text", "Titel", #MB_ICONERROR)
Repeat:Until WaitWindowEvent() = #PB_Event_CloseWindow

Gruß
Thomas


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 21 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 7 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye