User Passwort
 Passwort speichern Passwort vergessen?
 
 
 
 Alle Foren
 PDA-Dev :: Windows Mobile
 Windows Mobile - Allgemeines
 Tastatur (SIP) einblenden ohne Menü
Nächste Seite
Autor Vorheriges Thema Thema Nächstes Thema
Seite: von 3

pda-dev

pda-dev

Forum Admin


554 Beiträge

Erstellt am: 30.07.2004 :  21:55:10 Uhr  Profil anzeigen  Autor eine Email senden  Besuche pda-dev's Homepage  Sende pda-dev eine ICQ Message  Antwort mit Zitat
Der heutige Tipp soll zeigen, wie man die Bildschirmtastatur (SIP) des PPC einblenden kann, ohne ein platzraubendens Menu auf dem Formular zu haben.
Dazu benutzen wir ein paar nette Win CE - API-Funktionen
Das Beispiel ist in VB.NET, funktioniert aber in C# natürlich analog.
 
Class SIP
'benötigte Konstanten
'--------------------
Private Const SIPF_OFF As Integer = &H0
Private Const SIPF_ON As Integer = &H1
Private Const SIPF_DOCKED As Integer = &H2
Private Const SIPF_LOCKED As Integer = &H4
' SipStatus
Private Const SIP_STATUS_UNAVAILABLE As Integer = 0
Private Const SIP_STATUS_AVAILABLE As Integer = 1
'Deklaration der benötigten API-Funktionen
'-----------------------------------------
'Anzeige des SIP
'dwFlag: gibt an, ob das SIP angezeigt(SIPF_ON) oder versteckt (SIPF_OFF) werden soll
<DllImport("coredll.dll")> _
Private Shared Sub SipShowIM(ByVal dwFlag As Integer)
End Sub
'gibt den Status des SIP zurück
<DllImport("coredll.dll")> _
Private Shared Function SipStatus() As Integer
End Function
'nun kommen die eigentlichen, öffentlichen Funktionen
'----------------------------------------------------
'anzeigen der Tastatur
Public Sub Show()
If SipStatus() = SIP_STATUS_UNAVAILABLE Then
MsgBox("Fehler: Bildschirmtastatur nicht verfügbar!")
Return
Else
SipShowIM(SIPF_ON)
End If
End Sub
'ausblenden der Tastaur
Public Sub Hide()
SipShowIM(SIPF_OFF)
End Sub
'diese Funktion ermittelt die Größe des SIP
'das ist beispielsweise dann nützlich, wenn man die Anzeige des eigenen Formulars anpassen möchte
'die Struktur RECT für die Größe:
Public Structure RECT
Public left As Integer
Public top As Integer
Public right As Integer
Public bottom As Integer
End Structure 'RECT
'...und die Klasse SIPINFO, die die Informationen über das SIP enthält
Private Class SIPINFO
Public Sub New()
cbSize = Marshal.SizeOf(Me)
End Sub 'New
'Größe der SIPINFO-Struktur in Bytes
Public cbSize As Integer
'Status des SIP (SIPF_DOCKED, SIPF_LOCKED, SIPF_OFF, SIPF_ON)
Public fdwFlags As Integer
'sichtbarer Bereich des Desktops, also der Bereich ausserhalb des SIP's
Public rcVisibleDesktop As RECT
'Größe des SIP
Public rcSipRect As RECT
'
Public dwImDataSize As Integer
Public pvImData As IntPtr
End Class 'SIPINFO
'Funktion zum Füllen der SIPINFO
<DllImport("coredll.dll")> _
Private Shared Function SipGetInfo(ByVal pSipInfo As SIPINFO) As Integer
End Function
Public Function GetRect() As RECT
Dim sipInfo As SIPINFO = New SIPINFO
If SipGetInfo(sipInfo) <> 0 Then
Return sipInfo.rcSipRect
End If
End Function
End Class
 
Die Verwendung ist einfach, da die Methoden als Shared deklariert wurden.
Wenn man beispielsweise die Tastatur anzeigen möchte, wenn der Benutzer den Cursor (Fokus) in eine bestimme Textbox setzt, so muss man lediglich in der entsprechenden GetFocus-Ereignisprozedur folgende Zeile einfügen:
 
SIP.Show
 
