Aktuelle Zeit: 24.06.2019 11:35

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 23 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags: Re: Klassennamen ändern
BeitragVerfasst: 04.08.2012 17:48 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
Hier mal die korrigierte Version von edels Code. Seine Version funktioniert nämlich nur unter 32-Bit ohne Unicode.
Code:
Import "window.lib"
   PB_Window_ProcessEvent(a,b,c,d)
 
  PB_Window_NonBlockResizeInit()
 
  PB_Window_Icon
  PB_Window_Cursor
  PB_Window_Objects
  PB_Object_GetOrAllocateID(*Object,id)
EndImport

Procedure NewOpenWindow(id,x,y,cx,cy,title.s,flags=#WS_VISIBLE|#WS_OVERLAPPEDWINDOW,parent=0)
  Protected wnd.wndclass
  Protected classname.s = "MY_OWN_CLASS"
  Protected *WinObj.integer
  Protected hWnd.i
  Protected rc.rect
 
 
  With wnd
    \style          = #CS_HREDRAW|#CS_VREDRAW
    \lpfnWndProc    = @PB_Window_ProcessEvent()
    \hInstance      = GetModuleHandle_(0)
    \hIcon          = PB_Window_Icon
    \hCursor        = PB_Window_Cursor
    \lpszClassName  = @classname
    \hbrBackground  = #COLOR_WINDOW
    \cbWndExtra     = 0
    \cbClsExtra     = 0
  EndWith
   
  If RegisterClass_(wnd)
   
    SetRect_(rc,0,0,cx,cy)
   
    AdjustWindowRectEx_(rc,flags,0,#WS_EX_WINDOWEDGE)
   
    If x = #PB_Ignore Or y = #PB_Ignore
      x = #CW_USEDEFAULT
      y = #CW_USEDEFAULT
    EndIf   
       
    PB_Window_NonBlockResizeInit()
   
    hWnd = CreateWindowEx_(#WS_EX_WINDOWEDGE,classname,title,flags,x,y,rc\right-rc\left,rc\bottom-rc\top,parent,0,GetModuleHandle_(0),0)
   
    If hWnd
      *WinObj   = PB_Object_GetOrAllocateID(PB_Window_Objects,id)
      *WinObj\i = hWnd

      If id = #PB_Any
        SetProp_(hWnd,"Pb_WindowID",*WinObj+1)
      Else
        SetProp_(hWnd,"Pb_WindowID",id+1)
      EndIf
     
      UseGadgetList(hWnd)
     
    Else
      UnregisterClass_(GetModuleHandle_(0),classname)
    EndIf
   
  EndIf

  If id = #PB_Any
    id = *WinObj
  Else
    id = hWnd
  EndIf
 
  ProcedureReturn id
EndProcedure

Procedure Main()
 
  NewOpenWindow(0,#PB_Ignore,#PB_Ignore,200,200,"333")
 
  ResizeWindow(0, #PB_Ignore, #PB_Ignore, 500, 500)
 
  ButtonGadget(0, 10, 10, 100, 30, "sdfsfd")
 
  Repeat
     event = WaitWindowEvent()
 
  Until event = #PB_Event_CloseWindow
 
EndProcedure:Main()

_________________
PureBasic 5.70 | SpiderBasic 2.21 | Windows 10 Pro (x64) | Linux Mint 19.1 (x64)
"Die Jugend von heute mit ihren Ballerspielen, hocken nur in der Bude - wir haben früher die Leute noch draußen erschossen!"
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Klassennamen ändern
BeitragVerfasst: 07.08.2012 23:48 
Offline
Benutzeravatar

Registriert: 15.02.2007 21:31
Eine bessere Methode zur Kennzeichnung von Fenstern ist SetWindowLongPtr/GetWindowLongPtr, indem du dort den Wert in GWLP_USERDATA setzt/ausliest. Ist nämlich genau dafür gedacht. :D

_________________
Gruß, Frank


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: GELÖSCHT
BeitragVerfasst: 08.08.2012 07:27 
Offline

Registriert: 13.11.2011 16:05
GELÖSCHT


Zuletzt geändert von mirca am 17.10.2013 11:21, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Klassennamen ändern
BeitragVerfasst: 08.08.2012 07:34 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
Warum willst Du den FindWindow nutzen, wo das von MS nicht empfohlen wird und sehr unzuverlässig ist?

EnumWindows usw. sollte der bessere Weg sein :wink:

_________________
PureBasic 5.70 | SpiderBasic 2.21 | Windows 10 Pro (x64) | Linux Mint 19.1 (x64)
"Die Jugend von heute mit ihren Ballerspielen, hocken nur in der Bude - wir haben früher die Leute noch draußen erschossen!"
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Klassennamen ändern
BeitragVerfasst: 09.08.2012 10:55 
Offline
Benutzeravatar

Registriert: 15.02.2007 21:31
Richtig. Praktischerweise kannst du dort als zweiten Parameter deine gesuchte Kennzeichnung gleich mit an den Callback angeben: An application-defined value to be passed to the callback function. :D

_________________
Gruß, Frank


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Klassennamen ändern
BeitragVerfasst: 09.08.2012 17:55 
Offline
Benutzeravatar

Registriert: 28.07.2005 12:39
Meint ihr die Fenster von einem fremden Programm, oder soll es das eigene sein?

Fuer fremde Fenster wuerde ich auf GWLP_USERDATA verzichten, das Programm kann das Feld selber
benutzen. Wenn es das Eigene ist, kann man die Infos auch einfach in eine Variable speichern.
Afaik nutzt PB selber irgendwo GWLP_USERDATA.

_________________
Suche


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Klassennamen ändern
BeitragVerfasst: 23.11.2012 12:32 
Offline

Registriert: 16.06.2011 14:38
Ist es nun dort zu ändern: GWLP_USERDATA?

Ich möchte eigene Gadgets selbst benennen, abgesehen davon dass es mir unprofessionell erscheint, wenn dort "PB_" steht, soll es auch eine sinnvolle Benennung bekommen. Nicht nur Canvas, manche Gadgets setzen sich aus mehreren verschiedenen zusammen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Klassennamen ändern
BeitragVerfasst: 23.11.2012 15:43 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
@ts-soft

PB_Window_NonBlockResizeInit() gibt es nicht mehr unter PB v5.00

Kann man mal gebrauchen

FF :wink:

_________________
Alles ist möglich, fragt sich nur wie...
Projekte EventDesigner v1.x / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Klassennamen ändern
BeitragVerfasst: 26.11.2012 19:27 
Offline
Benutzeravatar

Registriert: 28.07.2005 12:39
cOoki3druqs hat geschrieben:
Ist es nun dort zu ändern: GWLP_USERDATA?

Ich möchte eigene Gadgets selbst benennen, abgesehen davon dass es mir unprofessionell erscheint, wenn dort "PB_" steht, soll es auch eine sinnvolle Benennung bekommen. Nicht nur Canvas, manche Gadgets setzen sich aus mehreren verschiedenen zusammen.


Erstelle dir doch echte Fenster/Gadget. Dann eruebrigt sich auch letzteres.

_________________
Suche


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Klassennamen ändern
BeitragVerfasst: 06.03.2013 18:46 
Offline

Registriert: 16.06.2011 14:38
Hatte Fred angeschrieben und er meinte es wäre möglich die Bezeichnungen in den Libraries zu ändern. Die Frage wäre natürlich erstmal wie. :D Beim durchforsten stoße ich zwar auf die Begriffe wie "Pure_Canvas" nur leider ändert sich nichts nachdem alle Vorkommnisse geändert wurden. Ist es damit nicht getan?

Finde es sollte nativ möglich sein! Das Canvas ist praktisch ein Rohling für neue Steuerelemente, welche dann auch eine logische Bezeichnung bekommen sollte.

Ein Laufzeit-Gepfusche ist natürlich keine Lösung da es für jedes System kompilierbar sein sollte.


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

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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