Laden...

Dialogname über Variable ansprechen / String als Dialognamen benutzen

Erstellt von flexray vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.049 Views
Thema geschlossen
F
flexray Themenstarter:in
1 Beiträge seit 2012
vor 11 Jahren
Dialogname über Variable ansprechen / String als Dialognamen benutzen

Um den Bildschirm meines PDAs zu drehen (Beschleunigungssensor löst einen Interrupt aus) möchte ich das Fenster, welches aktuell im Vordergrund steht als erstes drehen, danach erst alle anderen geöffneten Fenster (hoffe, das geht, ohne dass der User das Drehen der Hintergrundfenster mitbekommt, da lange Laufzeit).

Mit der Funktion GetForegroundWindow() und GetWindowText() ermittle ich den Namen des aktiven Fensters.
Das Fenster ist als Dialog geöffnet. Nun möchte ich die Hochkant-Variable des Dialogs anpsrechen, somit wird ein Drehen verursacht.

Originalcode ist zum Beispiel für das Fenster/Form "Find" folgendermaßen (der code zum Drehen steht in der letzten Zeile):


//*** dies nur zur Info, wie FindDialog angelegt und geöffnet ist ***
Find FindDialog; //Definition des Find-Dialogs
...
 FindDialog.Activate();
 FindDialog.Show();

//*** Ende Info, wie FindDialog angelegt und geöffnet ist ***
...

FindDialog.Hochkant = this.Hochkant;

Das "Find" möchte ich nun durch den String von GetWindowText() ersetzen.
Hier der Versuch, einen Dialognamen mittels String anzusprechen:


if (GetWindowText((int)hWnd, Buff, nChars) > 0)
{
       (Buff.ToString() + "Dialog").Hochkant = this.Hochkant;
}

Dieser Versuch führt zum Compilerfehler:' "string" enthält keine Definition für "Hochkant" und es konnte keine Erweiterungsmethode...'

Weiß jemand die richtige Syntax hierfür?

Ich könnte auch alle Dialognamen evtl. mit switch-case durchlaufen, das wäre aber Laufzeittechnisch nicht gut.

Viele Grüße
Claudia (flexray)

C
2.121 Beiträge seit 2010
vor 11 Jahren

Also du versuchst hier einem String ein Property namens "Hochkant" abzufragen. Praktisch sowas
string s = "irgendein Text";
s.Hochkant = this.Hochkant;

Klar dass das nicht geht.

Das "Find" möchte ich nun durch den String von GetWindowText() ersetzen.

Das heißt was? Was ist Find? Und wie kann man es durch einen String ersetzen?
Du hast da noch ein bisschen Klärungsbedarf an dem was du haben willst 😃

Im ersten Codeblock scheint Find eine Klasse (Fenster?) zu sein, die ein Property namens Hochkant hat.
Im zweiten kapier ich gar nix mehr. Du willst also die Eigenschaft Hochkant des Fensters setzen das so heißt wie hWnd, gefolgt von "Dialog"?

731 Beiträge seit 2006
vor 11 Jahren

Hi, du brauchst natuerlich die zum Fenstertext zugehoerige Instanz. Ich kenne mich in der API nicht aus, doch falls es dort Methoden gibt, die dir zu einem Fenstertitel oder Handle ein Objekt zurueck geben, dann kannst du das ja vielleicht auf Find oder sonst eine Basis von Find casten.

MfG
Markus

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo flexray,

siehe [FAQ] Variablennamen zur Laufzeit zusammensetzen.

Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1 und 1.1.

herbivore

Thema geschlossen