und bei LostFocus natürlich
 
SIP.Hide
 
Das war's
Mehr Info's über die API-Funktionen und Strukturen gibt es auch hier.
Alles Weitere bitte posten

Ein Computer wird nie das tun, was du willst - sondern das, was du programmierst!
  Web Server's Default Page
Web Server's Default Page

This page is generated by Plesk, the leading hosting automation software. You see this page because there is no Web site at this address.

You can do the following:

  • Create domains and set up Web hosting using Plesk.
What is Plesk

Plesk is a hosting control panel with simple and secure web server and website management tools. It was specially designed to help IT specialists manage web, DNS, mail and other services through a comprehensive and user-friendly GUI. Learn more about Plesk.

 

Slayer666

Neumitglied


2 Beiträge

Erstellt  am: 07.01.2005 :  00:03:47 Uhr  Profil anzeigen  Besuche Slayer666's Homepage  Antwort mit Zitat
wie würde denn der code aussehen, wenn ich die untere menü-leisten mit der eingabe rechts haben will?
Zum Anfang der Seite

pda-dev

pda-dev

Forum Admin


554 Beiträge

Erstellt  am: 07.01.2005 :  13:48:28 Uhr  Profil anzeigen  Autor eine Email senden  Besuche pda-dev's Homepage  Sende pda-dev eine ICQ Message  Antwort mit Zitat
Hallo Slayer,
was genau meinst du mit "die untere menü-leisten mit der eingabe rechts" ?
Vermutlich eine normale Menübar? Diese kannst du einfach über den Formulardesigner (dort heisst es MainMenu) auf deine Form ziehen und fertig
Besonderer Quellcode ist da nicht erforderlich - die Tastatur wird dann automatisch eingeblendet, wenn der Benutzer das Symbol rechts in der Menübar klickt.
Gruß,
Frank

Ein Computer wird nie das tun, was du willst - sondern das, was du programmierst!
Zum Anfang der Seite

heino

PDA-Interessierter


19 Beiträge

Erstellt  am: 18.06.2007 :  15:32:22 Uhr  Profil anzeigen  Autor eine Email senden  Besuche heino's Homepage  Antwort mit Zitat
Moin, Moin,
wenn ich es richtig verstehe kann ich damit die Tastatur automatisch ein bezw. ausblenden.
Ich möchte jedoch das Symbol der Tastatur unten rechts ausblenden damit ich mehr Platz in meiner Toolbar habe und bei Bedarf (Eingabe) wieder einblenden. Geht das auch ?
Danke Heino

Umgebung: Visual Studio 2500 & Typhoon MyGuide 3500
Zum Anfang der Seite

ReinerZ

PDA-Spezialist


347 Beiträge

Erstellt  am: 18.06.2007 :  16:54:09 Uhr  Profil anzeigen  Autor eine Email senden  Besuche ReinerZ's Homepage  Antwort mit Zitat
Hallo Heino,
ja, das geht auch. Du musst, wie oben beschrieben, die Funktion SetSipInfo() aufrufen und vorher in der Struktur SIPINFO das Feld fdwFlags auf SIP_OFF setzen.
Dann ist das Panel "unsichtbar"...
Wenn du es wieder sichtbar machen willst, gleiche Prozedur wie oben, nur mit SIP_ON anstatt SIP_OFF.
Gruss
Reiner
Zum Anfang der Seite

heino

PDA-Interessierter


19 Beiträge

Erstellt  am: 22.06.2007 :  14:47:51 Uhr  Profil anzeigen  Autor eine Email senden  Besuche heino's Homepage  Antwort mit Zitat
Hallo Reiner,
ich glaube ihr (die Wissenden) würdet den Unwissenden(wie mir) eine noch größere Hilfe sein wenn ihr eure Antworten mit etwas Code füllen würdet.
"wie oben beschrieben, die Funktion SetSipInfo()
aufrufen, in der Struktur SIPINFO fdwFlags auf SIP_Off setzen",
leider habe ich nichts verstanden jedoch auch den Mut es zuzugeben.
Mein Versuch:
Public fdwFlags As Integer
Private Const SIP_OFF As Integer = &H0
Private Const SIP_ON As Integer = &H1
Private Shared Sub SipSetInfo(ByVal dwFlags As Integer)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SipSetInfo(SIP_ON)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
SipSetInfo(SIP_OFF)
End Sub
Das Symbol bleibt jedoch immer sichtbar.
Schade eigentlich
Gruß Heino
PS Reiner: es soll nicht als Kritik rüberkommen, sondern nur als Wunsch denn ich weiß mitdenken ist ja nicht verboten.

