Seite 1 von 1

CreateWindow_() is not a function, an array or...

Verfasst: 18.11.2004 23:05
von PBZecke
Hallo!

mein PB V.3.92 kennt "CreateWindow_()" nicht: "is not a function, an array or...
CreateWindowEx _() macht keine Probleme. Kann das jemand bestätigen, oder macht meine PB-Installation Probleme?

Verfasst: 18.11.2004 23:20
von GPI
normal. Nimm CreateWindowEx_()

(Ist anscheinend eine gewollte einschränkung)

Verfasst: 18.11.2004 23:29
von PBZecke
Werd ich wohl machen müssen, aber für eine normale Einschränkung halte ich das nicht, ist wohl eher ein Bug.

Verfasst: 19.11.2004 09:05
von wichtel
seid dem neuen Linker gibt es einige API Funktionen die nicht mehr bekannt sind.
Damit habe ich mich immer noch nicht abgefunden und kann den Sinn nicht erkennen.
Falls es einen geben sollte würde ich in gerne kennen lernen.
Man kommt zwar mit dem direkten Öffnen der DLL daran vorbei, nervt aber. (und immer für bestimmen code extra noch eine alte Version von PB vorhalten ist auch nicht so praktikabel)
Gruß
Michael

Verfasst: 19.11.2004 09:28
von Danilo
wichtel hat geschrieben:seid dem neuen Linker gibt es einige API Funktionen die nicht mehr bekannt sind.
Damit habe ich mich immer noch nicht abgefunden und kann den Sinn nicht erkennen.
Was hat denn Fred dazu gesagt, als Du das gemeldet hast?

Ich glaube kaum das es Absicht war, also wird das bestimmt
wieder hinzugefügt, wenn man die entpr. Leute informiert
und mal nachfragt was da los ist.

Verfasst: 19.11.2004 09:45
von wichtel
Ich habe das zwar auch festgestellt, war aber nicht der Erste. Dazu gab es schon einige Threads im Forum (auch english) aber eine eindeutige Antwort habe ich nicht gefunden. Evtl. habe ich da was übersehen.
Mir ist es hier aufgefallen:

Code: Alles auswählen

Structure envstruct 
  name.s 
  value.s 
EndStructure 

NewList env.envstruct() 

Procedure.s myGetEnv(name.s)
  value.s=Space(256)
  size.l=Len(value)
  GetEnvironmentVariable_(@name, @value, @size)
  ProcedureReturn(value)
EndProcedure

Procedure.l myListEnv() 
  ret$="" 
  envcount.l=0 
  LibKernel.l=OpenLibrary(#PB_Any,"kernel32.dll") 
  If LibKernel=0 
    MessageRequester("DLL error","Kann kernel32.dll nicht öffnen") 
    ProcedureReturn 0 
  EndIf 
  envblock.l=CallFunction(LibKernel,"GetEnvironmentStringsA") 
  ;vor 3.91 mit:
  ;envblock.l=GetEnvironmentStrings_() 
  ClearList(env()) 
  Repeat 
    ret$=PeekS(envblock) 
    If ret$<>"" And Left(ret$,1)<>"=" And Left(ret$,1)<>":" 
      AddElement(env()) 
      env()\name=StringField(ret$,1,"=") 
      env()\value=StringField(ret$,2,"=") 
    EndIf 
    envblock+Len(ret$)+1 
  Until ret$="" 
  CloseLibrary(LibKernel) 
  ProcedureReturn CountList(env()) 
EndProcedure 

Debug myGetEnv("windir")


Debug myListEnv()
ForEach env()
  Debug env()\name +" = "+env()\value
Next