Benötige Infos über Repaint von Fenstern
- Chimorin
- Beiträge: 451
- Registriert: 30.01.2013 16:11
- Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit
Benötige Infos über Repaint von Fenstern
Heyho,
Ich möchte mein Programm mit Sprachoptionen ausstatten.
Da hätte ich erst einmal eine grundlegende Frage: Wenn ich als Text/Titel/... bei einem Fenster/Gadget keine Konstante, sondern einen String oder Arrayelement angebe, verhält sich das Repaint dann anders?
Z.B. wenn der String erst 1 war, das Fenster somit als Titel "1" trägt, sich der String auf "2" ändert, gibt es da eine Möglichkeit mit Repaint oder sowas dafür zu sorgen, dass diese Änderung übernommen wird?
Es sind eine Menge Gadgets und ich würde es lieber einfach lösen, anstatt haufenweise Gadgets nach Bestehen abzufragen...
Ich möchte mein Programm mit Sprachoptionen ausstatten.
Da hätte ich erst einmal eine grundlegende Frage: Wenn ich als Text/Titel/... bei einem Fenster/Gadget keine Konstante, sondern einen String oder Arrayelement angebe, verhält sich das Repaint dann anders?
Z.B. wenn der String erst 1 war, das Fenster somit als Titel "1" trägt, sich der String auf "2" ändert, gibt es da eine Möglichkeit mit Repaint oder sowas dafür zu sorgen, dass diese Änderung übernommen wird?
Es sind eine Menge Gadgets und ich würde es lieber einfach lösen, anstatt haufenweise Gadgets nach Bestehen abzufragen...
Re: Benötige Infos über Repaint von Fenstern
Was möchtest du denn genau? Möchtest du ein Repaint-Event an das Fenster senden?
Hast du ein bestimmtes Problem? Hast du einen nachvollziehbaren Code zum Zeigen deines Problems? Leider weiß ich nicht, was du eigentlich willst.
Falls du ein bestimmtes Problem hast, dann bitte immer ein Beispielcode veröffentlichen, mit dem wir testen und nachvollziehen können.
Und geht es um eigene oder fremde (zwar auch deine aber als extra Executable) Fenster?
Code: Alles auswählen
SendMessage_(hWnd, #WM_PAINT, 1, 0)
Code: Alles auswählen
SendMessage_(hWnd, #WM_NCPAINT, 1, 0)
Code: Alles auswählen
UpdateWindow_(hWnd)
Code: Alles auswählen
InvalidateRect_(hWnd, 0, #True)
Code: Alles auswählen
RedrawWindow_(hWnd, 0, 0, #RDW_INVALIDATE)
Falls du ein bestimmtes Problem hast, dann bitte immer ein Beispielcode veröffentlichen, mit dem wir testen und nachvollziehen können.
Und geht es um eigene oder fremde (zwar auch deine aber als extra Executable) Fenster?
Re: Benötige Infos über Repaint von Fenstern
Mitwird der Fenstertitel automatisch* geändert, auch visuell.
* Eine funktionierende Nachrichtenverarbeitung vorausgesetzt.
Code: Alles auswählen
SetWindowTitle(#Window, Title$)
* Eine funktionierende Nachrichtenverarbeitung vorausgesetzt.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
- Chimorin
- Beiträge: 451
- Registriert: 30.01.2013 16:11
- Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit
Re: Benötige Infos über Repaint von Fenstern
Es ging mir darum, ob das Fenster seine Strings aus dem gleichen Speicherbereich holt, den man auch im Programm als String/Konstante dafür "zugewiesen" hat.
So ist es leider nicht, die Fenster legen ihre Strings nochmals wo ganz anders ab.
Mein Problem ist ungefähr der Code unten, nur mit viel mehr Gadgets und ein paar Fenstern mehr.
Wie gesagt ändern sich die Strings, die für die ganzen Texte zuständig sind (Andere Sprache). Mir fällt nur ein, wie Danilo schon auch angemerkt hat, bei allem was gerade aktiv ist (noch eine Abfrage für die Listenauswahl rein) den Text,Titel,... zu ändern. Wird ein ganz schönes Klamauk, ich dachte, dass man das eben "einfach" lösen könnte.
So ist es leider nicht, die Fenster legen ihre Strings nochmals wo ganz anders ab.
Mein Problem ist ungefähr der Code unten, nur mit viel mehr Gadgets und ein paar Fenstern mehr.
Wie gesagt ändern sich die Strings, die für die ganzen Texte zuständig sind (Andere Sprache). Mir fällt nur ein, wie Danilo schon auch angemerkt hat, bei allem was gerade aktiv ist (noch eine Abfrage für die Listenauswahl rein) den Text,Titel,... zu ändern. Wird ein ganz schönes Klamauk, ich dachte, dass man das eben "einfach" lösen könnte.
Code: Alles auswählen
EnableExplicit
Define.s str = "a"
Define.i event
#window = 0
InitSprite()
InitKeyboard()
OpenWindow(#window, 10, 10, 100, 100, str)
OpenWindowedScreen(WindowID(#window), 10, 10, 80, 80)
Repeat
Repeat
event = WindowEvent()
Select event
Case #PB_Event_CloseWindow
End
EndSelect
Until event = 0
If ExamineKeyboard()
If KeyboardReleased(#PB_Key_Space)
str = "b"
;Hier Update
EndIf
EndIf
ForEver
Re: Benötige Infos über Repaint von Fenstern
Dieses Problem musste ich bei meinem Vorhaben auch feststellen, war aber ein ganz anderes Thema.Chimorin hat geschrieben:die Fenster legen ihre Strings nochmals wo ganz anders ab.

Deine Stringvariable ist kein Verweis. Du kannst auch nicht sagen, dass das OS den Titel aus deiner Stringvariable entnehmen soll. Es ist nur eine reine Parameterübergabe. Warum machst du nicht mit SetWindowTitle?Chimorin hat geschrieben:Code: Alles auswählen
str = "b"
Du musst auch nicht jedes Element einzeln übersetzen. Schreibe eine Prozedur und baue eine Schleife, damit du nicht jedes Element manuell neu beschriften musst. Automatisierung ist das Lösungswort. Lege eine Map an mit Sprachtext und Gadgetnummer. Dann diese Map foreachen und fertig.

Re: Benötige Infos über Repaint von Fenstern
Im folgenden Thread findest Du mehrere Ansätze, die dabei helfen könnten.Chimorin hat geschrieben:Mir fällt nur ein, wie Danilo schon auch angemerkt hat, bei allem was gerade aktiv ist (noch eine Abfrage für die Listenauswahl rein) den Text,Titel,... zu ändern. Wird ein ganz schönes Klamauk, ich dachte, dass man das eben "einfach" lösen könnte.
Du musst aber wirklich eine Procedure machen, die dann Fenster-, Gadget- und MenuText neu setzt.
- [ERLEDIGT] Anfänger Frage in Sachen Multilanguage
Das Ganze wird noch etwas komplizierter, da die Strings aller unterstützten Sprachen
auch noch in die Gadgets passen müssen. Sonst werden sie evtl. einfach abgeschnitten,
wenn GadgetWidth() zu klein ist.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
- Chimorin
- Beiträge: 451
- Registriert: 30.01.2013 16:11
- Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit
Re: Benötige Infos über Repaint von Fenstern
Danke für die Hilfe 
Ich habe das nicht über eine Map gelöst, sondern bestücke ein Array mit dem Inhalt einer Sprachdatei.
Naja, dann setze ich mich mal ans Werk.

Ich habe das nicht über eine Map gelöst, sondern bestücke ein Array mit dem Inhalt einer Sprachdatei.
Naja, dann setze ich mich mal ans Werk.