Umgebung: Visual Studio 2500 & Typhoon MyGuide 3500
Zum Anfang der Seite

ReinerZ

PDA-Spezialist


347 Beiträge

Erstellt  am: 22.06.2007 :  15:18:26 Uhr  Profil anzeigen  Autor eine Email senden  Besuche ReinerZ's Homepage  Antwort mit Zitat
Hallo Heino,
folgender Code müsste funktionieren:
 
Private Const SIPF_OFF As Integer = &H0
Private Const SIPF_ON As Integer = &H1
<DllImport("coredll.dll")> _
Private Shared Sub SipShowIM(ByVal dwFlag As Integer)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles Button1.Click
' Blendet SIP ein...
SipShowIM(SIP_ON)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles Button2.Click
' Blendet SIP aus...
SipShowIM(SIP_OFF)
End Sub
 
Viele Grüsse
Reiner
PS: Was deinen Nachsatz betrifft: Ich gelobe Besserung *g*...
PPS: Ich bin NICHT allwissend, es gibt etliche Sachen unter Windows CE-/Mobile, die ich auch noch nicht "geknackt" habe.
Zum Anfang der Seite

heino

PDA-Interessierter


19 Beiträge

Erstellt  am: 22.06.2007 :  15:39:46 Uhr  Profil anzeigen  Autor eine Email senden  Besuche heino's Homepage  Antwort mit Zitat
Hallo Reiner,
ein Tippfehler SIP_OFF anstatt SIPF_OFF und DLLImport schlägt er mir folgendes vor:
Private Const SIP_OFF As Integer = &H0
Private Const SIP_ON As Integer = &H1
<Runtime.InteropServices.DllImport("coredll.dll")> _
Private Shared Sub SipShowIM(ByVal dwFlag As Integer)
End Sub
Private Shared Sub SipSetInfo(ByVal dwFlags As Integer)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SipShowIM(SIP_ON)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
SipShowIM(SIP_OFF)
End Sub
jetzt kommt der Hammer, es funktioniert, die Tastatur wird ein.-bezw. ausgeblendet. Erstmal sehr Gut!!!
Meine Frage (Missverständnis ?) war jedoch wie das Symbol der Tastatur ein.-bezw. ausblenden kann, nicht die Tastatur selber.
Gruß Heino

Umgebung: Visual Studio 2500 & Typhoon MyGuide 3500
Zum Anfang der Seite

Notausstieg

URL does not exist or can't load the page
Notausstieg

PDA-Programmierer


39 Beiträge

Erstellt  am: 22.06.2007 :  15:48:58 Uhr  Profil anzeigen  Autor eine Email senden  Besuche Notausstieg's Homepage  Sende Notausstieg eine ICQ Message  Antwort mit Zitat
Wie sehe denn das ganze für Sharpdevelop aus da Sharpdevelop nix von einer Funktion DllImport weis. da kommt bei mir dann immer Fehler.

für alle DAU's => Der Computer ist genau so schlau wie der der davorsitzt
IDE: SharpDevelop, VS2005 Express
Zum Anfang der Seite

ReinerZ

PDA-Spezialist


347 Beiträge

Erstellt  am: 23.06.2007 :  02:16:39 Uhr  Profil anzeigen  Autor eine Email senden  Besuche ReinerZ's Homepage  Antwort mit Zitat
Hallo Heino,
hab doch noch was für dich gefunden:
 
Private Const SHFS_SHOWTASKBAR As Integer = &H0001
Private Const SHFS_HIDETASKBAR As Integer = &H0002
Private Const SHFS_SHOWSIPBUTTON As Integer = &H0004
Private Const SHFS_HIDESIPBUTTON As Integer = &H0008
Private Const SHFS_SHOWSTARTICON As Integer = &H0010
Private Const SHFS_HIDESTARTICON As Integer = &H0020
<DllImport("aygshell.dll")> _
Private Shared Sub SHFullScreen(ByVal hWnd As System.IntPtr _
ByVal dwFlags As System.UInt32)
End Sub
' SIP ausblenden...
Private Sub HideSipButton()
SHFullScreen(Me.Handle, SHFS_HIDESIPBUTTON)
End Sub
' SIP einblenden...
Private Sub ShowSipButton()
SHFullScreen(Me.Handle, SHFS_SHOWSIPBUTTON)
End Sub
 
Wenn das nicht funktioniert, weiss ich's auch nicht mehr...
Ich hoffe, die VB-Syntax ist okay. Hab nämlich wenig bis gar keine Ahnung von VB *g*...
Gruss
Reiner
Zum Anfang der Seite

ReinerZ

PDA-Spezialist


347 Beiträge

Erstellt  am: 23.06.2007 :  02:21:35 Uhr  Profil anzeigen  Autor eine Email senden  Besuche ReinerZ's Homepage  Antwort mit Zitat
Für "Notausstieg":
Wenn dein SharpDevelop keine Attribute unterstützt, musst du eine Instanz des DllImport-Attributes manuell codieren:
 
using System.Runtime.InteropServices;
DllImportAttribute dllImport =
new DllImportAttribute("aygshell.dll");
 
Zum Anfang der Seite

Notausstieg

Notausstieg

PDA-Programmierer


39 Beiträge

Erstellt  am: 23.06.2007 :  14:14:41 Uhr  Profil anzeigen  Autor eine Email senden  Besuche Notausstieg's Homepage  Sende Notausstieg eine ICQ Message  Antwort mit Zitat
müsste dan also so aussehen:
DllImportAttribute dllImport =
new DllImportAttribute("coredll.dll";
für jede <DllImport("coredll.dll")>-Anweisung. Oder anders?

für alle DAU's => Der Computer ist genau so schlau wie der der davorsitzt
IDE: SharpDevelop, VS2005 Express
Zum Anfang der Seite

ReinerZ

PDA-Spezialist


347 Beiträge

Erstellt  am: 23.06.2007 :  17:15:56 Uhr  Profil anzeigen  Autor eine Email senden  Besuche ReinerZ's Homepage  Antwort mit Zitat
Ja, stimmt.
Zum Anfang der Seite

Notausstieg

Notausstieg

PDA-Programmierer


39 Beiträge

Erstellt  am: 24.06.2007 :  11:55:46 Uhr  Profil anzeigen  Autor eine Email senden  Besuche Notausstieg's Homepage  Sende Notausstieg eine ICQ Message  Antwort mit Zitat
ICh danke dir. werd es am Montag mal austesten

für alle DAU's => Der Computer ist genau so schlau wie der der davorsitzt
IDE: SharpDevelop, VS2005 Express
Zum Anfang der Seite

Notausstieg

Notausstieg

PDA-Programmierer


39 Beiträge

Erstellt  am: 25.06.2007 :  08:19:10 Uhr  Profil anzeigen  Autor eine Email senden  Besuche Notausstieg's Homepage  Sende Notausstieg eine ICQ Message  Antwort mit Zitat
Hmm, merke gerade, dass das was du an Code oben geschrieben hast ist in C# und in VB.NET meckert der wegen des using-Befehls rum. Gibts den in VB.NET überhaupt und wo muss der hin?

für alle DAU's => Der Computer ist genau so schlau wie der der davorsitzt
IDE: SharpDevelop, VS2005 Express
Zum Anfang der Seite

ReinerZ

PDA-Spezialist


347 Beiträge

Erstellt  am: 25.06.2007 :  09:30:22 Uhr  Profil anzeigen  Autor eine Email senden  Besuche ReinerZ's Homepage  Antwort mit Zitat
Ja, in VB.NET heisst die Anweisung "Imports" und muss am Anfang der Quelldatei stehen.
Gruss
Reiner
Zum Anfang der Seite
Seite: von 3 Vorheriges Thema Thema Nächstes Thema  
Nächste Seite
Springe nach:
 
  Bookmark & Share  
 
 
 
  Tags  
   
 

 



pda-dev.de

Quicklinks: Foren-Übersicht | Developer-News | Suche | Impressum

© just-works! Software

Zum Anfang der Seite

Snitz Forums 2000